人人可懂的机器学习入门要点和阅读路径:学什么?怎样学?
導(dǎo)讀:這是一篇保證你“看得下去”的文章。讓你真正搞懂機(jī)器學(xué)習(xí)學(xué)什么?怎樣學(xué)?
作者:莫凡
來(lái)源:華章計(jì)算機(jī)(ID:hzbook_jsj)
00?有關(guān)機(jī)器學(xué)習(xí)的三個(gè)問(wèn)題和機(jī)器學(xué)習(xí)“知識(shí)棧”的三個(gè)層
你對(duì)機(jī)器學(xué)習(xí)的直觀感受是什么?
也許許多人的回答兩個(gè)字,科幻。東西是好東西,不過(guò)離自己還很遙遠(yuǎn)。
真是這樣嗎?
掏出手機(jī),美顏美圖用的是機(jī)器學(xué)習(xí);
走出小區(qū),無(wú)人化測(cè)量體溫用的是機(jī)器學(xué)習(xí);
走進(jìn)高鐵站趕回奮斗的城市,刷臉進(jìn)站用的是機(jī)器學(xué)習(xí)。
機(jī)器學(xué)習(xí)已經(jīng)向我們生活的方方面面滲透,也許很快就有那么一天,機(jī)器學(xué)習(xí)就要和水電煤一樣,成為我們生活中再離不了的第四種資源。
你說(shuō),上面這段話就跟心靈雞湯一樣,把人說(shuō)得心里直癢癢,可真的想來(lái)品一口時(shí)才發(fā)現(xiàn)沒(méi)給勺子。
那好,下面想要分享的正是如何開(kāi)始學(xué)習(xí)機(jī)器學(xué)習(xí)。我的方式有點(diǎn)不同,開(kāi)始之前,你首先需要做的是問(wèn)自己三個(gè)問(wèn)題:
第一個(gè)問(wèn)題,我為什么要學(xué)?
第二個(gè)問(wèn)題,我需要學(xué)什么?
第三個(gè)問(wèn)題,我該怎樣去學(xué)?
為什么要先問(wèn)三個(gè)問(wèn)題?這是因?yàn)?#xff0c;機(jī)器學(xué)習(xí)背后有一套龐大的知識(shí)體系,內(nèi)容繁多,而且和網(wǎng)絡(luò)協(xié)議棧一樣,也是分了層的,姑且就稱之為機(jī)器學(xué)習(xí)的“知識(shí)棧”吧。這座知識(shí)棧共分成三個(gè)層。
知識(shí)棧的底層是數(shù)學(xué),可以管它叫“數(shù)學(xué)基礎(chǔ)層”,它在機(jī)器學(xué)習(xí)中作用正如其名,是支撐上層功能運(yùn)轉(zhuǎn)的基石。
中間這層的算法,就叫“算法原理層”吧。機(jī)器學(xué)習(xí)的微觀層面是算法,不是一種算法,而是很多種算法,而且現(xiàn)在還在不斷迭代更新。
最上面的這層是應(yīng)用層,不妨叫“分域應(yīng)用層”。為什么叫分域呢?因?yàn)闄C(jī)器學(xué)習(xí)是一套實(shí)踐之學(xué),是用于解決實(shí)際問(wèn)題的,而現(xiàn)實(shí)世界中的問(wèn)題千千萬(wàn)萬(wàn),不同領(lǐng)域問(wèn)題各不相同,因此,機(jī)器學(xué)習(xí)要逐一解決這些各不相同的領(lǐng)域問(wèn)題,也就延伸出了與之適應(yīng)的分域應(yīng)用。
當(dāng)然,知識(shí)棧只是描繪了機(jī)器學(xué)習(xí)知識(shí)體系的大致結(jié)構(gòu),知識(shí)棧的每一層,還可以繼續(xù)劃分更多更細(xì)的子領(lǐng)域。機(jī)器學(xué)習(xí)的知識(shí)體系枝葉繁茂,而人的時(shí)間和精力則相對(duì)十分有限,正因如此,只有明確了第一個(gè)問(wèn)題,才能回答第二個(gè)問(wèn)題,才能最終決定第三個(gè)問(wèn)題,也就是大家一開(kāi)始最為關(guān)心的問(wèn)題,機(jī)器學(xué)習(xí)應(yīng)該怎么上手。
不過(guò),這三個(gè)問(wèn)題不好回答。
要回答這幾個(gè)問(wèn)題,你首先得對(duì)機(jī)器學(xué)習(xí)的三層知識(shí)棧有所了解,而你現(xiàn)在最大的問(wèn)題,不正是對(duì)機(jī)器學(xué)習(xí)還缺乏比較全面的了解嗎?
正如你第一次走進(jìn)一座很大很大的游樂(lè)園,哪怕你已經(jīng)聽(tīng)說(shuō)了大家對(duì)這座游樂(lè)園評(píng)價(jià)都很高,你也不會(huì)馬上就清楚自己首先應(yīng)該去哪里游玩,甚至游樂(lè)園里都有些什么設(shè)施,要朝哪個(gè)方向走過(guò)去,你都很可能并不清楚。這應(yīng)該是絕大多數(shù)第一次來(lái)玩的游客都面臨的問(wèn)題。
那么,有經(jīng)驗(yàn)的游樂(lè)園會(huì)怎么解決這個(gè)問(wèn)題呢?它會(huì)在大門(mén)入口處設(shè)置一塊大地圖,名叫游玩導(dǎo)覽圖,園區(qū)里有哪些游樂(lè)設(shè)施,又分布在哪個(gè)方向,甚至還會(huì)畫(huà)上設(shè)施的樣子,讓你一目了然。這是個(gè)好辦法。
那么,接下來(lái)我會(huì)按照機(jī)器學(xué)習(xí)知識(shí)棧的三層結(jié)構(gòu),對(duì)機(jī)器學(xué)習(xí)的知識(shí)體系梳理出要點(diǎn)和聯(lián)系。我也知道,市面上名叫機(jī)器學(xué)習(xí)的各類書(shū)籍魚(yú)龍混雜,我會(huì)同時(shí)給出推薦的閱讀書(shū)目供大家參考。
01?數(shù)學(xué)基礎(chǔ)層
機(jī)器學(xué)習(xí)的知識(shí)棧是自底向上構(gòu)建的。那么,我們先從知識(shí)棧的最底層,也就是數(shù)學(xué)基礎(chǔ)層說(shuō)起。
一提到數(shù)學(xué),我和大家的反應(yīng)一樣,苦不堪言。數(shù)學(xué)很重要,大家都知道,可以說(shuō)沒(méi)有數(shù)學(xué),就沒(méi)有計(jì)算機(jī)科學(xué)。可是,數(shù)學(xué)實(shí)在太難學(xué)了,這么多年都沒(méi)學(xué)明白,而且剛一畢業(yè),數(shù)學(xué)就全還給了老師。現(xiàn)在告訴我學(xué)機(jī)器學(xué)習(xí),先得學(xué)習(xí)數(shù)學(xué),難道我還得重修九年義務(wù)教育?
這確實(shí)是許多人對(duì)機(jī)器學(xué)習(xí)望而卻步的主要原因之一。不過(guò),我要告訴大家一個(gè)好消息:機(jī)器學(xué)習(xí)里要學(xué)的數(shù)學(xué),遠(yuǎn)比你想象的要少,要簡(jiǎn)單。
現(xiàn)代數(shù)學(xué)是一套不斷膨脹的公理體系,哪怕是職業(yè)的數(shù)學(xué)家可能也說(shuō)不清楚數(shù)學(xué)全貌。不過(guò)好在,如果將數(shù)學(xué)繪制成一張世界地圖,那機(jī)器學(xué)習(xí)所要學(xué)習(xí)的數(shù)學(xué)知識(shí),只不過(guò)是上面的一座小島嶼,主要涉及線性代數(shù)和概率統(tǒng)計(jì)兩個(gè)方面。
先說(shuō)線性代數(shù)。機(jī)器學(xué)習(xí)需要用到許多運(yùn)算,而線性代數(shù)正是機(jī)器學(xué)習(xí)里的四則運(yùn)算,可謂是構(gòu)成了機(jī)器學(xué)習(xí)的骨架。不過(guò),線性代數(shù)作為一條主要的數(shù)學(xué)分支,內(nèi)容也很不少,好在機(jī)器學(xué)習(xí)只是使用其中的向量和矩陣運(yùn)算,在這個(gè)部分,我推薦《矩陣分析》:
這是一本經(jīng)典的好書(shū),寫(xiě)得很好,不過(guò)不用讀完,建議仔細(xì)讀懂什么是向量空間、什么是矩陣、矩陣的基本運(yùn)算法則,以及正定矩陣和奇異值分解的相關(guān)章節(jié),那么機(jī)器學(xué)習(xí)的“四則運(yùn)算”我們就掌握清楚了。
接下來(lái)是概率統(tǒng)計(jì)。如果我們說(shuō)線性代數(shù)是機(jī)器學(xué)習(xí)的“骨”,那概率統(tǒng)計(jì)應(yīng)該就算是機(jī)器學(xué)習(xí)的“魂”了。這是因?yàn)橛幸慌芍髁饔^點(diǎn)認(rèn)為,機(jī)器學(xué)習(xí)就是個(gè)換了個(gè)皮的統(tǒng)計(jì)學(xué),說(shuō)機(jī)器學(xué)習(xí)的本質(zhì)就是“擬合曲線”。
這里不做爭(zhēng)論,不過(guò)機(jī)器學(xué)習(xí)大量使用概率統(tǒng)計(jì)的概念,確實(shí)是不爭(zhēng)的事實(shí)。在這個(gè)部分,我推薦《概率論基礎(chǔ)教程》:
這本書(shū)的作者是Ross,Ross是統(tǒng)計(jì)學(xué)界的名家,出的教材都是經(jīng)典。建議重點(diǎn)閱讀《概率論基礎(chǔ)教程》中關(guān)于概率、條件概率、貝葉斯概率公式、期望等概念相關(guān)介紹,以及了解各種概率分布,如什么是正態(tài)分布等。
機(jī)器學(xué)習(xí)數(shù)學(xué)方面的書(shū)現(xiàn)在越出越多,讀書(shū)的跟不上出書(shū)的,所以我推薦讀經(jīng)典,而上述的兩本書(shū)都是數(shù)學(xué)領(lǐng)域的經(jīng)典教材,讀過(guò)一定有收獲。
02?算法原理層
底層就這兩樣,接著該說(shuō)算法原理層。
這是機(jī)器學(xué)習(xí)的核心層。機(jī)器學(xué)習(xí)大熱,講機(jī)器學(xué)習(xí)算法的書(shū)也一哄而上,多不勝數(shù),不過(guò),現(xiàn)在市面上的這類書(shū),內(nèi)容大致可以分為兩類,一類是往下靠,也就是往數(shù)學(xué)基礎(chǔ)層靠,翻開(kāi)活脫脫就是一本數(shù)學(xué)教材;另一類是往上靠,也就是往分域應(yīng)用層上靠,走另一個(gè)極端,寫(xiě)成了一本教編程的書(shū)。
雖然說(shuō)機(jī)器學(xué)習(xí)畢竟是一門(mén)實(shí)踐科學(xué), 除了學(xué)各種數(shù)學(xué)公式,最終還要寫(xiě)成代碼運(yùn)行才能真正解決問(wèn)題,不過(guò)如果只懂調(diào)用算法API而不去了解內(nèi)在原理,用得再多也只是手熟的調(diào)包俠。
有沒(méi)有一本書(shū),能兼顧數(shù)學(xué)和應(yīng)用這上下兩層,同時(shí)從初學(xué)者的角度出發(fā),使用比較通俗直白的語(yǔ)言來(lái)撰寫(xiě)?我找了很久,可惜沒(méi)找到,所以我自己寫(xiě)了一本,書(shū)名叫《機(jī)器學(xué)習(xí)算法的數(shù)學(xué)解析與Python實(shí)現(xiàn)》:
這本書(shū)我最開(kāi)始其實(shí)想叫《睡前機(jī)器學(xué)習(xí)》,對(duì),就是我現(xiàn)在公眾號(hào)的名字。我深深地清楚,經(jīng)過(guò)一天拼盡全力的工作有多累,晚上回家還要克服刷視頻的沖動(dòng),放下手機(jī)轉(zhuǎn)為去讀一本又有數(shù)學(xué)又有算法的艱澀的專業(yè)書(shū)有多難。
所以,在華章公司老師的鼓勵(lì)下,我嘗試用一種新的方法介紹機(jī)器學(xué)習(xí),學(xué)習(xí)算法,本該是一次充滿樂(lè)趣的探索之旅。
我認(rèn)為數(shù)學(xué)教材之所以難讀,是因?yàn)閿?shù)學(xué)太多抽象的概念,而讓人更難堅(jiān)持的是數(shù)學(xué)概念之間嵌套引用,要清楚明白一個(gè)數(shù)學(xué)概念,往往需要額外再學(xué)一大串?dāng)?shù)學(xué)概念,而其中往往又包含有嵌套引用,不知道哪里才是頭,所以很容易給人一團(tuán)亂麻、無(wú)從下手的感覺(jué)。
在《機(jī)器學(xué)習(xí)算法的數(shù)學(xué)解析與Python實(shí)現(xiàn)》這本書(shū)中,我嘗試改變這一現(xiàn)狀,只對(duì)反復(fù)使用、必須了解的數(shù)學(xué)概念用最直白最“講人話”的語(yǔ)言進(jìn)行介紹,同時(shí)摒棄背后一大串錯(cuò)綜復(fù)雜的概念,改為結(jié)合直觀形象的例子進(jìn)行說(shuō)明。
我希望在確保本書(shū)容易閱讀的同時(shí),又能比較完整地呈現(xiàn)一幅機(jī)器學(xué)習(xí)的全景圖,成為連接機(jī)器學(xué)習(xí)知識(shí)棧最上層和最下層的“粘合劑”,讓每一個(gè)第一次接觸機(jī)器學(xué)習(xí)的初學(xué)者,都能像看了游樂(lè)園導(dǎo)覽圖一樣,做到心里有數(shù)。這也正是我寫(xiě)作本書(shū)的初衷。對(duì)本書(shū)有任何問(wèn)題,都可以到我的微信公眾號(hào)“睡前機(jī)器學(xué)習(xí)”留言互動(dòng)。
03?分域應(yīng)用層
最后,我們介紹知識(shí)棧的最上層,也就是分域應(yīng)用層。前面我們已經(jīng)說(shuō)過(guò),機(jī)器學(xué)習(xí)是一門(mén)實(shí)踐科學(xué),最終需要編寫(xiě)代碼才能運(yùn)行。在這個(gè)方面,目前主流的做法是使用Python高級(jí)編程語(yǔ)言,調(diào)用Scikit-Learn庫(kù)來(lái)實(shí)現(xiàn)。
Scikit-Learn是當(dāng)前最為知名的Python機(jī)器學(xué)習(xí)算法庫(kù),提供了幾乎所有的主流算法。在這方面,我推薦《機(jī)器學(xué)習(xí)實(shí)戰(zhàn):基于Scikit-Learn和TensorFlow》:
這本書(shū)基本是業(yè)內(nèi)公認(rèn)介紹Scikit-Learn最為清楚的書(shū),同時(shí)還介紹了另一款知名的深度學(xué)習(xí)框架TensorFlow。
和軟件開(kāi)發(fā)項(xiàng)目有生命周期一樣,機(jī)器學(xué)習(xí)的項(xiàng)目也有生命周期,大致可以分為收集數(shù)據(jù)、清洗數(shù)據(jù)、分析數(shù)據(jù)、選擇模型、訓(xùn)練模型和輸出預(yù)測(cè)。也許很多初學(xué)者認(rèn)為最費(fèi)時(shí)間的是選擇模型和訓(xùn)練模型。
其實(shí),最花時(shí)間的反而是對(duì)數(shù)據(jù)的清洗和分析,往往是在生命周期中占了最大一部分。業(yè)界通常選擇使用一款名叫Pandas的Python庫(kù)完成這項(xiàng)工作,這方面的書(shū)推薦《利用Python進(jìn)行數(shù)據(jù)分析(原書(shū)第2版)》:
這本書(shū)非常好,作者就是Pandas的作者本人,權(quán)威性無(wú)可挑剔。而且內(nèi)容非常詳實(shí),由淺入深每一步都寫(xiě)得十分清楚,覆蓋又全,特別適合新手閱讀。
上面提到數(shù)據(jù)處理占據(jù)了機(jī)器學(xué)習(xí)生命周期的最大一部分,而另一大部分是調(diào)參,也就是為模型選擇最合適的參數(shù)。調(diào)參是機(jī)器學(xué)習(xí)算法在應(yīng)用方面的重點(diǎn)也是難點(diǎn),很需要經(jīng)驗(yàn)。
因此,現(xiàn)在業(yè)界的一大發(fā)展前沿,就是自動(dòng)調(diào)參,在這方面我推薦《深入理解AutoML和AutoDL 》,對(duì)這部分發(fā)展做了全面清楚的介紹:
04?深度學(xué)習(xí)
說(shuō)完機(jī)器學(xué)習(xí),說(shuō)另一大熱門(mén)深度學(xué)習(xí)。目前深度學(xué)習(xí)有兩套最熱門(mén)的框架,一套是前面《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》這本書(shū)介紹的Tensorflow,另一套叫Pytorch。
Tensorflow是Google出品,牌子老用戶多,但普遍認(rèn)為語(yǔ)法槽點(diǎn)很多,而由Facebook出品的Pytorch,因?yàn)椤案蠵ython味”現(xiàn)在風(fēng)頭大熱,頗有取而代替TensorFlow之勢(shì)。這方面我推薦《Python深度學(xué)習(xí):基于PyTorch》:
Pytorch的書(shū)不少,不過(guò)由于Pytorch發(fā)展很快,早期0.X版本的很多語(yǔ)法已經(jīng)不再適用,而這本書(shū)使用1.X版本的Pytorch,不會(huì)出現(xiàn)這一問(wèn)題,而且結(jié)合了時(shí)下熱門(mén)的深度學(xué)習(xí)應(yīng)用場(chǎng)景,具有很好的實(shí)踐參考作用。深度學(xué)習(xí)是借著圖像處理聲名鵲起的,這方面我推薦《深度學(xué)習(xí)與圖像識(shí)別:原理與實(shí)踐》:
這本書(shū)對(duì)深度學(xué)習(xí)在圖像識(shí)別方面的應(yīng)用作了比較全面的介紹,不但介紹了熱門(mén)模型,還逐一介紹了目前學(xué)術(shù)界在圖像處理方面的熱門(mén)研究方向,如GAN、圖像識(shí)別和分割等。比較有意思的是,本書(shū)還介紹了KNN算法,算是對(duì)圖像處理算法作了一個(gè)比較全面的回顧了。
05?無(wú)人駕駛
最后,我想介紹一個(gè)經(jīng)常上新聞、科幻感最強(qiáng)、同時(shí)也是了解的人最少、最有神秘感的機(jī)器學(xué)習(xí)分域應(yīng)用:無(wú)人駕駛。這幾年關(guān)于無(wú)人駕駛的討論不少,但更熱衷討論的話題是無(wú)人駕駛衍生的社會(huì)問(wèn)題和倫理問(wèn)題,譬如電車(chē)難題,而對(duì)技術(shù)本身的討論反而少的讓人意外。
我想,這也許是因?yàn)闄C(jī)器學(xué)習(xí)是交叉學(xué)科,而無(wú)人駕駛更是交叉學(xué)科的交叉學(xué)科,涉及機(jī)器人學(xué)、車(chē)輛工程等等復(fù)雜學(xué)科,領(lǐng)域性太強(qiáng),一般人難窺究竟。這方面我推薦《無(wú)人駕駛:原理和實(shí)踐》:
無(wú)人駕駛涉及的學(xué)科方向比較雜,而這本書(shū)把ROS、點(diǎn)云匹配、圖像識(shí)別、傳感器等構(gòu)成無(wú)人駕駛的幾個(gè)重要方面都涵蓋在內(nèi),相當(dāng)于給無(wú)人駕駛做了一次全景式展示。
本文系《機(jī)器學(xué)習(xí)算法的數(shù)學(xué)解析與Python實(shí)現(xiàn)》作者莫凡2月16日的直播內(nèi)容整理,直播錄像可識(shí)別下方二維碼觀看。
有話要說(shuō)????
Q:?你的學(xué)習(xí)進(jìn)行到了哪一層?
歡迎留言與大家分享
猜你想看????
什么是大數(shù)據(jù)「實(shí)時(shí)流計(jì)算」?深度解析它的4大應(yīng)用及4個(gè)特點(diǎn)
什么是機(jī)器學(xué)習(xí)?有哪些分類?怎樣上手開(kāi)發(fā)?終于有人講明白了
世界上第一位程序員,竟然是詩(shī)人拜倫的女兒?
美國(guó)又禁華為?7本書(shū),助力網(wǎng)絡(luò)安全產(chǎn)業(yè)國(guó)產(chǎn)化、自主可控
更多精彩????
在公眾號(hào)對(duì)話框輸入以下關(guān)鍵詞
查看更多優(yōu)質(zhì)內(nèi)容!
PPT?|?讀書(shū)?|?書(shū)單?|?硬核?|?干貨?
大數(shù)據(jù)?|?揭秘?|?Python?|?可視化
AI?|?人工智能?|?5G?|?中臺(tái)
機(jī)器學(xué)習(xí)?|?深度學(xué)習(xí)?|?神經(jīng)網(wǎng)絡(luò)
合伙人?|?1024?|?大神?|?數(shù)學(xué)
據(jù)統(tǒng)計(jì),99%的大咖都完成了這個(gè)神操作
????
總結(jié)
以上是生活随笔為你收集整理的人人可懂的机器学习入门要点和阅读路径:学什么?怎样学?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 为什么Flink会成为下一代大数据处理框
- 下一篇: 从上云到云原生,如何用新技术应对突发事件