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