曹松曉,宋 濤
(中國計量大學(xué) 計量測試工程學(xué)院,浙江 杭州 310018)
機器學(xué)習(xí)是近些年研究和實際應(yīng)用中的熱門[1],在當(dāng)前“智慧計量”的大背景下,在計量與測控教學(xué)中采用機器學(xué)習(xí)是未來的一大發(fā)展趨勢,而Python是目前人工智能、機器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域應(yīng)用最為廣泛的一種編程語言[2],容易入門且功能強大,因此,筆者面向中國計量大學(xué)計量測試工程學(xué)院的研究生開設(shè)了一門以Python為編程工具,以深入了解機器學(xué)習(xí)各種概念、方法及其算法的Python實現(xiàn)為目的的課程——“Python機器學(xué)習(xí)”。機器學(xué)習(xí)作為一個熱門的研究方向,探索其優(yōu)秀的教學(xué)方法一直是每個教育工作者持續(xù)追尋的目標[3]。
“Python機器學(xué)習(xí)”作為一門具有較強理論性和很強應(yīng)用性的編程類課程,探索一種綜合式課堂教學(xué)模式,使學(xué)生能在有限時間內(nèi)融匯各方面的知識,真正學(xué)有所得,是此類課程教學(xué)中必然會面對和亟須解決的一個問題。針對編程類課程教學(xué),已經(jīng)有不少學(xué)者提出了各種行之有效的方法,如翻轉(zhuǎn)課堂模式[4-5]、線上線下混合模式[6]、解決問題為導(dǎo)向模式[7]和項目式教學(xué)[8]等,筆者試圖取各家所長,探索一種綜合式的適合本校研究生的課堂教學(xué)模式。
“Python機器學(xué)習(xí)”課程是一門新設(shè)立的課程,在之前的課程體系中,沒有一門將Python編程與機器學(xué)習(xí)相結(jié)合的綜合性課程,而這兩者之間的關(guān)系在實際科研和應(yīng)用中密不可分,因此有必要在課程建設(shè)期間,不斷優(yōu)化和更新現(xiàn)有的教學(xué)內(nèi)容,實現(xiàn)二者的有機結(jié)合,同時緊跟前沿學(xué)術(shù)和技術(shù)變化,使學(xué)生學(xué)習(xí)到更新、更實用的內(nèi)容。
1.根據(jù)學(xué)生基礎(chǔ),動態(tài)調(diào)整編程教學(xué)比重。由于本校的研究生來自不同高校和專業(yè),編程基礎(chǔ)參差不齊,且每年的情況都會有所變化,同時Python作為當(dāng)前最熱門的編程語言之一,越來越多的學(xué)生在本科階段就已自學(xué)過相關(guān)內(nèi)容,因此有必要針對每學(xué)年學(xué)生的編程基礎(chǔ),動態(tài)調(diào)整Python編程相關(guān)的教學(xué)比重。基于此思想,在每學(xué)年的課程開始前,筆者會在課程教學(xué)群中發(fā)起關(guān)于編程基礎(chǔ)的投票調(diào)查,從而可以較為準確地了解整個班級中有多少人已經(jīng)學(xué)習(xí)過Python,有多少人完全是新手,以適當(dāng)?shù)卣{(diào)整編程相關(guān)教學(xué)內(nèi)容的課時和比重,如圖1所示。

圖1 2020—2021學(xué)年教學(xué)班的Python編程調(diào)查結(jié)果
通過這種有針對性的問卷調(diào)查形式,筆者較好地掌握了學(xué)生的基礎(chǔ),清楚地了解到在當(dāng)前教學(xué)班中,有85%的學(xué)生沒有Python的編程基礎(chǔ),因此筆者在本次的教學(xué)中適當(dāng)?shù)丶哟罅藢ython基礎(chǔ)知識的講解,以照顧絕大部分學(xué)生的學(xué)習(xí)情況。
2.跟蹤學(xué)術(shù)動態(tài),添加最前沿的成果和方法。機器學(xué)習(xí)是當(dāng)前學(xué)術(shù)研究和實際應(yīng)用中的熱點,特別是在學(xué)術(shù)領(lǐng)域中,機器學(xué)習(xí)的方法和成果日新月異。因此,在教學(xué)過程中,教師要緊跟學(xué)術(shù)前沿,及時將最新的有代表性的成果融入日常教學(xué)中,使學(xué)生對課程有更強的代入感和參與感。例如,在本學(xué)年的教學(xué)中,當(dāng)課程進行到神經(jīng)網(wǎng)絡(luò)基礎(chǔ)的多層感知機模型(MLP)時,由于其方法已經(jīng)有幾十年的歷史,在部分學(xué)生看來可能已經(jīng)過時了,然而在相同的時間段,有學(xué)者在Google上發(fā)表了一篇頗具影響力的文章——“MLP-Mixer: An all-MLP Architecture for Vision”,這篇論文讓這個原本看似古老的方法重新煥發(fā)了生機。筆者在教學(xué)過程中,從宏觀角度系統(tǒng)介紹了這個學(xué)術(shù)成果,從學(xué)生聽課的反應(yīng)來看,大家都表現(xiàn)出了極大的興趣,同時對MLP方法有了更為直觀和深刻的理解。
不同于以往編程類課程一部分課時集中課堂學(xué)習(xí),一部分課時上機編程的教學(xué)方法,筆者在“Python機器學(xué)習(xí)”課程的教學(xué)過程中,探索了“當(dāng)堂編程、邊學(xué)邊練”的進行模式,即在課堂中,鼓勵學(xué)生攜帶筆記本電腦來聽課,在講課過程中布置較小的編程作業(yè),讓學(xué)生當(dāng)場編寫提交,然后現(xiàn)場點評,讓大家一起來討論和分析別人所寫代碼的優(yōu)點和缺點。
如圖2是在上課過程中給學(xué)生布置當(dāng)堂編程作業(yè)時,學(xué)生在課程教學(xué)釘釘群里提交的代碼。通過與全班學(xué)生一起分析代碼的優(yōu)點和缺點,學(xué)生可以在課堂上快速掌握特定的知識點,避免出現(xiàn)上完課后就忘記,再次上機時得再學(xué)一遍的尷尬。

圖2 當(dāng)堂編程時學(xué)生所提交的代碼截圖
自開設(shè)“Python機器學(xué)習(xí)”課程以來,課程組根據(jù)其教學(xué)特點,確定了以課堂教學(xué)為主,結(jié)合實踐大作業(yè)、論文答辯的教學(xué)模式。在整個課程教學(xué)過程中,教師會根據(jù)當(dāng)前機器學(xué)習(xí)研究的熱點,布置1~2次有一定難度的實踐大作業(yè),讓學(xué)生以更貼近實際的方式來分析和解決問題。在課堂教學(xué)過程中,結(jié)合翻轉(zhuǎn)課堂的形式,讓學(xué)生當(dāng)堂演示自己編寫的程序,并通過讓學(xué)生講解自己使用Python機器學(xué)習(xí)方法解決實際問題時所用的方法、遇到的問題及思考內(nèi)容,進一步提高學(xué)生對機器學(xué)習(xí)的理解和認識。
受新冠病毒感染疫情影響,“Python機器學(xué)習(xí)”課程第一次上課是網(wǎng)上授課,所有的教學(xué)內(nèi)容都是通過PPT課件的方式來講解的,這種講解方式對于編程相關(guān)的內(nèi)容是非常合適的;但是對于機器學(xué)習(xí)理論基礎(chǔ)相關(guān)的內(nèi)容來說,則不太合適,PPT課件的教學(xué)方式會使所有的公式和理論推導(dǎo)被一帶而過,學(xué)生沒有充足的時間消化和理解其中的理論知識,特別是涉及數(shù)學(xué)的相關(guān)知識,最終導(dǎo)致很多學(xué)生對機器學(xué)習(xí)的一些經(jīng)典方法仍是一知半解。針對這種情況,在近兩個學(xué)年的教學(xué)中,進行了較大幅度的改變,在涉及機器學(xué)習(xí)理論知識時,如《線性模型》《支持向量機》《神經(jīng)網(wǎng)絡(luò)》等章節(jié),大膽地嘗試了純板書教學(xué)的方式,在10 學(xué)時左右的課程中,不用任何PPT 課件,將每個方法的數(shù)學(xué)原理,從零開始一步一步用板書推導(dǎo),將每個知識點都盡量講深講透。通過這種教學(xué)方式,學(xué)生對機器學(xué)習(xí)理論相關(guān)知識有了更深層次的理解,同時,教師對自己所教授的內(nèi)容有了更深刻的理解。手寫教案如圖3所示。

圖3 手寫教案
在課程教學(xué)和建設(shè)過程中,筆者在學(xué)校最新的超星平臺上,搭建和完善了“Python機器學(xué)習(xí)”課程的教學(xué)網(wǎng)絡(luò)平臺。
在新搭建的網(wǎng)絡(luò)教學(xué)平臺中,涵蓋了課程中的所有內(nèi)容,包括課程介紹、教學(xué)方法、教學(xué)條件、課件PPT、手寫教案、課程教學(xué)視頻等。在網(wǎng)絡(luò)教學(xué)平臺的課程章節(jié)內(nèi)容建設(shè)過程中,充分利用平臺自帶的諸多功能,在每個課時中,首先用文字描述本節(jié)課的講授重點和要點,同時每個課時都要有一個講課視頻,視頻內(nèi)容與上課的內(nèi)容保持一致,使想學(xué)習(xí)的學(xué)生可以隨時復(fù)習(xí)之前所學(xué)的內(nèi)容。同時在網(wǎng)站風(fēng)格上參照慕課的風(fēng)格,簡潔明了,內(nèi)容豐富齊全。這樣一來,學(xué)生如果在課堂中錯過了某些關(guān)鍵環(huán)節(jié),可以通過課后線上補習(xí)的方式來進行補漏和鞏固,給學(xué)生提供了更多的學(xué)習(xí)資源和機會。“Python機器學(xué)習(xí)”網(wǎng)絡(luò)教學(xué)平臺界面如圖4所示。

圖4 “Python機器學(xué)習(xí)”網(wǎng)絡(luò)教學(xué)平臺界面
在課程教學(xué)過程中,將采用理論教學(xué)與實踐教學(xué)交叉進行的教學(xué)方式,以理解和掌握經(jīng)典機器學(xué)習(xí)方法和深度學(xué)習(xí)方法為目標,以Pycharm和Jupyter Notebook為Python編程語言的開發(fā)載體,在傳授學(xué)生機器學(xué)習(xí)理論知識的基礎(chǔ)上,著重培養(yǎng)學(xué)生的系統(tǒng)設(shè)計能力和系統(tǒng)開發(fā)能力,通過選取課題組在日常科研中遇到的項目和課題,如基于機器學(xué)習(xí)的人體行為識別、缺陷檢測、目標跟蹤等,作為針對性的實踐項目,讓學(xué)生通過解決實際問題的方式,從根本上提高學(xué)生的實際動手能力,為今后的科研和工程項目開發(fā)掌握必要的技能。
自課程開設(shè)三年以來,共300余名學(xué)生參與了本課程,除第一年因新冠病毒感染疫情原因全程線上教學(xué),較難面對面了解學(xué)生的學(xué)習(xí)情況之外,在后面兩個學(xué)年的教學(xué)中,學(xué)生對這種綜合式的教學(xué)模式較為認可,課程參與度較高,特別是“當(dāng)堂編程,邊學(xué)邊練”的模式,與他們之前的課堂教學(xué)模式有較大不同,因此課堂氛圍活躍,學(xué)生通過當(dāng)場討論自己和其他學(xué)生提交的代碼,分析各自的優(yōu)點和缺點,較大幅度地提高了編程的思維模式和方法。
當(dāng)前的教學(xué)模式也有值得反思和改進之處,如目前有10課時是純板書教學(xué),包含了大量的數(shù)學(xué)公式推導(dǎo)和理論證明,由于部分學(xué)生的數(shù)學(xué)功底稍弱,容易跟不上,從而降低了繼續(xù)聽講的興趣。因此,在后續(xù)教學(xué)過程中,一方面需要將板書與PPT適當(dāng)結(jié)合,盡量將這一部分理論內(nèi)容講得生動有趣,以吸引學(xué)生的課堂注意力;另一方面,也需要適當(dāng)縮短理論公式推導(dǎo)的教學(xué)時間,提升實際動手編程的比重,使整體教學(xué)方案更加合理化。