做機(jī)器學(xué)習(xí)需要多少數(shù)學(xué)基礎(chǔ)?這是很多初學(xué)者最關(guān)心的問(wèn)題,答案也眾說(shuō)紛紜。
有人說(shuō),概率論線性代數(shù)要預(yù)先精通;有人說(shuō),微積分要懂一點(diǎn);也有人說(shuō),沒(méi)必要特地去補(bǔ);甚至有人專(zhuān)門(mén)寫(xiě)了繞開(kāi)數(shù)學(xué)的深度學(xué)習(xí)入門(mén)教材……
斯坦福大學(xué)計(jì)算機(jī)系學(xué)生、斯坦福AI實(shí)驗(yàn)室研究助理(RA)Vincent Chen,最近在硅谷最牛孵化器Y Combinator官方博客上發(fā)表的一篇文章,就專(zhuān)門(mén)深入探討了里這個(gè)問(wèn)題。
Vincent想要說(shuō)的是,具體問(wèn)題具體分析。
他跟領(lǐng)域內(nèi)的很多工程師、研究人員、教育工作者,討論了這個(gè)問(wèn)題,再加上自己的經(jīng)驗(yàn),得出了這樣的結(jié)論:解決不同問(wèn)題,可能需要不同程度的直覺(jué) (Intuition) ,所以首先要知道自己的目標(biāo)是什么。
構(gòu)建產(chǎn)品和做研究,需要的數(shù)學(xué)就不太一樣。
不過(guò),還是要先從大家都差不多的入門(mén)階段說(shuō)起。
入門(mén)須知
熟悉線性代數(shù)/矩陣運(yùn)算,是機(jī)器學(xué)習(xí)的軟性前提。也就是說(shuō),最好懂,不強(qiáng)制。
當(dāng)然,學(xué)習(xí)數(shù)學(xué)最好的環(huán)境還是學(xué)校。沒(méi)有了學(xué)校里的壓力、競(jìng)爭(zhēng)和交流,就要找其他方式來(lái)補(bǔ)充:學(xué)習(xí)小組、學(xué)習(xí)型午餐會(huì)都是不錯(cuò)的形式。
想要在工作中學(xué)數(shù)學(xué),編程最好也會(huì)一點(diǎn),它會(huì)成為你的學(xué)習(xí)工具。
要知道,在機(jī)器學(xué)習(xí)任務(wù)中,數(shù)學(xué)和代碼是交織在一起的。代碼需要數(shù)學(xué)上的直覺(jué),甚至和數(shù)學(xué)符號(hào)的語(yǔ)法有共通之處。
舉個(gè)例子:練習(xí)手動(dòng)實(shí)現(xiàn)損失函數(shù)(loss functions)或者優(yōu)化算法(optimization algorithm),就是真正理解背后概念的好方法。
再舉個(gè)比較實(shí)際的例子:在神經(jīng)網(wǎng)絡(luò)里手動(dòng)為線性整流函數(shù)(ReLU)實(shí)現(xiàn)反向傳播,就涉及用微積分里的鏈?zhǔn)椒▌t來(lái)有效計(jì)算梯度,而運(yùn)用鏈?zhǔn)椒▌t,需要用ReLU的梯度乘以一個(gè)導(dǎo)數(shù)。
最開(kāi)始,要先將ReLU激活函數(shù)可視化:
計(jì)算梯度(就是看起來(lái)的斜率),要可視化一個(gè)階梯函數(shù),用指示函數(shù)表示:
現(xiàn)在的數(shù)據(jù)科學(xué)框架能直觀地把數(shù)學(xué)運(yùn)算翻譯成可讀的代碼,NumPy就是其中之一。對(duì)于上面這個(gè)任務(wù),它就可以將激活函數(shù)(藍(lán)色曲線)用代碼表示出來(lái):
relu = np.maximum(x, 0)
梯度(紅色曲線)也可以:
grad[x < 0] = 0
只有親自求了一遍導(dǎo)數(shù),才能理解這行代碼。
掌握基礎(chǔ)之后,就可以根據(jù)你的實(shí)際需求自定義學(xué)習(xí)方向了。
造機(jī)器學(xué)習(xí)產(chǎn)品需要的數(shù)學(xué)
作為一名學(xué)生,Vincent通過(guò)和多名機(jī)器學(xué)習(xí)工程師聊天,了解了他們?cè)赿ebug時(shí)最有用的數(shù)學(xué)知識(shí)。
總的來(lái)說(shuō),統(tǒng)計(jì)學(xué)和線性代數(shù)總是有用的,但面對(duì)不同的問(wèn)題又有不同的需求。
那么,怎么確定該精修哪些數(shù)學(xué)知識(shí)呢?
首先,要定義你的系統(tǒng)。
想寫(xiě)代碼為系統(tǒng)建模,可用的資源多得是。在構(gòu)建系統(tǒng)的過(guò)程中,要想著這些問(wèn)題:
系統(tǒng)的輸入/輸出是什么?
怎樣準(zhǔn)備適合系統(tǒng)的數(shù)據(jù)?
怎樣構(gòu)建特征、處理數(shù)據(jù)能讓模型更好地泛化?
怎樣為你的問(wèn)題定義合理的目標(biāo)?
然后,在你用到數(shù)學(xué)的時(shí)候,去學(xué)習(xí)它。
一頭扎進(jìn)機(jī)器學(xué)習(xí)里,你就會(huì)發(fā)現(xiàn)自己會(huì)卡在某些步驟??ㄗ〉臅r(shí)候,該查什么呢?你的權(quán)重合理嗎?你的模型為什么用這種損失就不收斂?
這時(shí)候,就需要對(duì)數(shù)據(jù)做假設(shè),換個(gè)方式約束優(yōu)化,或者換個(gè)算法試試。于是在這個(gè)建?;蛘遜ebug過(guò)程里,你會(huì)發(fā)現(xiàn)懂?dāng)?shù)學(xué)對(duì)做決定有很大幫助,比如說(shuō)要選擇損失函數(shù)和評(píng)價(jià)指標(biāo),數(shù)學(xué)就是個(gè)好工具。
這可以說(shuō)是一種“按需”學(xué)習(xí)的方法了。
做機(jī)器學(xué)習(xí)研究需要的數(shù)學(xué)
如果是做研究的話,就需要廣泛的數(shù)學(xué)基礎(chǔ),來(lái)給你鋪路。
現(xiàn)在,很多研究都是在現(xiàn)有系統(tǒng)之上進(jìn)行的,缺少對(duì)基礎(chǔ)的理解。
這樣還不夠,研究者應(yīng)該貢獻(xiàn)更基本的模塊。比如說(shuō),可以像深度學(xué)習(xí)教父Geoff Hinton提出的膠囊網(wǎng)絡(luò)(Capsule Networks)一樣,重新思考卷積神經(jīng)網(wǎng)絡(luò)(CNN)這種基本模塊。
要想在機(jī)器學(xué)習(xí)領(lǐng)域做出這樣的成就,就需要問(wèn)一些基礎(chǔ)問(wèn)題,也就需要對(duì)數(shù)學(xué)的深刻理解?!渡窠?jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》教材的作者M(jìn)ichael Nielsen稱(chēng)之為“帶著玩心的探索”。
這個(gè)探索過(guò)程中,可能會(huì)在一個(gè)問(wèn)題上卡幾個(gè)小時(shí),可能需要換個(gè)角度去看問(wèn)題。不過(guò),只有這樣,科學(xué)家才能超越直觀想法和架構(gòu)的組合,提出深刻、有見(jiàn)地的問(wèn)題。
和構(gòu)建產(chǎn)品不一樣的是,機(jī)器學(xué)習(xí)研究里的基礎(chǔ)思考不是“按需”進(jìn)行的,想要以高級(jí)的數(shù)學(xué)框架所要求的廣度來(lái)思考、批判性地解決問(wèn)題,需要耐心學(xué)習(xí)。
不要怕
總的來(lái)說(shuō),數(shù)學(xué)可能是有點(diǎn)可怕,你會(huì)卡在一個(gè)又一個(gè)地方。但是,這本來(lái)就是數(shù)學(xué)學(xué)習(xí)很重要的部分。
不要害怕。
實(shí)際上,數(shù)學(xué)好的人都要花好多時(shí)間來(lái)練習(xí),于是,他們對(duì)這種做數(shù)學(xué)“被卡住”的感覺(jué)就習(xí)以為常了。想要學(xué)好數(shù)學(xué),首先需要建立學(xué)生的心態(tài)。
想要習(xí)以為常,當(dāng)然需要付出時(shí)間和努力,加油~
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8503瀏覽量
134610 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5561瀏覽量
122794
原文標(biāo)題:怎樣搞定機(jī)器學(xué)習(xí)里的數(shù)學(xué)?斯坦福高手教你具體問(wèn)題具體分析
文章出處:【微信號(hào):CAAI-1981,微信公眾號(hào):中國(guó)人工智能學(xué)會(huì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
【下載】《機(jī)器學(xué)習(xí)》+《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》
構(gòu)建機(jī)器學(xué)習(xí)產(chǎn)品必需的數(shù)學(xué)背景
如果只是應(yīng)用機(jī)器學(xué)習(xí),而不是研究,需要哪些知識(shí)
什么是數(shù)學(xué)?對(duì)思想和方法的基本研究有哪些?
什么是機(jī)器學(xué)習(xí)? 機(jī)器學(xué)習(xí)基礎(chǔ)入門(mén)
一文匯總機(jī)器學(xué)習(xí)和Python(包括數(shù)學(xué))速查表
機(jī)器學(xué)習(xí)中所需要的數(shù)學(xué)知識(shí)介紹
機(jī)器學(xué)習(xí)不需要數(shù)學(xué),調(diào)包就行?
機(jī)器學(xué)習(xí)中應(yīng)用數(shù)學(xué)應(yīng)該要注意的幾點(diǎn)注記
如何用TensorFlow進(jìn)行機(jī)器學(xué)習(xí)研究

評(píng)論