編者按:Vincent Chen是斯坦福大學(xué)計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生,同時(shí)也是斯坦福AI研究室的一名研究助理。本文他給我們帶來了在機(jī)器學(xué)習(xí)中所需要的數(shù)學(xué)知識(shí)介紹。以下是論智對原文的編譯。
很多沒有良好數(shù)學(xué)基礎(chǔ)或統(tǒng)計(jì)學(xué)的同學(xué)們總會(huì)問,到底什么樣的數(shù)學(xué)水平才能入門機(jī)器學(xué)習(xí)?目前還沒有確切的答案。
在這篇文章中,我會(huì)列出在進(jìn)行機(jī)器學(xué)習(xí)產(chǎn)品搭建或?qū)W術(shù)研究時(shí)所需要的數(shù)學(xué)背景知識(shí)。這些都是我在與機(jī)器學(xué)習(xí)工程師、研究者、教授的談話中以及自己的經(jīng)驗(yàn)中總結(jié)出的。
為了構(gòu)建數(shù)學(xué)的準(zhǔn)備知識(shí),首先我會(huì)提出與傳統(tǒng)課堂不同的思維模式和學(xué)習(xí)方法。接著,我會(huì)大致敘述在機(jī)器學(xué)習(xí)領(lǐng)域不同類型所需要的具體背景知識(shí),大致涵蓋了高中的統(tǒng)計(jì)學(xué)和微積分,到最近的概率圖形模型(PGM)。最后,我希望你能找到自己所在領(lǐng)域所需要的數(shù)學(xué)知識(shí)。希望這篇文章對你有用!
關(guān)于被數(shù)學(xué)支配的恐懼
數(shù)學(xué)可以說是很多人的噩夢,包括工程師們。在開始之前,我想談?wù)勀切皵?shù)學(xué)好的人”到底有什么秘訣。
實(shí)際上,數(shù)學(xué)好的人只是有很多練習(xí)的機(jī)會(huì)而已,他們習(xí)慣了在研究數(shù)學(xué)的過程中遇到困難。最近的一項(xiàng)研究表明,與天生的能力相比,思維方式才是能否學(xué)好數(shù)學(xué)的重要因素。
但是,想達(dá)到上述境界仍需要花點(diǎn)時(shí)間和努力,這并不是與生俱來的能力。
開始上手
首先,作為基礎(chǔ),我們希望你有基礎(chǔ)的線性代數(shù)、微積分以及概率論入門知識(shí)。如果有基礎(chǔ)編程知識(shí)更好,這可以作為在具體語境中學(xué)習(xí)數(shù)學(xué)的工具。之后,你可以根據(jù)具體領(lǐng)域調(diào)整學(xué)習(xí)。
如何在學(xué)校之外學(xué)習(xí)數(shù)學(xué)
學(xué)習(xí)的最佳途徑一定是泡在學(xué)校,如果脫離了學(xué)校環(huán)境,也就沒有嚴(yán)格的體系架構(gòu)了,同時(shí)也不會(huì)有來自學(xué)霸的壓力,資源明顯不足。
所以在校外學(xué)習(xí),我推薦學(xué)習(xí)小組或者研討會(huì)的形式。在研究機(jī)構(gòu)中,可能有閱讀小組這類組織。有了基本組織框架,小組內(nèi)可能會(huì)一起學(xué)習(xí)某本教材,并進(jìn)行討論。
這種課外學(xué)習(xí)通常不會(huì)給日常工作帶來負(fù)擔(dān),甚至在互相激勵(lì)的環(huán)境中還能讓你的本來工作更加高效。
數(shù)學(xué)和編程
數(shù)學(xué)和代碼在機(jī)器學(xué)習(xí)研究中通常是高度混合的。大多數(shù)情況下,代碼都是直接從數(shù)學(xué)邏輯中形成,并且能用代碼語法展示出數(shù)學(xué)表示法。其實(shí)現(xiàn)在一些數(shù)據(jù)科學(xué)框架(例如NumPy)就能直接將數(shù)學(xué)推理(例如矩陣或向量)轉(zhuǎn)換成可讀代碼,非常直觀高效。
所以這里鼓勵(lì)通過代碼夯實(shí)數(shù)學(xué)學(xué)習(xí)。例如,練習(xí)手動(dòng)實(shí)現(xiàn)損失函數(shù)或優(yōu)化的代碼可以進(jìn)一步了解基礎(chǔ)概念。
這里舉一個(gè)通過代碼學(xué)習(xí)數(shù)學(xué)的例子:在你的神經(jīng)網(wǎng)絡(luò)中為ReLU激活函數(shù)進(jìn)行反向傳播。反向傳播是利用微積分中的規(guī)則來計(jì)算梯度的技術(shù)。為了在這一環(huán)境中實(shí)現(xiàn),我們將upstream導(dǎo)數(shù)和ReLU的梯度相乘。
首先,我們對ReLU進(jìn)行可視化:
為了計(jì)算梯度,你可能會(huì)對分段函數(shù)進(jìn)行可視化,用指示函數(shù)表示如下:
用NumPy我們可以直觀地用代碼表示出激活函數(shù)(藍(lán)色曲線),其中x是輸入,relu是輸出:
relu = np.maximum(x, 0)
梯度(紅線)也是一樣,下面的等式描述了upstream梯度:
grad[x < 0] = 0
如果你自己事先沒有推導(dǎo)出梯度,那么這行代碼可能不好解釋。在我們的代碼中,將upstream梯度中的所有值都設(shè)為0,以滿足[h<0]的條件。從數(shù)學(xué)角度來說,這能高效地展示ReLU梯度的分段表示,當(dāng)它們乘以upstream梯度時(shí),可以將所有小于0的值變?yōu)?。
從這里我們可以看到,了解微積分的基礎(chǔ)概念讓我們對代碼有了清晰的思考。想了解神經(jīng)網(wǎng)絡(luò)部署的完整過程,可以查看:pytorch.org/tutorials/beginner/pytorchwithexamples.html
用數(shù)學(xué)打造機(jī)器學(xué)習(xí)產(chǎn)品
為了完成這一部分,我與機(jī)器學(xué)習(xí)工程師探討了在debug的過程中都需要哪些數(shù)學(xué)知識(shí)。以下是工程師們的建議,如果你還不了解,沒有關(guān)系,以下部分可以為你提供具體的思路。
問:我想對高維客戶數(shù)據(jù)進(jìn)行可視化,應(yīng)該用什么聚類方法?
答:PCA vs tSNE,參考回答:stats.stackexchange.com/questions/238538/are-there-cases-where-pca-is-more-suitable-than-t-sne
問:為屏蔽虛假用戶信息,我應(yīng)該如何調(diào)整閾值(假設(shè)置信水平在0.9—0.8)?
答:進(jìn)行概率校準(zhǔn):scikit-learn.org/stable/modules/calibration.html
問:我想確定某一區(qū)域的衛(wèi)星數(shù)據(jù)的偏差,應(yīng)該用哪種方法?
答:答案不唯一,也許可以試試demographic parity?blog.mrtz.org/2016/09/06/approaching-fairness.html
總的來說,統(tǒng)計(jì)學(xué)和線性代數(shù)可以運(yùn)用到很多問題中,但是想要得到滿意的結(jié)果通常需要更專業(yè)的方法。那么,我們該如何縮小數(shù)學(xué)學(xué)習(xí)的知識(shí)呢?
定義你的系統(tǒng)
在利用豐富的資源編寫代碼前,你需要為自己幾個(gè)問題:
系統(tǒng)的輸入和輸出分別是什么?
你該如何準(zhǔn)備適合系統(tǒng)的數(shù)據(jù)?
如何創(chuàng)建特征或數(shù)據(jù)來幫助生成模型?
如何為你的問題定義一個(gè)合理的目標(biāo)?
的確,定義系統(tǒng)很難,但是之后的工程管道搭建也很復(fù)雜。換句話說,創(chuàng)建機(jī)器學(xué)習(xí)產(chǎn)品需要做很多工作,但大部分不需要深入的數(shù)學(xué)知識(shí)。
資源
谷歌的研發(fā)工程師Martin Zinkevich曾寫過一篇機(jī)器學(xué)習(xí)實(shí)踐教程,感興趣的讀者可自行查閱:developers.google.com/machine-learning/guides/rules-of-ml/
按需學(xué)習(xí)
剛進(jìn)入機(jī)器學(xué)習(xí)領(lǐng)域,你可能會(huì)發(fā)現(xiàn)麻煩不斷,尤其是在debug的過程中。當(dāng)你被某個(gè)問題困住時(shí),應(yīng)該如何解決?權(quán)重合理嗎?為什么模型會(huì)在特殊損失值下收斂?衡量成功與否的正確方法是什么?這時(shí),對數(shù)據(jù)進(jìn)行質(zhì)疑也許比較有用,可以試試不同的優(yōu)化方法或者算法。
通常你會(huì)發(fā)現(xiàn)這些在建模或debug過程中用到的數(shù)學(xué)在做決策時(shí)也很有用。Fast.ai的創(chuàng)始人之一Rachel Thomas就是這種“隨即可用”方法的支持者之一,在教學(xué)時(shí),她發(fā)現(xiàn)讓學(xué)生對研究材料感興趣更加重要,在這之后再加入數(shù)學(xué)教育即可。
資源
課程:Computational Linear Algebra by fast.ai
地址:http://www.fast.ai/2017/07/17/num-lin-alg/ "Computational Linear Algebra by fast.ai"
YouTube:3blue1brown: Essence ofLinear AlgebraandCalculus
地址:https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw "3blue1brown"
教材:Linear Algebra Done Rightby Axler
地址:http://linear.axler.net/ " Linear Algebra Done Right"
教材:Elements of Statistical Learningby Tibshirani et al.
地址:https://web.stanford.edu/~hastie/ElemStatLearn/ "Elements of Statistical Learning"
課程:Stanford’s CS229 (Machine Learning) Course Notes
地址:http://cs229.stanford.edu/syllabus.html#opt "Stanford’s CS229 (Machine Learning
機(jī)器學(xué)習(xí)研究中的數(shù)學(xué)
下面我將介紹在機(jī)器學(xué)習(xí)學(xué)術(shù)研究中所需要的數(shù)學(xué)思維類型。有些人不屑地認(rèn)為,機(jī)器學(xué)習(xí)研究中那些即插即用的系統(tǒng)只不過是用更多的計(jì)算實(shí)現(xiàn)更高的性能。在一些領(lǐng)域里,研究人員仍然懷疑實(shí)證方法缺少數(shù)學(xué)的嚴(yán)謹(jǐn)。
很多人擔(dān)心,研究領(lǐng)域可能在現(xiàn)有系統(tǒng)和假設(shè)上并沒有擴(kuò)展對領(lǐng)域的基礎(chǔ)了解。研究者們需要提供新的基礎(chǔ)模塊,用于生成全新的觀點(diǎn)和目標(biāo)。例如,就像Geoff Hinton在他的膠囊網(wǎng)絡(luò)論文中提到的,重新思考用于圖像分類的神經(jīng)網(wǎng)絡(luò)模塊。
在機(jī)器學(xué)習(xí)研究中,你不可能學(xué)習(xí)所有知識(shí),你需要做的就是關(guān)注自己感興趣的領(lǐng)域,切勿一味追求熱點(diǎn)。
機(jī)器學(xué)習(xí)研究領(lǐng)域包羅萬象,但是在公平性、可解釋性和可用性方面都有著許多難題。和其他科學(xué)研究的準(zhǔn)則一樣,基礎(chǔ)思考并不是現(xiàn)成的,它需要在具備高水平數(shù)學(xué)框架的前提下耐心思考。
資源
博客:Do SWEs need mathematics? by Keith Devlin
地址:https://www.maa.org/external_archive/devlin/devlin_10_00.html "Do SWEs need mathematics? by Keith Devlin"
reddit討論:Confessions of an AI Researcher
地址:https://www.reddit.com/r/MachineLearning/comments/73n9pm/d_confession_as_an_ai_researcher_seeking_advice/ "Confessions of an AI Researcher"
博客:How to Read Mathematics by Shai Simonson and Fernando Gouvea
地址:http://www.people.vcu.edu/~dcranston/490/handouts/math-read.html "How to Read Mathematics by Shai Simonson and Fernando Gouvea"
論文:NIPS and ICML recent conference papers
文章:A Mathematician’s Lament by Paul Lockhart1
地址:https://www.maa.org/external_archive/devlin/LockhartsLament.pdf "A Mathematician’s Lament by Paul Lockhart1"
機(jī)器學(xué)習(xí)的民主化
雖然這篇并未涉及太過高深的概念,但很多機(jī)器學(xué)習(xí)論文仍然充滿著復(fù)雜的術(shù)語。作為學(xué)生,你可以試著將高深的論文分解,記錄自己的理解,通過博客等形式表達(dá)出來。在這一點(diǎn)上可以借鑒distill.pub的方式。
結(jié)語
希望本文能成為你在機(jī)器學(xué)習(xí)領(lǐng)域開始數(shù)學(xué)學(xué)習(xí)的起點(diǎn)。
不同問題需要不同水平的知識(shí)來解決,我建議先弄明白你的目標(biāo)是什么再著手進(jìn)行學(xué)習(xí)。
如果你想搭建一款產(chǎn)品,可以找尋同伴或在學(xué)習(xí)小組中進(jìn)行。
在研究領(lǐng)域,廣泛的數(shù)學(xué)基礎(chǔ)可以助你走的更遠(yuǎn)。
數(shù)學(xué)(尤其是研究領(lǐng)域的數(shù)學(xué))的確有些令人頭大,但是被難住也是學(xué)習(xí)的一部分?。?/p>
祝你好運(yùn)!
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4733瀏覽量
100417 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8349瀏覽量
132312
原文標(biāo)題:資源 |不要再問我什么數(shù)學(xué)水平才能學(xué)機(jī)器學(xué)習(xí)啦
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論