楊 釗,王 力,唐 冬
(廣州大學(xué)電子與通信工程學(xué)院 廣東 廣州 510006)
模式識別是用計算的方法,根據(jù)樣本的特征將樣本劃分到一定的類別中去[1],即通過數(shù)學(xué)方法讓計算機來實現(xiàn)類似人的模式識別能力。模式識別廣泛應(yīng)用于圖像識別、語音識別、生物特征識別、信息檢索、數(shù)據(jù)挖掘、信號處理等領(lǐng)域,因此成為電子信息工程、通信工程、人工智能、自動化、計算機工程等本科專業(yè)重要的課程。該課程能夠為這些專業(yè)的學(xué)生將來從事智能信息處理方面的工作打下良好的基礎(chǔ)。
該課程具有較強的理論性和實踐性[2],一方面要求學(xué)生具有扎實的數(shù)學(xué)理論基礎(chǔ),以掌握各種算法原理及推導(dǎo)過程;另一方面要求學(xué)生具有動手實踐能力以解決實際的模式識別問題。此外,模式識別的內(nèi)容也是不斷更新的。因此,傳統(tǒng)以單一教材結(jié)合PPT講授為主的授課方式在模式識別課程教學(xué)上表現(xiàn)出明顯的不足。本文結(jié)合筆者自身多年的模式識別課程教學(xué)經(jīng)驗,嘗試探索教學(xué)改革新模式。主要思路包括:在課堂教學(xué)中融入案例和項目應(yīng)用,以提高學(xué)生的學(xué)習(xí)興趣;建立與課程配套的各種教學(xué)資源,以方便學(xué)生深入了解課程內(nèi)容以及自主學(xué)習(xí);采用多樣的課程考核方式,從不同層面考查學(xué)生的學(xué)習(xí)情況和鍛煉學(xué)生的動手能力和創(chuàng)新能力。通過理論教學(xué)和實踐教學(xué)相結(jié)合的方式,最終培養(yǎng)學(xué)生綜合應(yīng)用知識并解決實際問題的能力。
模式識別課程具有較強的理論性和實踐性。理論性表現(xiàn)在很多算法涉及高等數(shù)學(xué)、線性代數(shù)和概率論等數(shù)學(xué)知識[3];此外有些算法本身具有一定的抽象性[4],學(xué)生需要較強的邏輯推理能力才能理解其原理。實踐性主要是指模式識別具有廣泛的應(yīng)用,即模式識別方法應(yīng)該和具體實際應(yīng)用問題相關(guān)聯(lián)。學(xué)生需要通過編程算法進行工程實現(xiàn)來進一步理解其原理細(xì)節(jié),同時了解方法的優(yōu)缺點。另外,模式識別具有發(fā)展性。隨著計算機技術(shù)的發(fā)展、行業(yè)應(yīng)用需要的增加以及相關(guān)領(lǐng)域的研究不斷深入,模式識別具體涉及的內(nèi)容也在不斷更新。其中,最為典型的就是深度學(xué)習(xí)技術(shù)的繁榮發(fā)展,為模式識別提供了新的思路和方法[5]。
傳統(tǒng)以單一教材結(jié)合PPT 講授為主的教學(xué)方法難以滿足課程目標(biāo)要求,導(dǎo)致課堂教學(xué)效果不理想,主要表現(xiàn)在以下幾個方面。
例如主成分分析原理涉及協(xié)方差矩陣計算以及二次型優(yōu)化問題,線性回歸解析解的推導(dǎo)過程涉及向量的求導(dǎo)運算,神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程涉及復(fù)雜的反向梯度求解過程,支持向量機的求解涉及優(yōu)化相關(guān)理論。雖然學(xué)習(xí)模式識別課程的本科生有高等數(shù)學(xué)、線性代數(shù)以及概率論等數(shù)學(xué)基礎(chǔ),但是他們對數(shù)學(xué)知識的運用還是有所欠缺。在筆者早期的模式識別課程教學(xué)過程中,如果直接講算法推導(dǎo)而不講數(shù)學(xué)補充知識的話,有時大部分學(xué)生感到非常吃力且上課積極性不高,影響了整個課程的教學(xué)效果。
對于本科生來說,課程的內(nèi)容決定了模式識別是一門較難的課程。一方面概念比較多并且還需要理解,例如監(jiān)督學(xué)習(xí)、非監(jiān)督學(xué)習(xí)、聚類與分類、過擬合與正則化、協(xié)方差矩陣、核方法等。另外對于一些復(fù)雜的算法推導(dǎo)過程,學(xué)生在聽課過程中很難完全吸收。此外,對于完整的模式識別過程以及實現(xiàn)細(xì)節(jié),通過理論課的講解學(xué)生也很難完全掌握。例如數(shù)據(jù)預(yù)處理方法和特征提取算法的選擇,訓(xùn)練集、驗證集和測試集的劃分與使用,不同算法標(biāo)簽數(shù)據(jù)的設(shè)置方式,模型參數(shù)的選擇與調(diào)優(yōu)等系列問題。
雖然基礎(chǔ)的驗證實驗?zāi)軌蜃寣W(xué)生通過編程的方式理解算法的實現(xiàn)細(xì)節(jié),但對其實踐能力的培養(yǎng)還是有所不足。例如,在講解主成分分析時,對二維橢圓數(shù)據(jù)進行主成分分析,可以得到數(shù)據(jù)變化的主要方向(長軸)和次要方向(短軸)。但如何將主成分分析方法作為降維算法用到整個模式識別的框架中,以及算法效果如何,學(xué)生還是不能很好地運用。對于支持向量機實驗,如果只是簡單地驗證和應(yīng)用實驗不能有效培養(yǎng)學(xué)生解決實際問題的能力,需要進一步讓學(xué)生掌握如何將現(xiàn)有的實際問題轉(zhuǎn)化為支持向量機分類問題,以及如何將預(yù)處理、數(shù)據(jù)降維、參數(shù)選擇等技巧融入支持向量機算法中,以進一步提高模型的準(zhǔn)確性和泛化能力。另外,本科生相對缺乏科研思維及創(chuàng)新意識,對算法的學(xué)習(xí)局限于課堂講解到的內(nèi)容,不知道如何進一步深入算法細(xì)節(jié),不能很好地評估算法的性能以及理解算法的局限性。
針對目前教學(xué)過程中存在的問題,課程組有針對性地提出改革措施,具體思路如圖1 所示。首先對課程知識點進行梳理,規(guī)劃好實驗部分并做好案例與項目設(shè)計;然后根據(jù)課程內(nèi)容建立豐富的課程資源;最后形成多樣化的考核機制。
圖1 模式識別課程改革思路框架圖
教學(xué)內(nèi)容的合理組織安排,可以讓學(xué)生理解不同知識點之間的關(guān)聯(lián),以及在模式識別框架中的作用。對于理論課,首先教師在講解模式識別基本概念時,可以通過基于模板匹配的手寫數(shù)字識別的例子引出模式識別的基本流程,包括數(shù)據(jù)準(zhǔn)備、預(yù)處理、特征提取、分類算法以及算法性能測試等。接下來,介紹基本的特征提取方法和相似度測量內(nèi)容。然后,再從無監(jiān)督學(xué)習(xí)方法過渡到監(jiān)督學(xué)習(xí)算法,包括回歸分析與神經(jīng)網(wǎng)絡(luò),以及模式分類算法。之所以將回歸與神經(jīng)網(wǎng)絡(luò)放在一章進行講解,主要是因為邏輯回歸可以認(rèn)為是一種簡單的神經(jīng)元,同時回歸分析和神經(jīng)網(wǎng)絡(luò)都可以通過梯度下降的方法進行求解,具有很多相似之處。最后講解模式識別的一些具體應(yīng)用和介紹深度學(xué)習(xí)相關(guān)的前沿知識。深度學(xué)習(xí)方面主要是讓學(xué)生了解深度學(xué)習(xí)的基本概念,同時能夠借助現(xiàn)有的深度學(xué)習(xí)平臺讓學(xué)生快速編程入門并解決簡單的分類和回歸問題。理論課合計32 學(xué)時。對于實驗課,選取重要的章節(jié)知識點讓學(xué)生進行實驗,合計16 學(xué)時。具體實驗內(nèi)容包括:模式識別基礎(chǔ)實驗(4 學(xué)時)、聚類分析實驗(2 學(xué)時)、主成分分析實驗(2 學(xué)時)、回歸分析實驗(2 學(xué)時)、神經(jīng)網(wǎng)絡(luò)實驗(2 學(xué)時)和支持向量機實驗(4 學(xué)時)。在實驗課開展過程中,鼓勵學(xué)生采用多種編程語言完成實驗內(nèi)容,例如Matlab、Python 或C++等編程語言。
良好的案例項目設(shè)計可以培養(yǎng)學(xué)生的學(xué)習(xí)興趣,以及加深其對算法實施細(xì)節(jié)的理解[6]。在理論教學(xué)過程中,教師可以將手寫數(shù)字識別案例貫穿整個課程。在講解基于模板匹配的手寫數(shù)字識別時,在課堂上采用Matlab 或Python 語言一行一行地編寫代碼,實現(xiàn)整個手寫數(shù)字識別工程。這樣學(xué)生可以更好地理解模式識別的基本流程,同時學(xué)生可以掌握如何將理論知識轉(zhuǎn)化為代碼應(yīng)用,極大地提高學(xué)生的自信心。
然后對于具體的算法,可以引入對應(yīng)的案例。例如針對K-means 聚類算法可以選取消費行為數(shù)據(jù)做聚類分析;對于主成分分析算法,可以選擇鳶尾花數(shù)據(jù)集(Iris Data Set)做降維分析并可視化顯示降維的效果;對于邏輯回歸算法,可以選擇心臟疾病數(shù)據(jù)集(Heart Disease)做二分類應(yīng)用。最后設(shè)計1~2 個典型的應(yīng)用案例對課程所有的知識點進行串聯(lián)。例如,可以選擇基于主成分分析的人臉識別系統(tǒng)或花朵分類應(yīng)用。此外,案例教學(xué)有利于啟發(fā)和引導(dǎo)學(xué)生參加專業(yè)相關(guān)的一些學(xué)科競賽,如大學(xué)生電子設(shè)計競賽、“挑戰(zhàn)杯”全國大學(xué)生課外學(xué)術(shù)科技作品競賽等競賽活動。
豐富的教學(xué)資源有利于學(xué)生深入理解課程知識點,也可以引導(dǎo)學(xué)生進行自主學(xué)習(xí)。教學(xué)資源包括:參考書目、補充資料、視頻資源、課程代碼、網(wǎng)絡(luò)資源等。
①指定參考書目列表可以拓展課程內(nèi)容的深度和廣度[7]。優(yōu)秀的參考書目包括Richard O. Duda 等人編寫的《模式分類》第2 版[9]、希臘Sergios Theodoridis 等人編寫的《模式識別》第4 版、Christopher M. Bishop 編寫的《Pattern Recognition and Machine Learning》[9]、南京大學(xué)周志華編寫的《機器學(xué)習(xí)》[10]。客觀地講,這些書籍對于本科生來說具有一定的難度。但是作為參考資料,當(dāng)學(xué)生需要深入了解具體某一算法細(xì)節(jié)的時候,這些書籍能夠提供很大的幫助。
②補充必要的教學(xué)輔助文檔資料有助于學(xué)生輕松學(xué)習(xí)知識點內(nèi)容。模式識別算法高度依賴于數(shù)學(xué)知識,因此教師可以根據(jù)理論課內(nèi)容,有針對性地總結(jié)和整理數(shù)學(xué)復(fù)習(xí)文檔資料,引導(dǎo)學(xué)生自主學(xué)習(xí)。例如高等數(shù)學(xué)中級聯(lián)求導(dǎo)、拉格朗日數(shù)乘法,線性代數(shù)中的矩陣基礎(chǔ)、向量范數(shù)和內(nèi)積、矩陣的跡、矩陣的導(dǎo)數(shù)、特征值和特征向量、矩陣分解以及二次型等內(nèi)容,概率論中的隨機變量、期望、協(xié)方差矩陣和貝葉斯公式。此外,還可以補充一些編程基礎(chǔ),包括Matlab 和Python 語言,以實現(xiàn)算法仿真或完成實驗內(nèi)容。具體實施可以參考斯坦福大學(xué)的CS231n 課程,將編程語言基礎(chǔ)核心部分以精簡的文檔形式呈現(xiàn),學(xué)生可以快速入門或復(fù)習(xí)編程語言。
③對課程重點知識建立視頻資源,可以讓學(xué)生在課后反復(fù)理解,增強學(xué)生學(xué)習(xí)的靈活性。例如馬氏距離中協(xié)方差矩陣的理解對于初學(xué)者來說相對復(fù)雜,可以通過視頻的形式詳細(xì)講解計算方法以及其物理意義。對于主成分分析,可以通過視頻講解其原理推導(dǎo)過程和實現(xiàn)步驟。對于反向傳播算法,可以通過視頻重點講解輸出層和隱藏層的梯度求解過程以及梯度更新細(xì)節(jié)。對于深度學(xué)習(xí)方面,可以將編程環(huán)境的搭建與配置過程以及注意細(xì)節(jié)錄制成視頻,讓學(xué)生能夠按視頻操作快速入門。
④對理論課的內(nèi)容配置相應(yīng)的代碼,在講完算法以后,通過講解和運行代碼讓學(xué)生進一步理解算法細(xì)節(jié),以及觀察算法的結(jié)果。代碼方面,除了實現(xiàn)算法的基本內(nèi)容以外,還需要考慮代碼的可展示性。例如,針對隨機梯度下降知識點,編寫的代碼應(yīng)該可以動態(tài)展示梯度下降的過程以及體現(xiàn)學(xué)習(xí)速率的作用。此外,還可以搜集整理一些簡潔清晰的代碼資源,供學(xué)生課后自主學(xué)習(xí)和運行使用。
⑤網(wǎng)絡(luò)資料有利于學(xué)生開闊視野范圍。例如:Pytorch官網(wǎng)提供的深度學(xué)習(xí)基礎(chǔ)教程和代碼,斯坦福大學(xué)的機器學(xué)習(xí)課程CS229,加利福尼亞大學(xué)爾灣分校的機器學(xué)習(xí)和模式識別數(shù)據(jù)集等資源,支持向量機庫LIBSVM,基于Python的機器學(xué)習(xí)庫Scikit-learn 等。
課程閉卷考試在一定程度上可以考查學(xué)生對模式識別理論知識的掌握程度,但不能有效地衡量學(xué)生對知識點的應(yīng)用能力。因此,需要建立多樣化的考核方式,來引導(dǎo)和督促學(xué)生對所學(xué)知識進行運用和深入理解。除了閉卷考試以外,可以將課堂表現(xiàn)、實驗部分和課程大作業(yè)納入課程考核中。課堂表現(xiàn)主要考查學(xué)生的課程參與程度,可以通過課堂提問以及隨堂小測試等方式來實施。實驗考核包括實驗驗收和實驗報告兩部分。每次實驗課當(dāng)場驗收每位同學(xué)的實驗完成情況,并針對性地提出問題,以檢查其獨立完成情況。實驗報告要求學(xué)生在下一次實驗課時提交紙質(zhì)版和電子版,主要檢查實驗的完成情況和報告的撰寫質(zhì)量。課程大作業(yè)分為工程應(yīng)用和科研探索兩種類型。學(xué)生可以根據(jù)自己的情況選擇工程應(yīng)用型還是科研探索型的課程作業(yè)。工程應(yīng)用課程作業(yè)要求學(xué)生實現(xiàn)一個簡單的模式識別系統(tǒng),如車牌識別、光學(xué)字符識別等。這些系統(tǒng)應(yīng)包括數(shù)據(jù)采集、處理、識別和結(jié)果顯示等完整的模式識別步驟。科研探索的課程作業(yè)要求學(xué)生對相關(guān)算法進行復(fù)現(xiàn)、對比、分析和一定的改進,并形成規(guī)范的圖表數(shù)據(jù),最后課程作業(yè)的內(nèi)容以會議論文的形式呈現(xiàn)和提交。這樣學(xué)生通過課程的學(xué)習(xí),可以慢慢培養(yǎng)自己的科研興趣,也為將來需要進一步進入研究生階段學(xué)習(xí)的同學(xué)打下科研基礎(chǔ)。
此外,在上述課程改革措施中,可以融入課程思政元素。案例教學(xué)能夠讓學(xué)生明白學(xué)以致用的道理;通過課程資源方便學(xué)生課后學(xué)習(xí),以培養(yǎng)學(xué)生自主學(xué)習(xí)、終身學(xué)習(xí)的能力??己朔绞街械墓こ虘?yīng)用類型作業(yè)可以督促和引導(dǎo)學(xué)生勇于實踐,科研探索型作業(yè)可以培養(yǎng)其科學(xué)思維和創(chuàng)新精神。
本文探討了面向本科模式識別課程改革的具體措施。①將模式識別案例與課程知識點進行關(guān)聯(lián),提升學(xué)生的學(xué)習(xí)積極性。②通過建立豐富的課程資源引導(dǎo)學(xué)生課后進一步學(xué)習(xí),使學(xué)生能夠深入掌握重難點知識,培養(yǎng)其主動學(xué)習(xí)的習(xí)慣。③課堂表現(xiàn)和實驗部分能夠考查學(xué)生上課的參與度以及對知識的理解運用情況;工程應(yīng)用和科研探索的大作業(yè)考核方式能夠結(jié)合學(xué)生自身的學(xué)習(xí)情況,從不同層面充分鍛煉學(xué)生的實踐能力和創(chuàng)新能力。整個改革思路覆蓋了學(xué)生“興趣→理解”“深入→自主”“應(yīng)用→探索”這一學(xué)習(xí)過程,能夠有效地解決傳統(tǒng)以單一教材結(jié)合PPT 講授為主的教學(xué)方法存在的不足。該課程改革思路也可以推廣到相似的其他課程,如機器視覺、數(shù)字圖像處理、神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)等。