謝聰聰 孟莉
[摘 要] 隨著人工智能算法的不斷普及,基于數(shù)據(jù)驅(qū)動的數(shù)值算法成為一個學(xué)習(xí)的熱門課程。在傳統(tǒng)數(shù)值計算課程的基礎(chǔ)上,從教學(xué)內(nèi)容、教學(xué)模式以及課程評價體系等方面進行深度改進。主要的做法是面向大數(shù)據(jù)分析需求,結(jié)合Python等新興算法語言的優(yōu)勢展開算法應(yīng)用研究,藉此提高學(xué)生的學(xué)習(xí)熱情以及學(xué)習(xí)效果;結(jié)合課堂訓(xùn)練和課后的算法實踐,提高學(xué)生解決應(yīng)用問題的能力,充分體現(xiàn)數(shù)值計算學(xué)以致用的特點。經(jīng)過新一輪的教學(xué)改革和實踐,取得較好的反饋。
[關(guān)鍵詞] 最小二乘擬合;迭代法;梯度下降法
一、引言
數(shù)值計算是一門研究如何用計算機算法高效、準確地求解來源于不同學(xué)科問題數(shù)學(xué)模型的課程。同時,該課程需要密切結(jié)合應(yīng)用中的實際問題背景,因此也具有很強的實踐性。該課程不僅是信息與計算科學(xué)專業(yè)的專業(yè)必修課程,同時也是數(shù)學(xué)與應(yīng)用數(shù)學(xué)專業(yè)、數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)和計算機專業(yè)的重要基礎(chǔ)課程。在大數(shù)據(jù)科學(xué)迅速發(fā)展的背景下,數(shù)值計算方法出現(xiàn)了一些更復(fù)雜的應(yīng)用場景[1]。
首先,原有的數(shù)值計算教學(xué)內(nèi)容主要側(cè)重理論知識的講解,欠缺應(yīng)用實踐的教學(xué)過程。在授課過程中往往對數(shù)學(xué)理論講解、解題技巧傳授的內(nèi)容偏多,而如何培養(yǎng)和提高學(xué)生的分析和解決實際問題能力的環(huán)節(jié)偏弱。因此,在課程的內(nèi)容上需要進行適當?shù)恼{(diào)整,在原有教材內(nèi)容的基礎(chǔ)上增添一些應(yīng)用性較強的內(nèi)容,特別關(guān)注那些在圖像識別、電商數(shù)據(jù)挖掘以及其他人工智能應(yīng)用領(lǐng)域應(yīng)用中所廣泛采用的算法,將專業(yè)發(fā)展前沿的新動向及時補充到教學(xué)內(nèi)容中去,以豐富學(xué)生的視野和提高學(xué)習(xí)的熱情,并增強他們解決實際問題的能力。
其次,在課堂教學(xué)模式上的改革。傳統(tǒng)的授課方式是一種靜態(tài)的、注入式的教學(xué)模式。教學(xué)方法主要是以PPT講解為主,板書為輔的比較單一化的教學(xué)模式。這類模式對數(shù)學(xué)和算法類課程來說,不足之處在于對學(xué)生的吸引力不足。在教學(xué)改革中,課堂上采用了多種形式的教學(xué)方法,比如:通過算法實時生成圖表進行直觀的演示;增加算法實踐環(huán)節(jié),利用事先準備好的基礎(chǔ)算法模塊,通過修改核心部分改善算法性能,這樣可通過結(jié)果的對比增強知識點的直觀印象;引導(dǎo)學(xué)生提出自己的疑問、獨立思考并探究解決方法。此外,也采用問題式的教學(xué)方法,提高學(xué)生上課的興趣和聽課的效率。
二、課程具體的改革方法與策略
1.在課程內(nèi)容設(shè)置上做適當調(diào)整,同時基于原有自編教材[2]的基礎(chǔ),增加了一些實用型算法。首先,針對理論知識部分實施化繁為簡的改進,略去了一些過于晦澀且不常用的推導(dǎo)與證明過程,并在簡化給出結(jié)論后給出了具備更詳細介紹的參考文獻,以方便感興趣的讀者進一步學(xué)習(xí)。其次,注重將理論知識與實踐教學(xué)相結(jié)合,比如:進一步強化了矩陣QR分解和奇異值分解的內(nèi)容,強調(diào)如何利用QR迭代法去求解矩陣特征值問題、如何通過奇異值(SVD)分解去理解數(shù)據(jù)分析中常用的主成分分析(PCA)的本質(zhì)。進一步地,為了說明特征值和特征向量的重要性,上課過程中還增加了計算機視覺處理中的人臉識別問題、圖像特征提取和圖像壓縮等應(yīng)用問題的介紹[3]。此外,在偏微分數(shù)值解的有限差分方法基礎(chǔ)上,增加金融工程領(lǐng)域應(yīng)用廣發(fā)的Black-Scholes期權(quán)定價模型的求解[4],并趁機介紹三維數(shù)據(jù)科學(xué)計算可視化、與實際數(shù)據(jù)進行比較等數(shù)值模擬研究中常用的技術(shù)手段。
2.教學(xué)過程中通過圖像動態(tài)直觀地去演示一些結(jié)果,提高教學(xué)可視化水平,能夠很好地將抽象的數(shù)學(xué)知識理論直觀地呈現(xiàn)在學(xué)生面前,將理論知識與實驗教學(xué)相結(jié)合。比如在講解不動點迭代的收斂性問題時,先根據(jù)具體函數(shù)的幾何圖形,來形象地演示收斂過程,從而給出收斂性分析定理。又比如在講解高次插值帶來的龍格現(xiàn)象這一部分內(nèi)容時,利用圖形來直觀地解釋高次插值出現(xiàn)不穩(wěn)定的原因。在圖1中,實線是原函數(shù),短虛線是6個節(jié)點的5次插值多項式,長虛線是11個節(jié)點的10次插值多項式,從圖形上很容易能夠看出,10次插值多項式在區(qū)間端點處逼近的效果很差,引起強烈的震蕩,而在內(nèi)部節(jié)點0附近逼近效果比5次插值要好。通過圖形來演示數(shù)值結(jié)果,讓學(xué)生一目了然。
3.采用問題式的教學(xué)方法培養(yǎng)學(xué)生的主動參與、獨立思考和自主學(xué)習(xí)的能力。在上面提到的高次插值帶來的龍格現(xiàn)象這一問題中,通過圖像讓學(xué)生了解到在引起不穩(wěn)定的原因是因為在端點附近引起震蕩,從而導(dǎo)致逼近效果差。這時候,可以提出問題,如何解決這個震蕩現(xiàn)象?有學(xué)生提出引入分段低次插值,也有學(xué)生提出改變節(jié)點,課后學(xué)生根據(jù)自己的方案設(shè)計程序,給出數(shù)值結(jié)果和圖形。學(xué)生有了思考的過程,就會提高實際動手和學(xué)習(xí)的興趣。
另外,在講解Lagrange插值多項式的時候,課本是直接給出了n+1個節(jié)點的Lagrange基函數(shù),從而構(gòu)造出Lagrange插值多項式,完全是植入式給出結(jié)果。在上課過程中,先從最簡單的2個節(jié)點出發(fā),構(gòu)造相應(yīng)的插值多項式和對應(yīng)的Lagrange基函數(shù),學(xué)生理解和掌握了整個構(gòu)造過程,就可以舉一反三,寫出3個節(jié)點,甚至n+1個節(jié)點的Lagrange插值多項式。這樣的模式,不只是讓學(xué)生能夠高效率地掌握這部分知識,而且要印象深刻,學(xué)會舉一反三。如果讓具有主觀能動性的學(xué)生成為樂學(xué)好學(xué)之人,無疑會對教學(xué)質(zhì)量有大大地提高。
4.在上課過程中,結(jié)合最新科研成果,將本專業(yè)發(fā)展前沿的新動向及時補充到教學(xué)內(nèi)容中去。前面學(xué)生通過不同節(jié)點來改善龍格現(xiàn)象,但是節(jié)點的給出沒有規(guī)律可循,利用最新的科研論文,Trefethen[5]曾提出往往兩頭密集中間稀疏的節(jié)點能帶來比較好的插值效果,并且不會出現(xiàn)龍格現(xiàn)象,比如Gauss節(jié)點、Chebyshev節(jié)點等。上課時我們將Chebyshev點用于高次插值,并通過圖形來直觀地顯示。圖2分別給出11個等距節(jié)點的插值多項式(藍色長虛線)和11個Chebyshev點插值多項式(紅色點虛線)的圖形,從圖中可以看出Chebyshev點的10次插值多項式在端點處并沒有出現(xiàn)龍格現(xiàn)象。圖3則分別給出了11個和21個Chebyshev點構(gòu)造的10次插值多項式(紅色點虛線)和20次插值多項式(藍色實線),20次插值多項式逼近程度非常完美。這些內(nèi)容在大部分數(shù)值計算的教科書上是沒有的,增加最新科研成果進課堂,可以讓學(xué)生耳目一新,并且能夠推動學(xué)生主動去查找科研文獻,培養(yǎng)科學(xué)探索的能力。
5.適當增加部分學(xué)生感興趣的實用編程技術(shù),如介紹一些基于典型數(shù)據(jù)集的分類回歸等應(yīng)用時,采用基于Python的代碼進行分析和實現(xiàn)。這一做法的好處是多方面的,其中最重要的一點是有利于突出數(shù)值算法的教學(xué)重點?;诖髷?shù)據(jù)的應(yīng)用雖然是一個新的趨勢,但對于數(shù)值計算來說我們只需關(guān)注算法部分。就數(shù)據(jù)分析領(lǐng)域的應(yīng)用來說,開源社區(qū)中提供的大量Python程序庫的實現(xiàn)往往會比傳統(tǒng)的Matlab方便許多,這可以讓學(xué)生更好地專注于學(xué)習(xí)算法這一主要目的上去。下面所述是數(shù)據(jù)分析領(lǐng)域中經(jīng)典的例子:
改進算例:基于一個典型18層卷積神經(jīng)網(wǎng)絡(luò)(RESNET18)進行貓狗圖像分類問題中,如圖4所示是讀取圖片并轉(zhuǎn)化為向量的Python腳本,而圖5則給出了訓(xùn)練算法的詳細步驟。
通過這一簡單案例的對比容易發(fā)現(xiàn):開源社區(qū)所提供的算法實現(xiàn),事實上提供了比Matlab更開放、更詳細的算法實現(xiàn)接口,十分有利于算法學(xué)習(xí)者進行學(xué)習(xí)或更深入的修改,同時豐富的數(shù)據(jù)處理接口也比Matlab更適用于當下流行的大數(shù)據(jù)分析案例的入口。除增加梯度下降法之外,這一版的改進內(nèi)容還包括數(shù)據(jù)擬合的最小二乘法與非線性迭代法等經(jīng)典數(shù)值算法的Python實現(xiàn),并以課后練習(xí)的形式來鞏固相關(guān)理論知識點。
6.完善合理的過程性評價,調(diào)整課程評價方式,將傳統(tǒng)的期末考試和平時作業(yè)簡單組合的評價模式改為多方面的綜合評價(見圖6)。傳統(tǒng)的成績按期末80%和平時20%的方式給出,期末比例太大,大部分學(xué)生在整個學(xué)習(xí)過程中,平時散漫,靠期末考之前突擊去參加考試?,F(xiàn)在將傳統(tǒng)的模式改為多方面的綜合評價,在平時增加兩次課堂測驗(0%)和一次期中測試(20%)。增加一次實踐作業(yè)(10%),跟實際應(yīng)用相結(jié)合,學(xué)生可以通過查閱文獻、建立模型、選擇算法、編程實現(xiàn),最后以報告的形式上交。加上平時作業(yè)成績10%,期末成績占比從80%減到50%,讓學(xué)生能將課程的學(xué)習(xí)時間更加均勻地分布在平時,而不是集中在期末考試那幾周。經(jīng)過兩輪的教學(xué)實踐,更改后的綜合評價方式更合理,學(xué)生學(xué)習(xí)的積極性和成績也都有很大的提高。
三、結(jié)語
我們通過推進數(shù)值計算課程傳統(tǒng)模式的改革,來適應(yīng)大數(shù)據(jù)時代計算人才的要求。該課程經(jīng)過在信息與計算科學(xué)和數(shù)學(xué)與應(yīng)用數(shù)學(xué)兩個專業(yè)的教學(xué)改革實踐,改善了教學(xué)內(nèi)容和教學(xué)模式,完善了教學(xué)評價,提高了學(xué)生成績和自主學(xué)習(xí)的熱情,取得了比較明顯的教學(xué)成效。
參考文獻
[1]J.Nathan Kuta.數(shù)據(jù)驅(qū)動建模及科學(xué)計算——復(fù)雜系統(tǒng)和大數(shù)據(jù)處理方法[M].呂麗剛,等,譯.北京:電子工業(yè)出版社,2017.
[2]陸建芳,謝聰聰,練曉鵬.數(shù)值計算基礎(chǔ)[M].北京:科學(xué)出版社,2013.
[3]劉衍琦,詹福宇,蔣獻文,周華英.Matlab計算機視覺與深度學(xué)習(xí)實戰(zhàn)[M].北京:電子工業(yè)出版社,2017.
[4]Manfred Gilli,Dietmar Maringer,Enrico Schumann.Numerical Methods and Optimization in Finance[M]Elsevier,2013.
[5]Lioyd N.Trefethen,Is Gauss Quadrature Better than Clenshaw-Curtis?[J]SIAM Review,2008,V50(1):67-87.