機(jī)器學(xué)習(xí)與攻略力薦
2016年3月,google的AlphaGo對(duì)弈國(guó)際尖端圍棋棋手韓國(guó)人李世石。終究,AlphaGo以五局四勝的戰(zhàn)績(jī)擊敗李世石,一時(shí)風(fēng)景無(wú)限,同時(shí)也在網(wǎng)絡(luò)上極大的激起了小伙伴們對(duì)人工智能(AI)的愛(ài)好。歲末年初,一個(gè)名叫“Master”的神秘網(wǎng)絡(luò)圍棋手轟動(dòng)了圍棋界,自去年12月29日開(kāi)始,它在幾個(gè)知名圍棋對(duì)戰(zhàn)平臺(tái)上輪番挑戰(zhàn)中日韓圍棋高手,并在1月3日晚間擊敗了中國(guó)頂級(jí)圍棋手柯潔,取得了50勝0負(fù)的驚人戰(zhàn)績(jī)。人們紛紛猜測(cè)“Master”就是谷歌人工智能AlphaGo的升級(jí)版。謎底很快被揭曉,就在Master取得第59場(chǎng)連勝后,Master賬號(hào)宣布自己就是AlphaGo。各種媒體對(duì)此番交戰(zhàn)大肆報(bào)道,某些電視上的談話節(jié)目甚至以“人工智能在未來(lái)會(huì)否搶去人類飯碗”之類的話題展開(kāi)熱烈討論。
其實(shí)人機(jī)大戰(zhàn)這也不是頭一次了。早在二十年前,國(guó)際象棋特級(jí)大師,世界冠軍卡斯帕羅夫就曾與IBM公司的超級(jí)電腦“深藍(lán)”之間進(jìn)行過(guò)終極對(duì)抗。在總共的六局比賽里,卡斯帕羅夫最終以五平一負(fù)的戰(zhàn)績(jī)宣告敗北。盡管當(dāng)時(shí)媒體也有報(bào)道,但遠(yuǎn)遠(yuǎn)沒(méi)有引起像最近這一兩年來(lái)AlphaGo這樣的話題熱度。原因何在?天時(shí)也!IT界無(wú)論是小伙伴還是祖國(guó)的老花朵都意識(shí)到人工智能時(shí)代真的來(lái)了。去年在烏鎮(zhèn)召開(kāi)的世界互聯(lián)網(wǎng)大會(huì)上,百度CEO李彥宏就表示:移動(dòng)互聯(lián)網(wǎng)時(shí)代已經(jīng)結(jié)束,未來(lái)屬于人工智能!
于是乎,眾多小伙伴,無(wú)論是IT從業(yè)者,還是尚處在學(xué)校的青年學(xué)子,紛紛摩拳擦掌,躍躍欲試,希望至少不要被AI時(shí)代給落下。然而,要進(jìn)入人工智能這個(gè)圈子,卻要比從“Java程序員轉(zhuǎn)成C++程序員”難太多了,很多人對(duì)此都表示望而卻步或者望洋興嘆。很多人都是無(wú)頭蒼蠅,不得其法,好像功夫也沒(méi)少下,但卻還是只能在門(mén)外轉(zhuǎn)悠。我希望下面的一些建議能讓大家少走一些彎路或者盡快走上正路。(注意:我可沒(méi)說(shuō)是有捷徑可走!畢竟有一些坎始終無(wú)法繞過(guò)去,這就如同一個(gè)無(wú)形的篩子擺在那一樣,很多人會(huì)被其“過(guò)濾”掉。)
一、數(shù)學(xué)——萬(wàn)般無(wú)奈皆源此
最近讀了一篇熱文《放棄幻想,搞AI必須先過(guò)數(shù)學(xué)關(guān)》(你可以從參考鏈接【1】中瀏覽該文全文),文章基本已經(jīng)把數(shù)學(xué)之于AI的重要性闡釋的比較清楚,我只略截取一些核心內(nèi)容(相信每個(gè)過(guò)來(lái)人都會(huì)有此共同心聲):
“在 AI 學(xué)習(xí)的入門(mén)階段,數(shù)學(xué)是主要的攻堅(jiān)對(duì)象,任何胸有大志的 AI 學(xué)習(xí)者都不要幻想繞過(guò)數(shù)學(xué)。” 盡管 AI 工具化的可能性是有的,而且是必然,趨勢(shì)很明顯。所以很多時(shí)候AI工程師并不像程序開(kāi)發(fā)人員那樣強(qiáng)調(diào)編碼的能力與經(jīng)驗(yàn),更多的時(shí)候AI工程師是在使用各種框架,調(diào)用各種現(xiàn)成的函數(shù)庫(kù)、軟件包等等。但是,“數(shù)學(xué)不過(guò)關(guān)的人在 AI 這個(gè)圈子里是無(wú)法參與交流的,或者說(shuō)得直白一點(diǎn),是被人瞧不起的,根本無(wú)法被接納成為AI 圈子里的人。其次,數(shù)學(xué)不過(guò)關(guān)而只能調(diào)參數(shù)的人,實(shí)踐當(dāng)中并不好用。第三,即便是調(diào)參這件事情本身,懂不懂?dāng)?shù)學(xué)也是有很大差別的?!?/p>
說(shuō)的很多小伙伴恐怕心都涼了一半,或者已經(jīng)開(kāi)始打退堂鼓了。不要緊,山人自有妙法。下面就給大家分享一下我的數(shù)學(xué)學(xué)習(xí)經(jīng)驗(yàn),主要是一些資源(書(shū)籍或者視頻課程)。人工智能(機(jī)器學(xué)習(xí)或數(shù)據(jù)挖掘等)中最最重要的數(shù)學(xué)就是線性代數(shù)與概率論(還有其他,但這兩者比重最大)。
1、線性代數(shù)
很多人會(huì)推薦MIT的線性代數(shù)公開(kāi)課(確實(shí)不錯(cuò)),但是很多中國(guó)學(xué)生聽(tīng)英文課仍然有障礙,即使有字幕翻譯,恐怕也會(huì)影響學(xué)習(xí)速度,所以我推薦臺(tái)灣國(guó)立交通大學(xué)莊重特聘教授主講的線性代數(shù)課程,本課程分上下兩個(gè)學(xué)期:
- http://ocw.nctu.edu.tw/course_detail.php?bgid=1&gid=1&nid=271#.WKm5gxBCtsA
- http://ocw.nctu.edu.tw/course_detail.php?bgid=1&gid=1&nid=361#.WKm5gxBCtsA
我個(gè)人認(rèn)為本課程的特色包括:
1)老師講得非常非常細(xì)致,如果你循序漸進(jìn)跟著學(xué),絕對(duì)可以聽(tīng)得懂;
2)這門(mén)課程其實(shí)是從泛函的角度來(lái)講解線性代數(shù)(同時(shí)兼顧了矩陣角度),會(huì)幫你建立一種更加高屋建瓴的線性代數(shù)觀念;
3)課程與實(shí)際應(yīng)用結(jié)合非常緊密,像最小二乘法、奇異值分解SVD等在機(jī)器學(xué)習(xí)非常重要的內(nèi)容都有深入探討。
同時(shí),本課程所選用的教材也是你自學(xué)線性代數(shù)的一本上乘之選(網(wǎng)上可以找到本書(shū)的PDF版):
- Linear Algebra 4th Edition,? Stephen Friedberg, Arnold Insel, Lawrence Spence,Prentice Hall

如果想自學(xué),或者僅僅是溫故以往所學(xué)的線性代數(shù),那么下面這本從矩陣角度解釋線性代數(shù)的書(shū)可能更適合中國(guó)人的閱讀習(xí)慣,這本書(shū)里對(duì)于最小二乘法、SVD等內(nèi)容亦有涉及。
- 線性代數(shù)及其應(yīng)用 (原書(shū)第3版) David C Lay著,劉深泉等譯,機(jī)械工業(yè)出版社
目前這本書(shū)的中英文版國(guó)內(nèi)都可以買(mǎi)到:


2、概率論
有一個(gè)非常非常簡(jiǎn)單的入門(mén)課——國(guó)立臺(tái)灣大學(xué)葉丙成的概率課:
- http://mooc.guokr.com/course/461/%E6%A9%9F%E7%8E%87/
但是上面這個(gè)課屬于掃盲課,如果你覺(jué)得深度還不夠,那么我還是推薦你從下面這些書(shū)籍中找一本來(lái)作為參考,因?yàn)楦怕收摲矫娴臅?shū)特別特別多,我推薦幾本各具特色的:
1)首先是由Sheldon M. Ross編寫(xiě)的《概率論基礎(chǔ)教程(第9版)》,這是一本在世界范圍內(nèi)被廣泛使用的教材,內(nèi)容嚴(yán)謹(jǐn)而且全面。鑒于概率論是大學(xué)本科階段的必修內(nèi)容,如果你不是忘掉太多,其實(shí)并不用重頭開(kāi)始學(xué),所以備這樣一本書(shū),偶爾翻查一下也是不錯(cuò)的選擇。


像概率里面的期望、方差、概率密度函數(shù)、邊緣分布、貝葉斯定理、全概率公式、矩母函數(shù)、二項(xiàng)分布、高斯分布、貝塔分布等等在機(jī)器學(xué)習(xí)中都非常非常重要。最后這本算是概率學(xué)習(xí)里面比較深的一本(也非常經(jīng)典),供有深入學(xué)習(xí)需求的人研讀。
3)概率與計(jì)算——隨機(jī)算法與概率分析,Michael M. & Eli Upfal 著
??
3、統(tǒng)計(jì)學(xué)
注意統(tǒng)計(jì)和概率是不一樣的,盡管它們的關(guān)系實(shí)在太緊密,所以講概率的書(shū)里往往也會(huì)插入一些統(tǒng)計(jì)方面的知識(shí)。但還是專門(mén)講統(tǒng)計(jì)的書(shū)更專注一些。統(tǒng)計(jì)的書(shū)挺多,但是非統(tǒng)計(jì)專業(yè),也不必學(xué)得太深。
1)統(tǒng)計(jì)學(xué)(第四版),賈俊平等編著。這是國(guó)內(nèi)高校普遍使用的一本教材,我覺(jué)得條例是比較清晰的,講解也比較到位,如果你要系統(tǒng)地學(xué),那么它是一個(gè)不錯(cuò)的選擇。

2)R語(yǔ)言實(shí)戰(zhàn)——機(jī)器學(xué)習(xí)與數(shù)據(jù)分析,這是博主夾帶的私貨。不要被名字遮住眺望的眼睛,這里的“數(shù)據(jù)分析”主要是指統(tǒng)計(jì)數(shù)據(jù)分析,所以這本書(shū)里有1/3在講解統(tǒng)計(jì)知識(shí),而且是剝掉冗余只留干活地收錄了幾乎所有你該知道的統(tǒng)計(jì)知識(shí)(甚至包括非參數(shù)檢驗(yàn)的內(nèi)容),R語(yǔ)言是輔助統(tǒng)計(jì)計(jì)算的工具,便于向你演示一些統(tǒng)計(jì)方法的具體細(xì)節(jié)。

3)統(tǒng)計(jì)推斷是統(tǒng)計(jì)學(xué)的核心。統(tǒng)計(jì)推斷一般包括參數(shù)估計(jì)和假設(shè)檢驗(yàn)兩個(gè)部分。其中假設(shè)檢驗(yàn)包括參數(shù)假設(shè)檢驗(yàn)和非參數(shù)檢驗(yàn)兩類。參數(shù)估計(jì)又包括點(diǎn)估計(jì)和區(qū)間估計(jì)兩種,而點(diǎn)估計(jì)的方法主要有矩方法和極大似然法。如果你覺(jué)得希望在統(tǒng)計(jì)推斷方面有跟深入的研究,那么下面這本書(shū)就是一個(gè)比較經(jīng)典的讀物。

4、高等數(shù)學(xué)(或者叫微積分)
通常微積分部分在AI中的占比不如線性代數(shù)和概率,這其實(shí)也主要是因?yàn)槲覀兗僭O(shè)像“求導(dǎo)計(jì)算”這樣的基本功,上過(guò)大學(xué)的人應(yīng)該都已經(jīng)掌握。在機(jī)器學(xué)習(xí)的公式推導(dǎo)中,一般求導(dǎo)公式,鏈?zhǔn)椒▌t,分部積分法、偏導(dǎo)數(shù),這些內(nèi)容都是家常便飯,如果你的記憶已經(jīng)模糊,那么其實(shí)上學(xué)時(shí)的高數(shù)教材就可以涵蓋這些必要的計(jì)算技巧。例如:
- 同濟(jì)大學(xué)版的 高等數(shù)學(xué)(上、下)(第5版及以后)
一般這套書(shū)工科大學(xué)上課都會(huì)用到。書(shū)比較嚴(yán)謹(jǐn),也比較經(jīng)典,如果自學(xué)感覺(jué)比較枯燥,當(dāng)字典查查也不錯(cuò),比如公式忘了就翻翻看。


如果你基礎(chǔ)不錯(cuò),還沒(méi)忘光,可以在不確定的地方翻翻看該書(shū)。如果你想復(fù)習(xí)或者重新學(xué),或者有的地方書(shū)上講得看不懂,我推薦看國(guó)防科大的MOOC視頻課(朱健民教授主講):
- http://www.icourse163.org/university/NUDT#/c,高等數(shù)學(xué)(一)(二)(三)(四)(五)
因?yàn)槿空n程有100集之多,可能相當(dāng)考驗(yàn)學(xué)習(xí)者的毅力。個(gè)人認(rèn)為在機(jī)器學(xué)習(xí)里會(huì)用到的地方主要是泰勒展開(kāi)(牛頓法的基礎(chǔ))、梯度的概念(在學(xué)習(xí)梯度下降,你當(dāng)然應(yīng)該知道梯度的意義),和一些基本的最優(yōu)化問(wèn)題求解等。
5、其他數(shù)學(xué)書(shū)
有些東西或是“跳出三界外,不在無(wú)形中”,或是“哪里都講,但哪里又都不講全”,對(duì)于這類問(wèn)題,似乎也只能找些非常專門(mén)的書(shū)來(lái)參考了。比如拉格朗日乘數(shù)法,在機(jī)器學(xué)習(xí)里也算是比較常用的技巧了,在SVM里會(huì)出現(xiàn),在多元邏輯回歸時(shí)也會(huì)出現(xiàn),要想學(xué)習(xí)學(xué)習(xí)它,有些微積分的書(shū)里會(huì)講,有些泛函分析的書(shū)里也會(huì)講,但是為了學(xué)習(xí)拉格朗日乘數(shù)法把泛函分析也學(xué)一遍,好像又有點(diǎn)太麻煩。不如直接學(xué)凸優(yōu)化吧!
1)凸優(yōu)化——這也算是備受推崇的一本書(shū)了,SVM的推導(dǎo)核心就是凸優(yōu)化的具體應(yīng)用,名聲在外,不多贅述。

2)應(yīng)用回歸分析(第三版),何曉群,等編著?!盎貧w”(包括線性回歸及其推廣)是個(gè)比較特殊的存在。早在機(jī)器學(xué)習(xí)誕生之前很久很久,它就已經(jīng)存在了,更多的時(shí)候研究它的人都是統(tǒng)計(jì)學(xué)家。所以現(xiàn)在在統(tǒng)計(jì)學(xué)(或者計(jì)量經(jīng)濟(jì)學(xué))的教材里面都有回歸的一席之地。而回歸分析也在機(jī)器學(xué)習(xí)中舉重若輕,是機(jī)器學(xué)習(xí)中的一類重要方法。但是機(jī)器學(xué)習(xí)書(shū)籍的作者往往會(huì)認(rèn)為,那些修過(guò)統(tǒng)計(jì)的人對(duì)于回歸已經(jīng)很熟悉了,或者他們的讀者可以干脆找本統(tǒng)計(jì)的書(shū)來(lái)看,所以一般的機(jī)器學(xué)習(xí)書(shū)里并不太重視回歸話題的探討(有的書(shū)會(huì)提到,但篇幅都有限)。如果你對(duì)回歸很感興趣,那么不妨看看下面這本專門(mén)講回歸的書(shū)。

6、一些機(jī)器學(xué)習(xí)書(shū)中的數(shù)學(xué)基礎(chǔ)部分
因?yàn)閿?shù)學(xué)對(duì)于機(jī)器學(xué)習(xí)來(lái)說(shuō)太重要了,某些機(jī)器學(xué)習(xí)方面的書(shū)還會(huì)專門(mén)開(kāi)辟章節(jié)“提綱挈領(lǐng)”地給出閱讀后續(xù)內(nèi)容所必須的數(shù)學(xué)基礎(chǔ)。如果你自我感覺(jué)數(shù)學(xué)還不錯(cuò),那么你大可以看看下面這個(gè)兩部書(shū)中的相關(guān)章節(jié),如果你感覺(jué)作者所列之內(nèi)容皆了然于心,那倒也省卻諸多繁冗。但如若有些坑還不能填上,那么其實(shí)也可以按圖索驥找些資料來(lái)看,好處是定位精準(zhǔn),所學(xué)即所需;不好的地方在于,數(shù)學(xué)知識(shí)之間的牽連深廣,可能你不會(huì)的知識(shí)點(diǎn)是A,當(dāng)你去找關(guān)于A的資料來(lái)看時(shí),返現(xiàn)其中又用到了B,所以也又不得不去找B方面的資料來(lái)看,而且這個(gè)鏈條還可能繼續(xù)延伸下去。所以各種利弊只有你冷暖自知了。
1)Chris Bishop, Pattern Recognition And Machine Learning,這本是機(jī)器學(xué)習(xí)里面的經(jīng)典之作,其中第1、2章介紹了一些在閱讀書(shū)籍時(shí)所必備的數(shù)學(xué)基礎(chǔ)。
2)Ian Goodfellow , Yoshua Bengio , Aaron Courville,Deep Learning,本書(shū)第2、3、4章分別介紹線性代數(shù)、概率與信息論、數(shù)值計(jì)算。
一不小心現(xiàn)已寫(xiě)了這么多了,誰(shuí)讓數(shù)學(xué)在AI中的重量這么重呢。好在跟數(shù)學(xué)有關(guān)的材料我現(xiàn)已都引薦到了,后續(xù)文章中我們?cè)賮?lái)詳細(xì)談機(jī)器學(xué)習(xí)和數(shù)據(jù)發(fā)掘方面的材料吧 :)