搞機器學習/AI有什麼必備的數學基礎?|經驗之談+資源大全
雷剛 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
今天是開學第一天!心裡只有學習的量子位,發現Hacker News上又有高分話題,而且還跟學習有關!
這次討論的主題是:
想搞機器學習/AI需要怎樣的數學基礎,有什麼推薦的入門資料/課程?
凡事總須研究,才會明白。看到這個話題,心裡只有學習的量子位(×2)仔細看了半夜,這些討論寫著許多字、說了許多話,不過滿篇可以分類為三個部分:
- 中肯建議
- 教材書籍
- 視頻課程
獨學習不如眾學習。量子位就把學後感整理如下,一起遨遊知識的海洋吧~
中肯建議
這部分內容的主要貢獻者包括:mindcrime、tlb、jules、rocqua、srean、leecarraher、irchans、KirinDave、wadams19、pramalin等
首先
多變數微積分、線性代數、概率論、資訊理論,這幾門必須基礎紮實。精通圖論也挺有用的。
大部分機器學習是對數據的模型擬合。為了擬合模型,需要把一些誤差當成真實參數的函數,並對其進行最小化。最小化的演算法基於梯度下降,也就是依賴於導數,這就是一種微積分運算。
如果你在做貝葉斯推理,你也需要用到微積分,因為貝葉斯定律將後驗分布作為一個積分。
搞機器學習你只需要微積分1和2,微積分3里的旋度和散度、斯托克斯定理之類的,學物理用得上,機器學習不用這些。另外,你可能還需要一些微積分4中的基本函數分析。
(量子位註:此處微積分1234指的美國大學課程體系)
微積分的本質之一,是反映了事物的變化,對於變化的平順性提供了一個很好的描述。一個處於最佳狀態的系統,在某個確定的點上不再增減變化。
機器學習中的許多問題都是優化問題:在給定一些約束的條件下,怎樣選擇參數才能讓錯誤最小化?通常這非常困難(NP-hard),但如果你把問題設計為「平滑」,那麼就能通過微積分來獲得很好的代數解。
多變數微積分也是需要的,在嘗試最小化「錯誤」時,通常會通過每次更改許多、許多參數來實現。這意味著你需要知道如何在高位空間進行平滑變換。
而微積分的中的積分,用來「測量」物體大小。大部分概率是用來描述非常籠統的比例。「這塊有多大」的問題類似於「這件事發生的可能性有多大」。解決問題的辦法,就是用數量龐大的小塊集合在一起,形成一個複雜的整體。
所以從根本上講,機器學習取決於如何測量一件事(積分)並且知道這件事如何變化(導數)。從某種程度上說,這兩件事就是你在微積分中學到的。
我數學背景還不錯,但想要搞明白K-L散度時,還得重新研究一下。在機器學習領域,幾乎我遇到的資訊理論問題都是最小化K-L散度,這些看維基百科都能搞懂。你還得能理解具有概率輸出的模型,比方生成模型和強化學習等。
如果你要閱讀學術期刊,至少下面這些知識點應該懂一點:
- 統計學核心。你得熟悉統計學家如何處理數據,這常常用到
- 微積分。你不需要成為解題達人,但得明白多個變數進行微分和積分的過程
- 線性代數。一切的基礎,比統計還重要
- 數值計算的方法。我不斷的查看資料,以搞懂大家為什麼那樣做
- 計算理論以及相關研究。熟悉這些能讓你發現錯誤,找到改進的方向
- 我的下一個挑戰是非參數統計。許多研究者跟我說這一領域會得到很多收穫,許多方法能極大的改進機器學習
還有人覺得,機器學習中最需要數學的地方,莫過於理解反向傳播時。反向傳播幾乎都是偏導數/鏈式法則什麼的。還有很多機器學習涉及一些微積分的凸優化。
但是
我們得分清「應用」和「研究」之間的區別。並不是每個人都在做最前沿的研究。有人下載一個DL4J,看幾個教程,就能搭建一個基本的網路來解決問題,這個過程中也創造了價值。
機器學習雖然還沒來到完全不需要關心底層細節的時間節點,但我們確實已經可以合法獲取很多現成的工具,而不需要動手推導反向傳播的方程式。
講真,大多數情況下在工作中應用已知的方法,並不要求搞懂背後的數學,只需要了解基本的統計數據和概率論,能解釋結果就好了。所以,如果你只是簡單的使用別人做好的工具來解決問題,真的不需要什麼數學背景。
一個本科生就能學會漂亮的解決問題,而不需要深入研究底層的數學細節,就權當做是工程問題的最佳實踐。大多數實際工作中,並不用演算低級別的架構或公式,通常都是從已經選好的框架中,把想用的東西跳出來而已。
另一方面,如果你面臨的問題不能用現成的方法搞定,這時候數學背景就派上用場了。如果你想在框架里應用一個全新或者小眾的架構,就得搞明白之後才能寫出來。
在應用和研究機器學習技術之間,有很大的不同。總的來說,單純在應用這一端,並沒有太多嚴格的數學背景要求。
需要多少數學,取決於你要在機器學習/AI領域扎多深。
如果只是應付工作,那你走運了,現成就能用的東西原來越多了。例如DataBot、H2O、Scikit-learn、Keras(加TensorFlow)……可能唯一必備的數學技能就是統計學。無論你選擇了哪種解決方案,採用了何種自動調整和選擇的演算法,都得需要一些統計數據才能說明你的模型有效果。
想進一步提升自己,還可以花更多時間學習特徵提取、數據工程,好好研究一下上面提到的幾個工具包,特別是其中的模型。
如果你想研發新的技術和演算法,天空才是你的極限,不過還是得統計數據。
那些已經大量使用的機器學習和AI框架,其實只是頂著一個數學的帽子,你完全可以把它們當成可靠的黑盒系統來用,沒必要理解模型的生成過程和設置。很多工具可以告訴你哪些演算法對你的數據最有意義,甚至能幫你找出最有效的那種。
雖然這說起來令人沮喪,但真的已經不是非得有博士學位才能幹這行了。
不過,即便你能幹的事情跟博士科學家差不多,也不意味著有人會雇你。僱主還是會看重數學、計算機科學或相關領域的博士學位。但這些可能更多出於其他方面因素的考量,而不是搞機器學習/AI的必要條件。
了解數學能讓你更好的理解工作,減少愚蠢犯錯的可能。
上面講到的工具,建議試試完全自動化的黑盒機器學習管道,比方說TPOT。儘早上手,以及可以推薦給你的產品經理朋友。
TPOT即Tree-based Pipeline Optimization Tool,這是一個基於遺傳演算法自動選擇、優化機器學習模型和參數的工具。通常模型有非常大量的參數需要調整和優化,這類工具可以節省找到最優參數組合的時間。
不過,許多機器學習從業人員對這類自動化機器學習管道非常警惕。如果沒有理解這些工具的基本統計/數學假設,可能會遇到很多坑;而這種一刀切的解決方案,也可能會給出誤導性的結果。另外使用這類工具,也讓解釋原因和結果的工作變得更加困難,一個「黑盒子」很難得到價值認同。
- TPOT的GitHub地址:
https://github.com/rhiever/tpot
到底應該怎麼開始學習?
- 建議一:有兩種方法來學習機器學習/AI:1)閱讀所有資料,然後開始解決問題 2)先開始解決問題,然後根據需要學習相關的數學知識。第二種方法更好。
- 建議二:首先在Coursera上看吳恩達機器學習和深度學習的課程。選擇你感興趣的領域和問題。接著閱讀機器學習/AI在這一領域如何應用的論文。然後動手重現你已經搞明白並且感興趣的論文。
- 建議三:這個學習計劃我覺得非常有用,很好的列出了所需課程和時間框架,地址在此:
https://www.analyticsvidhya.com/blog/2017/01/the-most-comprehensive-data-science-learning-plan-for-2017/
教材書籍
接下來開始分享資源。先從書籍講起。
這部分內容的主要貢獻者包括:CuriouslyC、rdudekul、kgwgk、charlescearl、ChadyWady等。
我認為最好從David MacKay的《Information Theory, Inference and Learning Algorithms(資訊理論、推理與學習演算法)》入手,內容可能有點老舊了,但仍然是這個領域最平易近人的書籍之一。
- 在線版本:
http://www.inference.org.uk/itprnn/book.pdf
另一本推薦的舊書是E. T. Jaynes的《Probability Theory: the Logic of Science(概率論:科學的邏輯)》。
- 在線版本
http://www.med.mcgill.ca/epidemiology/hanley/bios601/GaussianModel/JaynesProbabilityTheory.pdf
以及Tibshirani的《Elements of Statistical Learning(統計學習元素)》。
- 在線版本:
https://web.stanford.edu/~hastie/ElemStatLearn/
Andrew Gelman的《Bayesian Data Analysis(貝葉斯數據分析)》也很好。
- 在線版本:
http://hbanaszak.mjr.uw.edu.pl/TempTxt/(Chapman%20&%20Hall_CRC%20Texts%20in%20Statistical%20Science)%20Andrew%20Gelman,%20John%20B.%20Carlin,%20Hal%20S.%20Stern,%20David%20B.%20Dunson,%20Aki%20Vehtari,%20Donald%20B.%20Rubin-Bayesian%20Data%20Analysis-Chapman%20and%20Hall_CRC%20(2014).pdf
想了解這個領域最新的額進展,建議閱讀Ian Goodfellow和Yoshua Bengio的《Deep Learning》。
- 在線版本:
http://www.deeplearningbook.org/
推薦一本我本科時候用的統計學教材:《Probability & Statistics for Engineers & Scientists》。
- 在線版本:
https://www.amazon.com/Probability-Statistics-Engineers-Scientists-MyStatLab/dp/0134468910
再推薦一些網上免費的數學參考書:
- 在線數學教材匯總
http://people.math.gatech.edu/~cain/textbooks/onlinebooks.html
- 免費數學教材
http://www.openculture.com/free-math-textbooks
- 開放教材圖書館
https://open.umn.edu/opentextbooks/SearchResults.aspx?subjectAreaId=7
- MIT在線教材
https://ocw.mit.edu/courses/online-textbooks/#mathematics
- 美國數學研究所認證教材
https://aimath.org/textbooks/approved-textbooks/
AI是一個非常廣闊的領域,每個細分領域都有不同的數學背景要求。掌握所有的數學知識是不可能的,所以你得想清楚對什麼感興趣。
同時推薦一本Russell和Norvig的好書,覆蓋了人工智慧中很多不同的主題。無論你本科學到了什麼,這本書都可以提供了一深入了解AI的良好起點。
這本書是《Artificial Intelligence: A Modern Approach》,中文版名稱《人工智慧:一種現代方法》。
- 英文版地址在此:
http://aima.cs.berkeley.edu/
另外附送一份Michael I. Jordan之前開出的書單。
- 地址在此:
https://news.ycombinator.com/item?id=1055389
上述在線內容都是合法的。合法的。合法的。
視頻課程
再來就是視頻課程匯總。主要貢獻者包括:72mena、leecarraher、mindcrime、rdrey等。
YouTube以及http://Videolectures.net上有很多高質量的數學視頻教學內容。
- 之前提到的David MacKay,合輯在此:
http://videolectures.net/david_mackay/
- Leonard教授合輯在此:
https://www.youtube.com/user/professorleonard57
- Gilbert Strang合輯在此:
https://www.youtube.com/results?search_query=gilbert+strang
- 3Blue1Brown合輯在此:
https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw
- 還有畫風清奇的Siraj Raval講人工智慧中的數學:
https://www.youtube.com/watch?v=xRJCOz3AfYY&list=PL2-dafEMk2A7mu0bSksCGMJEmeddU_H4D
我的建議是,先快速看一遍Jeremy Howard的講座,這裡面有很多機器學習/AI的應用案例,而且只需要一點點的數學背景就能看懂。
- 地址在此:
http://course.fast.ai/
接下來可以去Coursera上吳恩達的新課程,比原來的課程更容易接近,但仍然會有一些方程式讓你不知所措,不過你肯定能實現出來。地址在此:
- 老課程《機器學習》:
https://www.coursera.org/learn/machine-learning
- 新課程《深度學習》:
https://www.coursera.org/specializations/deep-learning
再推薦一個統計學課程,德州大學奧斯汀分校統計和數據科學系Michael J. Mahometa主講的《數據分析基礎》。
- 地址在此:
https://courses.edx.org/courses/course-v1:UTAustinX+UT.7.11x+3T2016/course/
小建議,在這個課程中講師使用了R語言,我覺得還是Python更好。
另外,Coursera上有一系列的統計課程還不錯。不過貝葉斯統計這門課有點難,建議買一本書或者補充點其他課外資料。我推薦這本書:《Bayes』 Rule: A Tutorial Introduction to Bayesian Analysis》
- 亞馬遜有售:
https://www.amazon.com/Bayes-Rule-Tutorial-Introduction-Bayesian/dp/0956372848
OMT
想搞機器學習/AI但數學不好的孩子,或者還有?快把這篇發給他。
救救孩子……
二零一七年九月。
傳送門:肉身前往Hacker News觀摩,請點擊左下角「閱讀原文」。
課外閱讀
量子位在知乎上也發現一個質量很高的討論。主要是王乃岩談「如何判斷一個面試者的深度學習水平?」,賈揚清等也參與了回答……
在量子位微信公眾號(QbitAI)對話界面,回復:「naiyan」這六個字母,即刻前往觀摩。
如果你有更好的推薦,歡迎留言,讓更多朋友看到~
— 完 —
歡迎大家關注我們的專欄:量子位 - 知乎專欄
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。
量子位 QbitAI
?? ? 追蹤AI技術和產品新動態
推薦閱讀: