肖 宇
(上海對外經(jīng)貿(mào)大學(xué)統(tǒng)計(jì)與信息學(xué)院 上海 201620)
隨著大數(shù)據(jù)與人工智能時代的到來,業(yè)界對數(shù)據(jù)分析相關(guān)人才需求激增。數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、統(tǒng)計(jì)學(xué)習(xí)、深度學(xué)習(xí)和數(shù)據(jù)庫管理等數(shù)據(jù)分析與處理核心課程備受重視,各高校非計(jì)算機(jī)類學(xué)科也積極跟進(jìn),重新布局針對新時代背景下的培養(yǎng)方案。在此背景下,有針對性地重新思考數(shù)據(jù)分析相關(guān)課程的教學(xué)方法非常有必要。
機(jī)器學(xué)習(xí)主要研究如何基于計(jì)算機(jī)自動學(xué)習(xí)現(xiàn)實(shí)世界規(guī)律,從而實(shí)現(xiàn)對現(xiàn)實(shí)場景的解釋與預(yù)測[1]。機(jī)器學(xué)習(xí)模型與算法是實(shí)現(xiàn)人工智能的基礎(chǔ)之一,理解其核心概念與背后的理論基礎(chǔ)具有基礎(chǔ)性意義。相應(yīng)地,機(jī)器學(xué)習(xí)課程的教學(xué)任務(wù)重點(diǎn)幫助學(xué)生理解機(jī)器學(xué)習(xí)算法背后的前提假設(shè)、訓(xùn)練目標(biāo)、實(shí)現(xiàn)過程以及適用場景等。如何在有限學(xué)時內(nèi)完成以上核心內(nèi)容的有效傳遞是一個難題[2]。
常用的機(jī)器學(xué)習(xí)教學(xué)方法主要從數(shù)學(xué)角度講授機(jī)器學(xué)習(xí)算法的模型形式、訓(xùn)練目標(biāo)、求解算法和應(yīng)用場景等,缺乏對算法編程實(shí)現(xiàn)過程的深入解析。因此可以圍繞編程實(shí)現(xiàn)展開課程教學(xué),以一種互動的形式傳遞機(jī)器學(xué)習(xí)模型與算法的核心內(nèi)容。以下內(nèi)容首先介紹以編程實(shí)現(xiàn)為核心的機(jī)器學(xué)習(xí)教學(xué)方法流程,然后通過案例展示了該流程,最后對本文內(nèi)容進(jìn)行總結(jié)。
對于算法學(xué)習(xí)而言,通過某種編程語言實(shí)現(xiàn)算法是掌握算法的必要前提之一。因此,提出以編程實(shí)現(xiàn)為核心的機(jī)器學(xué)習(xí)教學(xué)方法。需要注意的是,以編程實(shí)現(xiàn)為核心的機(jī)器學(xué)習(xí)教學(xué)并不否認(rèn)其它環(huán)節(jié)的重要性,而是強(qiáng)調(diào)算法學(xué)習(xí)的檢驗(yàn)與反饋。
以編程實(shí)現(xiàn)為核心的機(jī)器學(xué)習(xí)教學(xué)方法包含以下流程:
(1)算法的相關(guān)概念,即用于算法模型決策可靠性的直覺?算法屬于什么類別?算法可以解決什么哪些問題?以線性回歸模型為例,該模型來源于經(jīng)驗(yàn)時間的事件之間的簡單影響關(guān)系,屬于回歸模型,可以解決對因變量的預(yù)測問題。
(2)算法的數(shù)學(xué)形式,即如何形式化表示機(jī)器學(xué)習(xí)算法?線性回歸模型可以利用向量形式簡潔地表示出來,假定了輸入變量與輸出變量之間存在線性關(guān)系,在滿足一定條件下可以推斷出變量之間的影響關(guān)系。在該環(huán)節(jié),可以基于不同的編程模式構(gòu)建線性回歸模型,例如基于循環(huán)或者基于向量運(yùn)算計(jì)算自變量與權(quán)重之間的乘積。
(3)算法的決策準(zhǔn)則,即如何算法的目標(biāo)函數(shù)是什么?線性回歸模型的決策準(zhǔn)則通常包含兩種,一種為最小化均方誤差,另一種為最大化似然率。從最大化似然率出發(fā),通過一定的數(shù)學(xué)推導(dǎo),可以得到與最小化均方誤差相同的決策目標(biāo)函數(shù)。在該環(huán)節(jié),基于決策準(zhǔn)則的數(shù)學(xué)形式構(gòu)建函數(shù)。
(4)算法的求解方法,即采用何種優(yōu)化算法尋找決策準(zhǔn)則下的最優(yōu)解;線性回歸的求解算法大致可以分為封閉形式解和數(shù)值形式解,給學(xué)生解釋為什么需要利用數(shù)值形式迭代逼近最優(yōu)解。在該環(huán)節(jié),分別構(gòu)建封閉形式解的求值代碼,以及數(shù)值形式的求值代碼。
(5)算法的集中測試。在完成以上對應(yīng)函數(shù)的構(gòu)建之后,構(gòu)建人工數(shù)據(jù)集以測驗(yàn)?zāi)P秃头椒ǖ恼_性。具體而言,可以設(shè)定輸入?yún)?shù)值,經(jīng)過程序求解過程后驗(yàn)證是否可以推斷得到該參數(shù)值。
算法的編程實(shí)現(xiàn)貫穿于步驟(2)至(5)。其中,前三個步驟中程序與算法數(shù)學(xué)形式相互印證,以達(dá)到從兩個角度共同講解算法,進(jìn)而加深學(xué)生對關(guān)鍵概念理解的目的。步驟(5)結(jié)合具體的數(shù)據(jù)集,檢驗(yàn)?zāi)P偷恼w實(shí)現(xiàn)。
為了更加具體、形象的呈現(xiàn)以編程實(shí)現(xiàn)為核心的機(jī)器學(xué)習(xí)教學(xué)方法,以下以線性回歸模型的教學(xué)過程為例進(jìn)行簡要說明。算法的Python實(shí)現(xiàn)涉及第三方庫pytorch。使用pytorch的:
(1)算法的相關(guān)概念。線性回歸輸出是一個連續(xù)值,因此適用于解決回歸問題?;貧w問題在實(shí)際中很常見,如預(yù)測房屋價格、氣溫、銷售額等連續(xù)值的問題。
(3)算法的決策準(zhǔn)則。均方誤是回歸任務(wù)中最常用的性能衡量指標(biāo),因此可以讓均方誤差最小化:,其中m為樣本數(shù)量。令,對求導(dǎo)可得。算法實(shí)現(xiàn)如下:
(4)算法的求解方法?,F(xiàn)實(shí)任務(wù)中f(XTX)往往不是滿秩矩陣,而且隨著數(shù)據(jù)量的增加,計(jì)算量呈現(xiàn)大幅增長。因此,往往使用梯度下降算法迭代求解。算法實(shí)現(xiàn)如下:
(5)算法的集中測試。結(jié)合函數(shù)linearModel和加入擾動項(xiàng)生成測試數(shù)據(jù)集,用于驗(yàn)證算法流程的正確性。過程如下:
最后,如果程序運(yùn)行成功,且估計(jì)值與[2,-3.4,4.2]相差較小,則說明流程的正確性;否則,需重新通過單元測試檢查程序各環(huán)節(jié)。
本文提出了一種圍繞編程實(shí)現(xiàn)的教學(xué)方法。該方法包含算法的相關(guān)概念、算法的數(shù)學(xué)形式、算法的決策準(zhǔn)則、算法的求解方法和算法的集中測試等關(guān)鍵步驟,其中算法的編程實(shí)現(xiàn)貫穿在步驟2至5。從學(xué)生的整體反饋而言,該教學(xué)方法言之有物,可以加深了對機(jī)器學(xué)習(xí)算法的理解。