王變琴,孫雪冬,陳薇薇,劉 陂
(1.中山大學(xué) 公共實驗教學(xué)中心,廣東 廣州 510006;2.中山大學(xué) 圖書館,廣東 廣州 510275)
人工智能技術(shù)已經(jīng)成為國家重要發(fā)展戰(zhàn)略[1]。機器學(xué)習(xí)作為人工智能領(lǐng)域的一個重要分支,成為當前數(shù)據(jù)智能時代的熱點領(lǐng)域之一。機器學(xué)習(xí)是通過計算機模擬或?qū)崿F(xiàn)人類的學(xué)習(xí)行為,以獲取新的知識或技能,并不斷改善自身的性能,它是計算機具有智能的根本途徑。通俗來講,機器學(xué)習(xí)通過建立計算模型,從已有的數(shù)據(jù)實例中發(fā)現(xiàn)內(nèi)在規(guī)律,并對未知的數(shù)據(jù)實例進行判斷。當今大數(shù)據(jù)時代背景下,機器學(xué)習(xí)技術(shù)發(fā)展迅速,應(yīng)用場景不斷擴寬,日漸滲透到生產(chǎn)和生活服務(wù)的各個方面。高校需要與時俱進、順應(yīng)時代,加強培養(yǎng)更多具有機器學(xué)習(xí)理論與應(yīng)用實踐能力的人才。目前高校的機器學(xué)習(xí)課程多數(shù)是面向高年級本科生或研究生的必修課或?qū)I(yè)選修課[2-8]。機器學(xué)習(xí)通識教育亟待探索機器學(xué)習(xí)通識課程建設(shè)和教學(xué)模式。
從實踐入手是最有效的教學(xué)手段,如何選擇機器學(xué)習(xí)應(yīng)用實踐工具進行操作,直接影響課程的教學(xué)效果。教育部已經(jīng)明確將Python 語言列入我國高中教學(xué)內(nèi)容[9]。Python 語法簡單靈活、易學(xué)易用,對非計算機專業(yè)的人員極為友好,目前國內(nèi)外眾多高校將其作為非計算機類編程基礎(chǔ)課的首選語言,也是當前人工智能、機器學(xué)習(xí)的通用語言實踐工具。Python 像其他腳本語言一樣,代碼精簡、易讀,具備面向?qū)ο笳Z言的各種功能,開源和跨平臺的特性為它帶來眾多的貢獻者和使用者,使其有強大的內(nèi)置庫和第三方庫,并維持良好的生態(tài)環(huán)境。
Python 的綜合實踐平臺Anaconda 集成了數(shù)據(jù)科學(xué)和機器學(xué)習(xí)中常用的軟件庫,包含Jupyter Notebook、Numpy、Scipy、Matplotlib、Scikit-Learn 等,其中Jupyter Notebooks 是基于Web的交互式開發(fā)環(huán)境,便于數(shù)據(jù)分析過程的展示,NumPy 與SciPy 主要用于向量、矩陣和復(fù)雜科學(xué)計算,Matplotlib 是用于數(shù)據(jù)可視化的繪圖庫,Scikit-Learn 內(nèi)置許多經(jīng)典機器學(xué)習(xí)模型,Pandas擅長數(shù)據(jù)分析處理。此外,在實踐教學(xué)中還用到Google 的開源深度學(xué)習(xí)庫——TensorFlow。
基于Python 的機器學(xué)習(xí)應(yīng)用實踐,可以有效降低專業(yè)背景、編程基礎(chǔ)差異對教學(xué)效果的影響。
根據(jù)通識課程,學(xué)生來源廣泛、基礎(chǔ)差異,以及機器學(xué)習(xí)的特點,并結(jié)合技術(shù)類通識課程的培養(yǎng)目標[10-11],細化課程在知識、能力、情感方面的具體教學(xué)要求:①了解機器學(xué)習(xí)的魅力、現(xiàn)狀與發(fā)展動態(tài);②掌握機器學(xué)習(xí)概念、術(shù)語、學(xué)習(xí)方法;③掌握機器學(xué)習(xí)建模、模型選擇與評估的方法論;④掌握經(jīng)典有監(jiān)督機器學(xué)習(xí)算法的原理與應(yīng)用實踐;⑤掌握經(jīng)典無監(jiān)督機器學(xué)習(xí)算法的原理與應(yīng)用實踐;⑥掌握深度學(xué)習(xí)經(jīng)典模型——卷積神經(jīng)網(wǎng)絡(luò)(CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的原理與應(yīng)用實踐;⑦掌握Python 編程基礎(chǔ)及其機器學(xué)習(xí)應(yīng)用實踐技能,學(xué)習(xí)Scikit-Learn 和TensorFlow 解決實際問題的方法論,激勵學(xué)生進行深層探究,并結(jié)合自己專業(yè)領(lǐng)域創(chuàng)造、拓展新的應(yīng)用方法;⑧培養(yǎng)興趣,開闊視野,擴展知識領(lǐng)域,激發(fā)跨領(lǐng)域思考,培養(yǎng)學(xué)生計算思維與數(shù)據(jù)分析思維,提高綜合能力素養(yǎng)。
如何建立一個科學(xué)、合理的教學(xué)內(nèi)容體系,對于教學(xué)效果至關(guān)重要。機器學(xué)習(xí)通識課同樣要求具有一定的數(shù)學(xué)基礎(chǔ)和計算機基礎(chǔ),尤其是編程基礎(chǔ)。對于數(shù)學(xué)基礎(chǔ)知識點的缺失,通過發(fā)布課前閱讀資料預(yù)習(xí)和課堂臨時補充可以基本掃除學(xué)習(xí)障礙,而對于學(xué)生普遍薄弱的編程基礎(chǔ),則需要增設(shè)專門課時進行學(xué)習(xí)、訓(xùn)練。內(nèi)容設(shè)計與通識課程的培養(yǎng)目標相結(jié)合,使機器學(xué)習(xí)的專業(yè)知識普適化,專業(yè)技能通用化,按照照顧基礎(chǔ)、保留經(jīng)典、關(guān)注前沿、重在應(yīng)用實踐的原則進行設(shè)置。
開展實踐教學(xué),首先需要熟練掌握課程實踐教學(xué)工具。針對編程能力較弱,實踐教學(xué)困難的現(xiàn)狀,在課程內(nèi)容中增加了約占總課時三分之一的Python 基礎(chǔ)編程知識串講及其科學(xué)計算庫基礎(chǔ)操作訓(xùn)練,為后續(xù)的實踐教學(xué)夯實基礎(chǔ)。我們對廣泛的機器學(xué)習(xí)內(nèi)容進行簡化與整合,舍棄一些偏深、偏難、專業(yè)性強和存在爭議的內(nèi)容,選取簡單易學(xué)而又通用、普適化的內(nèi)容,側(cè)重機器學(xué)習(xí)基本概念,學(xué)習(xí)范式、方法論經(jīng)典算法的原理與應(yīng)用,并適當涵蓋最新技術(shù)——深度學(xué)習(xí),構(gòu)成覆蓋基礎(chǔ)、經(jīng)典算法、前沿技術(shù)的教學(xué)內(nèi)容體系,見圖1。
課程內(nèi)容共計18 講,第1 講為機器學(xué)習(xí)概述(機器學(xué)習(xí)概念、學(xué)習(xí)方法、建模流程);第2 講至第5 講為機器學(xué)習(xí)實踐基礎(chǔ)(實踐環(huán)境配置、Python 語法基礎(chǔ)與其機器學(xué)習(xí)實踐基礎(chǔ)、TensorFlow 編程基礎(chǔ));第6 講至第14 講為機器學(xué)習(xí)經(jīng)典算法(k 近鄰、樸素貝葉斯、線性回歸、邏輯回歸、支持向量機、決策樹、集成方法、kMeans 算法、DBSCAN 算法、Apriori 算法);第15 講為模型評估與選擇的方法論;第16 講至第17 講為前沿技術(shù)(卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò));第18 講為大作業(yè)展示和課程總結(jié)。整個課程內(nèi)容由易入難,循序漸進,自然銜接,盡量做到內(nèi)容系統(tǒng)化,并且有一定的彈性空間,在教學(xué)實踐中,可以因材施教、按需調(diào)整選取。
理論內(nèi)容與應(yīng)用實踐密切結(jié)合。實驗根據(jù)理論知識點設(shè)計,作為理論教學(xué)的深化和補充,輔助于加深、拓展對知識點、算法原理的理解和掌握,并提升學(xué)生的實踐動手能力和應(yīng)用創(chuàng)新能力。實踐環(huán)節(jié)有每講一練的單元實驗和開放式綜合大作業(yè)等,具體見2.2、2.3 節(jié)。

圖1 機器學(xué)習(xí)基礎(chǔ)通識課程內(nèi)容體系
案例演示教學(xué)是直觀解釋算法原理的一種方式,實踐環(huán)節(jié)是培養(yǎng)能力的重要手段,即時在線課程管理、綜合考核方式能夠有效輔助教學(xué)。
課堂理論教學(xué)是學(xué)生獲取知識的直接渠道。機器學(xué)習(xí)內(nèi)容的知識點分散,算法原理理論性強、抽象、不易理解,學(xué)生普遍對此缺乏學(xué)習(xí)興趣和學(xué)習(xí)熱情。如何調(diào)動學(xué)生的學(xué)習(xí)積極性和激發(fā)學(xué)習(xí)興趣,如何把枯燥無味的算法理論原理講解得深入淺出、生動有趣、易于理解,排除畏難情緒是機器學(xué)習(xí)理論教學(xué)中最具挑戰(zhàn)性的問題。
案例演示教學(xué)通過實例演示使抽象理論變得直觀易懂,使教學(xué)過程更加生動活潑,能夠啟發(fā)、引導(dǎo)學(xué)生積極思考。從緒論課——有趣的機器學(xué)習(xí)應(yīng)用實例開始,例如,手寫體數(shù)字識別,利用訓(xùn)練好的模型對即時手寫數(shù)字進行識別分類,給出識別結(jié)果,讓學(xué)生初識機器學(xué)習(xí)的基本概念、術(shù)語、學(xué)習(xí)方法、建模流程、算法的應(yīng)用實踐等,并通過大量機器學(xué)習(xí)在圖像處理、自然語言處理、語音處理等領(lǐng)域的應(yīng)用,使學(xué)生能夠直觀感受到機器學(xué)習(xí)的應(yīng)用價值和無限的市場前景,從而對課程產(chǎn)生濃厚的興趣和期待。案例演示教學(xué)貫穿整個教學(xué)過程,在機器學(xué)習(xí)算法部分,例如SVM 算法,直接講解原理太過抽象,存在大量數(shù)學(xué)公式推導(dǎo),從有趣的應(yīng)用案例引入,提出要解決的問題。利用SVM 算法對手寫體數(shù)字識別,然后通過Jupyter Notebook 演示解決問題的過程,并盡可能對結(jié)果可視化,在學(xué)生對算法應(yīng)用獲得直觀感性認識的基礎(chǔ)上,再從案例中抽象、歸納算法的思想原理,涉及的公式等,并進一步分析算法性能、拓展空間及應(yīng)用場景,形成“實例引入—算法應(yīng)用實現(xiàn)演示—理論原理分析”的教學(xué)模式。通過案例從感性認識入手,講授、演示、觀察、同步操作、解釋,達到化難為簡、寓教于樂的效果,并直接打通從理論到實踐應(yīng)用的鴻溝,增加內(nèi)容生動性和趣味性,激發(fā)學(xué)生的探究興趣和學(xué)習(xí)積極性。
配合教學(xué)知識點,基于Jupyter Notebook開發(fā)了豐富的課堂教學(xué)演示案例,用于交互式執(zhí)行、演示。傳統(tǒng)經(jīng)典算法通過機器學(xué)習(xí)框架Scikit-Learn 的實現(xiàn),常用深度學(xué)習(xí)模型通過深度學(xué)習(xí)框架TensorFlow 的實現(xiàn)。課堂演示案例利用現(xiàn)成框架建模,簡單易實現(xiàn),代碼簡潔,效果明顯,具即現(xiàn)功能,特別適合初學(xué)者的認知學(xué)習(xí)過程。
實踐教學(xué)要著眼于提高學(xué)生的應(yīng)用實踐能力,實踐教學(xué)的重要性已成為許多課程的共識[10]。按照教學(xué)目標對實踐能力的要求,并配合理論知識點,精心設(shè)計每個單元實驗,以實踐性作業(yè)形式發(fā)布,要求學(xué)生在課外完成(每周課外至少2~3小時)。實驗內(nèi)容包括以下幾方面。
(1)實驗環(huán)境配置,包括安裝Anaconda 和TensorFlow 以及開發(fā)環(huán)境Jupyter Notebook 的基本操作。
(2)Python 機器學(xué)習(xí)基礎(chǔ),包括基本編程訓(xùn)練和科學(xué)計算庫Numpy、matplotlib、Pandas 的應(yīng)用,機器學(xué)習(xí)庫Scikit-Learn 的應(yīng)用。
(3)綜合運用TensorFlow 各種組件,包括Tensor 對象、Graph 對象、Op、Variable 對象、占位符、Session 對象以及作用域,基于虛擬草圖創(chuàng)建TensorFlow 數(shù)據(jù)流圖,如何利用TensorBoard做可視化的數(shù)據(jù)匯總。
(4)經(jīng)典模型應(yīng)用實踐,包括kNN、Na?ve Bayes、Logistic Regression、SVM、Decision Tree、AdaBoot、GBDT、Random Forest、kMeans、Apriori、CNN、LSTM 算法模型。每個算法都設(shè)計有獨立的單元實驗。
實驗設(shè)置具有如下特色。
(1)大量實驗項目。每個單元都設(shè)置有實驗項,分為必做和選做,通過完成必做實驗的基本任務(wù),使學(xué)生獲得機器學(xué)習(xí)應(yīng)用實踐的基本技能。在必做完成的基礎(chǔ)上,學(xué)生可以根據(jù)自己的興趣完成選做實驗。
(2)拓展實驗操作。每個實驗的難度由易到難,層層深入拓展。每個實驗的基本任務(wù)之后都有設(shè)有一定難度和靈活性的實驗作業(yè)習(xí)題,用于拓寬、拓深實驗內(nèi)容,學(xué)生可根據(jù)自身專業(yè)背景、知識層次以及興趣選做,目的在于個性化培養(yǎng),挖掘?qū)W生個體的潛能。
(3)配套實驗指導(dǎo)。每個實驗的基本任務(wù)部分都編寫有詳細的實驗過程指導(dǎo)和提供部分代碼,便于學(xué)生操作驗證、模仿、快速得到結(jié)果,從而獲得成就感,而產(chǎn)生繼續(xù)探究的興趣和欲望。實驗指導(dǎo)內(nèi)容包括實驗?zāi)康摹嶒灪喗椤嶒灢襟E(數(shù)據(jù)描述、準備數(shù)據(jù)、分析數(shù)據(jù)、建模、測試模型、模型應(yīng)用實踐)和實驗操作習(xí)題等內(nèi)容。
綜合性應(yīng)用實踐能力是課程的高層培養(yǎng)目標。大作業(yè)屬于機器學(xué)習(xí)綜合應(yīng)用實踐環(huán)節(jié)。課程中期,在完成基礎(chǔ)實踐訓(xùn)練、經(jīng)典算法應(yīng)用實踐之后,會發(fā)布大作業(yè)具體要求:學(xué)生自由組隊(2~3 人),根據(jù)自己的專業(yè)和興趣自選題目(圖像數(shù)據(jù)、文本數(shù)據(jù),序列數(shù)據(jù)等),通過查閱相關(guān)資料,確定任務(wù)、設(shè)定目標,利用課程涉及的實踐工具完成一個包括數(shù)據(jù)準備、建模、模型評估、模型應(yīng)用的機器學(xué)習(xí)項目,期末前提交項目報告(包含代碼),并擇優(yōu)進行課堂展示。報告內(nèi)容包括選題背景、開發(fā)環(huán)境、數(shù)據(jù)源及數(shù)據(jù)處理、模型設(shè)計、模型訓(xùn)練、模型評測、結(jié)果分析、結(jié)論、創(chuàng)新點、參考文獻等。在展示環(huán)節(jié),學(xué)生不僅從形式各樣的選題中獲得機器學(xué)習(xí)應(yīng)用的樂趣,還能了解其他同學(xué)奇思妙想的解決問題思路方法。
大作業(yè)的目的在于培養(yǎng)、考查學(xué)生的協(xié)作交流、知識互補、激發(fā)思辨、知識的學(xué)以致用、查閱資料和閱讀文獻、尋找問題、解決問題、機器學(xué)習(xí)與實踐問題對接的綜合創(chuàng)新應(yīng)用能力,也為有潛質(zhì)的學(xué)生盡情展示自己所能提供機會。
利用即時通訊工具管理課程是一種與時俱進的有效途徑,創(chuàng)建課程QQ 群輔助教學(xué)。教師通過QQ 群分發(fā)教案、實驗、參考資料等資源,發(fā)布重要通知、作業(yè)(通過FTP 服務(wù)器接受作業(yè)),向?qū)W生推薦網(wǎng)絡(luò)視頻教學(xué)、技術(shù)專題、補充閱讀、電子書、論文、數(shù)據(jù)集、開源工具箱、學(xué)術(shù)論壇等共享資源,引導(dǎo)學(xué)生有效地使用這些資源,豐富和充實教學(xué)內(nèi)容,并能及時查收學(xué)生的提問、反饋信息等。學(xué)生通過QQ 群可以進行自主學(xué)習(xí)、在線提問,并及時獲得老師和同學(xué)的答疑解惑。學(xué)生不會因為遇到問題不能及時解決而產(chǎn)生挫敗感,失去繼續(xù)學(xué)習(xí)的信心而導(dǎo)致學(xué)習(xí)中斷。學(xué)生可以自主參與討論,分享經(jīng)驗知識,在其完成課外實驗的過程中起到重要的作用。學(xué)生在QQ 群中的表現(xiàn)也融入考核,目的在于激發(fā)學(xué)生主動提問、參加討論、發(fā)現(xiàn)問題,形成了良好的師生互動、學(xué)生互學(xué)氛圍。
由于學(xué)生專業(yè)背景、課程基礎(chǔ)差異,對課程的預(yù)期和對知識理解、掌握不盡相同。單一的閉卷考試不能真實地反映學(xué)生的學(xué)習(xí)效果。課程考核方式注重實踐應(yīng)用能力的評價與對學(xué)習(xí)過程的評價相結(jié)合,將考核滲透到整個教學(xué)過程。采用綜合考查,成績按百分制計算,綜合評定成績的方法,見表1。

表1 綜合評定考核項與權(quán)重 %
根據(jù)平常布置的必做單元實驗作業(yè)的提交情況和完成質(zhì)量(代碼文件和完成實驗報告)給出單元實驗成績,選做實驗作為參考酌情加分,通過單元實驗考核,使學(xué)生意識到實驗環(huán)節(jié)的重要性,從而積極認真地對待每次實驗。開放式綜合大作業(yè)成績按照提交的項目報告(含代碼文件)是否完整(包括實驗?zāi)康摹嶒炘怼嶒瀮?nèi)容、實驗步驟和實驗中遇到的問題及解決思路等內(nèi)容、參考文獻等),是否能夠融會貫通、學(xué)以致用,是否有創(chuàng)新、有亮點等給予評定。課程表現(xiàn)包括上課主動提問、參加課程討論以及在QQ群中的在線活躍度、分享知識情況等;課程報告要求對課程內(nèi)容知識點進行梳理歸納、體系化,對教學(xué)中存在的問題進行反饋、建議等。這些在一定程度上能夠反映學(xué)生的學(xué)習(xí)態(tài)度、學(xué)習(xí)積極性以及知識掌握情況。
中山大學(xué)從2017 年春季開始,面向本科生開設(shè)機器學(xué)習(xí)基礎(chǔ)通識課程,總學(xué)時數(shù)為36,2學(xué)分,屬校級科技類核心通識課,從課程目標定位、內(nèi)容設(shè)置、教學(xué)方法、課程管理、考核方式等方面進行系列探索和嘗試,摸索機器學(xué)習(xí)通識課程建設(shè)與教學(xué)模式。課程教學(xué)更加關(guān)注機器學(xué)習(xí)算法的應(yīng)用實踐,加強理論與應(yīng)用實踐的緊密結(jié)合。經(jīng)過多輪教學(xué)實踐,課程不斷完善,從課堂反饋、課程報告以及學(xué)校征集的評課結(jié)果表明,大部分學(xué)生受益匪淺,基本實現(xiàn)了預(yù)期培養(yǎng)目標,教學(xué)效果良好,課程廣受學(xué)生歡迎。該課程有相對完整的配套教學(xué)資源,包括通俗易懂的課件、豐富的教學(xué)演示案例、翔實的實驗過程指導(dǎo)以及用于隨堂測試和課后復(fù)習(xí)、涵蓋知識點、重點、難點的習(xí)題。這些教學(xué)資源在深度、廣度上皆可伸縮,實際教學(xué)中可以針對性的對其內(nèi)容進行調(diào)整、優(yōu)化,并進一步豐富教學(xué)方法和手段,提高教學(xué)效果。教學(xué)中仍存在許多問題,如課堂氣氛不夠活躍,今后考慮加入翻轉(zhuǎn)課堂等元素,讓學(xué)生多一些參與,營造更加活躍的課堂氣氛。