搞機器學習/AI有什麼必備的數學基礎?|經驗之談+資源大全

雷剛 發自 凹非寺

量子位 報道 | 公眾號 QbitAI

今天是開學第一天!心裡只有學習的量子位,發現Hacker News上又有高分話題,而且還跟學習有關!

這次討論的主題是:

想搞機器學習/AI需要怎樣的數學基礎,有什麼推薦的入門資料/課程?

凡事總須研究,才會明白。看到這個話題,心裡只有學習的量子位(×2)仔細看了半夜,這些討論寫著許多字、說了許多話,不過滿篇可以分類為三個部分:

  • 中肯建議
  • 教材書籍
  • 視頻課程

獨學習不如眾學習。量子位就把學後感整理如下,一起遨遊知識的海洋吧~

中肯建議

這部分內容的主要貢獻者包括:mindcrimetlbjulesrocquasreanleecarraherirchansKirinDavewadams19pramalin

首先

多變數微積分、線性代數、概率論、資訊理論,這幾門必須基礎紮實。精通圖論也挺有用的。

大部分機器學習是對數據的模型擬合。為了擬合模型,需要把一些誤差當成真實參數的函數,並對其進行最小化。最小化的演算法基於梯度下降,也就是依賴於導數,這就是一種微積分運算。

如果你在做貝葉斯推理,你也需要用到微積分,因為貝葉斯定律將後驗分布作為一個積分。

搞機器學習你只需要微積分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地址:

github.com/rhiever/tpot

到底應該怎麼開始學習?

  • 建議一:有兩種方法來學習機器學習/AI:1)閱讀所有資料,然後開始解決問題 2)先開始解決問題,然後根據需要學習相關的數學知識。第二種方法更好。
  • 建議二:首先在Coursera上看吳恩達機器學習和深度學習的課程。選擇你感興趣的領域和問題。接著閱讀機器學習/AI在這一領域如何應用的論文。然後動手重現你已經搞明白並且感興趣的論文。
  • 建議三:這個學習計劃我覺得非常有用,很好的列出了所需課程和時間框架,地址在此:

analyticsvidhya.com/blo

教材書籍

接下來開始分享資源。先從書籍講起。

這部分內容的主要貢獻者包括:CuriouslyCrdudekulkgwgkcharlescearlChadyWady等。

我認為最好從David MacKay的《Information Theory, Inference and Learning Algorithms(資訊理論、推理與學習演算法)》入手,內容可能有點老舊了,但仍然是這個領域最平易近人的書籍之一。

  • 在線版本:

inference.org.uk/itprnn

另一本推薦的舊書是E. T. Jaynes的《Probability Theory: the Logic of Science(概率論:科學的邏輯)》。

  • 在線版本

med.mcgill.ca/epidemiol

以及Tibshirani的《Elements of Statistical Learning(統計學習元素)》。

  • 在線版本:

web.stanford.edu/~hasti

Andrew Gelman的《Bayesian Data Analysis(貝葉斯數據分析)》也很好。

  • 在線版本:

hbanaszak.mjr.uw.edu.pl%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 GoodfellowYoshua Bengio的《Deep Learning》。

  • 在線版本:

deeplearningbook.org/

推薦一本我本科時候用的統計學教材:《Probability & Statistics for Engineers & Scientists》。

  • 在線版本:

amazon.com/Probability-

再推薦一些網上免費的數學參考書

  • 在線數學教材匯總

people.math.gatech.edu/

  • 免費數學教材

openculture.com/free-ma

  • 開放教材圖書館

open.umn.edu/opentextbo

  • MIT在線教材

ocw.mit.edu/courses/onl

  • 美國數學研究所認證教材

aimath.org/textbooks/ap

AI是一個非常廣闊的領域,每個細分領域都有不同的數學背景要求。掌握所有的數學知識是不可能的,所以你得想清楚對什麼感興趣。

同時推薦一本Russell和Norvig的好書,覆蓋了人工智慧中很多不同的主題。無論你本科學到了什麼,這本書都可以提供了一深入了解AI的良好起點。

這本書是《Artificial Intelligence: A Modern Approach》,中文版名稱《人工智慧:一種現代方法》。

  • 英文版地址在此:

aima.cs.berkeley.edu/

另外附送一份Michael I. Jordan之前開出的書單。

  • 地址在此:

news.ycombinator.com/it

上述在線內容都是合法的。合法的。合法的。

視頻課程

再來就是視頻課程匯總。主要貢獻者包括:72menaleecarrahermindcrimerdrey等。

YouTube以及Videolectures.net上有很多高質量的數學視頻教學內容。

  • 之前提到的David MacKay,合輯在此:

videolectures.net/david

  • Leonard教授合輯在此:

youtube.com/user/profes

  • Gilbert Strang合輯在此:

youtube.com/results?

  • 3Blue1Brown合輯在此:

youtube.com/channel/UCY

  • 還有畫風清奇的Siraj Raval講人工智慧中的數學:

youtube.com/watch?

我的建議是,先快速看一遍Jeremy Howard的講座,這裡面有很多機器學習/AI的應用案例,而且只需要一點點的數學背景就能看懂。

  • 地址在此:

course.fast.ai/

接下來可以去Coursera上吳恩達的新課程,比原來的課程更容易接近,但仍然會有一些方程式讓你不知所措,不過你肯定能實現出來。地址在此:

  • 老課程《機器學習》:

coursera.org/learn/mach

  • 新課程《深度學習》:

coursera.org/specializa

再推薦一個統計學課程,德州大學奧斯汀分校統計和數據科學系Michael J. Mahometa主講的《數據分析基礎》。

  • 地址在此:

courses.edx.org/courses

小建議,在這個課程中講師使用了R語言,我覺得還是Python更好。

另外,Coursera上有一系列的統計課程還不錯。不過貝葉斯統計這門課有點難,建議買一本書或者補充點其他課外資料。我推薦這本書:《Bayes』 Rule: A Tutorial Introduction to Bayesian Analysis》

  • 亞馬遜有售:

amazon.com/Bayes-Rule-T

OMT

想搞機器學習/AI但數學不好的孩子,或者還有?快把這篇發給他。

救救孩子……

二零一七年九月。

傳送門:肉身前往Hacker News觀摩,請點擊左下角「閱讀原文」。

課外閱讀

量子位在知乎上也發現一個質量很高的討論。主要是王乃岩談「如何判斷一個面試者的深度學習水平?」,賈揚清等也參與了回答……

在量子位微信公眾號(QbitAI)對話界面,回復:「naiyan」這六個字母,即刻前往觀摩。

如果你有更好的推薦,歡迎留言,讓更多朋友看到~

— 完 —

歡迎大家關注我們的專欄:量子位 - 知乎專欄

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。

量子位 QbitAI

?? ? 追蹤AI技術和產品新動態


推薦閱讀:

也說bot--一篇survey
從前,夕小瑤種了一棵樹

TAG:机器学习 | 人工智能 | 数学 |