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

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

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

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

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