---來自BAT機器學(xué)習(xí)工程師的理性分析
前言
近年來桦沉,隨著 Google 的 AlphaGo 打敗韓國圍棋棋手李世石之后,機器學(xué)習(xí)尤其是深度學(xué)習(xí)的熱潮席卷了整個IT界金闽。所有的互聯(lián)網(wǎng)公司纯露,尤其是 Google 微軟,百度代芜,騰訊等巨頭埠褪,無不在布局人工智能技術(shù)和市場。百度挤庇,騰訊钞速,阿里巴巴,京東嫡秕,等互聯(lián)網(wǎng)巨頭甚至都在美國硅谷大肆高薪挖掘人工智能人才】视铮現(xiàn)在在北京,只要是機器學(xué)習(xí)算法崗位昆咽,少則月薪 20k驾凶,甚至100k 以上……
不錯,新時代時代來了掷酗,我們從互聯(lián)網(wǎng)走向移動互聯(lián)網(wǎng)狭郑,現(xiàn)在又從移動互聯(lián)網(wǎng)走向人工智能時代。業(yè)內(nèi)有人稱這一次的人工智能爆發(fā)是互聯(lián)網(wǎng)3.0時代的開啟汇在。所以現(xiàn)在搞IT開發(fā)的工程師的不懂機器學(xué)習(xí)翰萨,就相當(dāng)于低級程序員。趕緊從基礎(chǔ)學(xué)起糕殉,入門機器學(xué)習(xí)亩鬼,走進人工智能的大門……
1、人工智能的三起三落
20世紀(jì)50-70年代阿蝶,人工智能提出后雳锋,力圖模擬人類智慧,但是由于過分簡單的算法羡洁、匱乏的難以應(yīng)對不確定環(huán)境的理論玷过,以及計算能力的限制,逐漸冷卻。
20世紀(jì)80年代辛蚊,人工智能的關(guān)鍵應(yīng)用——專家系統(tǒng)得以發(fā)展粤蝎,但是數(shù)據(jù)較少,難以捕捉專家的隱性知識袋马,建造和維護大型系統(tǒng)的復(fù)雜性和成本也使得人工智能漸漸不被主流計算機科學(xué)所重視初澎。
進入20世紀(jì)90年代,神經(jīng)網(wǎng)絡(luò)虑凛、遺傳算法等科技“進化”出許多解決問題的最佳方案碑宴,于是21世紀(jì)前10年,復(fù)興人工智能研究進程的各種要素桑谍,例如摩爾定律延柠、大數(shù)據(jù)、云計算和新算法等锣披,推動人工智能在20世界20年代進入快速增長時期贞间。預(yù)計未來十年,會在一些難以逾越的困惑中迎來奇點時代的爆發(fā)式增長盈罐。
2榜跌、新浪潮為什么會崛起
人工智能(AI)問世之初曾經(jīng)狂妄自大闪唆、令人失望盅粪,它如何突然變成當(dāng)今最熱門的技術(shù)領(lǐng)域?這個詞語首次出現(xiàn)在1956年的一份研究計劃書中悄蕾。該計劃書寫道:“只要精心挑選一群科學(xué)家票顾,讓他們一起研究一個夏天,就可以取得重大進展帆调,使機器能夠解決目前只有人類才能解決的那些問題奠骄。”至少可以說番刊,這種看法過于樂觀含鳞。盡管偶有進步,但AI在人們心目中成為了言過其實的代名詞芹务,以至于研究人員基本上避免使用這個詞語蝉绷,寧愿用“專家系統(tǒng)”或者“神經(jīng)網(wǎng)絡(luò)”代替≡姹В“AI”的平反和當(dāng)前的熱潮可追溯到2012年的ImageNet Challenge在線競賽熔吗。
ImageNet是一個在線數(shù)據(jù)庫,包含數(shù)百萬張圖片佳晶,全部由人工標(biāo)記桅狠。每年一度的ImageNet Challenge競賽旨在鼓勵該領(lǐng)域的研究人員比拼和衡量他們在計算機自動識別和標(biāo)記圖像方面的進展。他們的系統(tǒng)首先使用一組被正確標(biāo)記的圖像進行訓(xùn)練,然后接受挑戰(zhàn)中跌,標(biāo)記之前從未見過的測試圖像咨堤。在隨后的研討會上,獲勝者分享和討論他們的技術(shù)晒他。2010年吱型,獲勝的那個系統(tǒng)標(biāo)記圖像的準(zhǔn)確率為72%(人類平均為95%)。2012年陨仅,多倫多大學(xué)教授杰夫·辛頓(Geoff Hinton)領(lǐng)導(dǎo)的一支團隊?wèi){借一項名為“深度學(xué)習(xí)”的新技術(shù)大幅提高了準(zhǔn)確率津滞,達到85%。后來在2015年的ImageNet Challenge競賽中灼伤,這項技術(shù)使準(zhǔn)確率進一步提升至96%触徐,首次超越人類。
不錯狐赡,這一切都歸功于一個概念:“ **深度學(xué)習(xí)(Deep Learning)** ”撞鹉。雖然2016年之前,深度學(xué)習(xí)技術(shù)已經(jīng)火了起來颖侄,但是真正大爆發(fā)的事件卻是2016年Google在韓國首爾舉行的人工智能機器人AlphaGo與圍棋九段選手李世石之間的**人機五翻棋大戰(zhàn)**鸟雏,最終人類最強選手輸給了機器人。曾幾時何览祖,人們認(rèn)為圍棋是人類棋牌類游戲的最后的尊嚴(yán)陣地孝鹊,就這樣在人工智能輕松地攻陷了人類智力的最后一塊陣地!這件事震驚了所有人展蒂。從這以后又活,全球?qū)W術(shù)界和工業(yè)界都躁動了,巨頭們都在加緊布局人工智能:Google挖來了**神經(jīng)網(wǎng)絡(luò)**算法的奠基人锰悼、深度學(xué)習(xí)之父 Geoffrey Hinton柳骄;Facebook則挖到了Hinton的學(xué)生,**卷積神經(jīng)網(wǎng)絡(luò)(CNN)**的奠基人Yann LeCun箕般;然而就在不到一年的時間耐薯,微軟也是說動了一直保持中立留在學(xué)術(shù)界的深度學(xué)習(xí)領(lǐng)域三大牛的最后一位Yoshua Bengio。當(dāng)然丝里,國內(nèi)的互聯(lián)網(wǎng)巨頭曲初,百度、阿里丙者、騰訊复斥、京東、滴滴械媒、美團等也都在布局AI目锭。其中百度更是被認(rèn)為在AI上已經(jīng) All In 了评汰,京東的劉強東也在內(nèi)部年會上說五年后快遞將實現(xiàn)全機器人時代……
3、機器學(xué)習(xí)是你必經(jīng)之路
入門AI痢虹,機器學(xué)習(xí)是必須要學(xué)習(xí)的被去,可以這么說:機器學(xué)習(xí)是人工智能的基石和精髓。只有學(xué)好了機器學(xué)習(xí)算法原理和思想奖唯,你才算真正的入門人工智能惨缆。但是,對于非專業(yè)的半路出家的你們該如何入門丰捷?這個問題其實很難回答坯墨,因為每個人的目標(biāo)不一樣,技術(shù)基礎(chǔ)和數(shù)學(xué)基礎(chǔ)也都不一樣病往,所以因人而異捣染。但是通常來說,學(xué)習(xí)機器學(xué)習(xí)算法停巷,需要的必備知識還是可以羅列的耍攘。
3.1 機器學(xué)習(xí)必備基礎(chǔ)
機器學(xué)習(xí)的學(xué)習(xí)過程
對于上圖,之所以最左邊寫了『數(shù)學(xué)基礎(chǔ)』 『經(jīng)典算法學(xué)習(xí)』 『編程技術(shù)』 三個并行的部分畔勤,是因為機器學(xué)習(xí)是一個將數(shù)學(xué)蕾各、算法理論和工程實踐緊密結(jié)合的領(lǐng)域像啼,需要扎實的理論基礎(chǔ)幫助引導(dǎo)數(shù)據(jù)分析與模型調(diào)優(yōu)猖闪,同時也需要精湛的工程開發(fā)能力去高效化地訓(xùn)練和部署模型和服務(wù)膀捷。
在互聯(lián)網(wǎng)領(lǐng)域從事機器學(xué)習(xí)的人基本上屬于以下兩種背景:其中絕大部分是程序員出身著瓶,這類童鞋工程經(jīng)驗相對會多一些;另一部分是學(xué)數(shù)學(xué)統(tǒng)計領(lǐng)域的类垫,這部分童鞋理論基礎(chǔ)相對扎實一些。因此對比上圖,這二類童鞋入門機器學(xué)習(xí)仔掸,所欠缺和需要加強的部分是不一樣的。
3.1.1 關(guān)于數(shù)學(xué)
曾經(jīng)有無數(shù)的滿懷激情医清,誓要在機器學(xué)習(xí)領(lǐng)域有一番作為的同學(xué)起暮,在看到公式的一刻突然就覺得自己狗帶了。是的会烙,機器學(xué)習(xí)之所以門檻高并且顯得高大上的主要原因就是數(shù)學(xué)负懦。每一個算法,要在訓(xùn)練集上最大程度擬合同時又保證泛化能力柏腻,需要不斷分析結(jié)果和數(shù)據(jù)纸厉,調(diào)優(yōu)參數(shù),這需要我們對數(shù)據(jù)分布和模型底層的數(shù)學(xué)原理有一定的理解五嫂。所幸的是如果只是想合理應(yīng)用機器學(xué)習(xí)颗品,而不是做相關(guān)方向高精尖的研究肯尺,所需要的數(shù)學(xué)知識讀完本科的理工科童鞋還是能很容易的把這些數(shù)學(xué)知識學(xué)明白的。
基本所有常見機器學(xué)習(xí)算法需要的數(shù)學(xué)基礎(chǔ)躯枢,都集中在微積分则吟、線性代數(shù)和概率與統(tǒng)計當(dāng)中。下面我們先過一過知識重點锄蹂,文章的后部分會介紹一些幫助學(xué)習(xí)和鞏固這些知識的資料氓仲。
-
微積分
微分的計算及其幾何、物理含義得糜,是機器學(xué)習(xí)中大多數(shù)算法的求解過程的核心敬扛。比如算法中運用到梯度下降法、牛頓法等朝抖。如果對其幾何意義有充分的理解舔哪,就能理解“梯度下降是用平面來逼近局部,牛頓法是用曲面逼近局部”槽棍,能夠更好地理解運用這樣的方法捉蚤。
凸優(yōu)化和條件最優(yōu)化的相關(guān)知識在算法中的應(yīng)用隨處可見,如果能有系統(tǒng)的學(xué)習(xí)將使得你對算法的認(rèn)識達到一個新高度炼七。
線性代數(shù)
大多數(shù)機器學(xué)習(xí)的算法要應(yīng)用起來缆巧,依賴于高效的計算,這種場景下豌拙,程序員童鞋們習(xí)慣的多層for循環(huán)通常就行不通了陕悬,而大多數(shù)的循環(huán)操作可轉(zhuǎn)化成矩陣之間的乘法運算,這就和線性代數(shù)有莫大的關(guān)系了按傅。向量的內(nèi)積運算更是隨處可見捉超。矩陣乘法與分解在機器學(xué)習(xí)的主成分分析(PCA)和奇異值分解(SVD) 等部分呈現(xiàn)刷屏狀地出現(xiàn)。
奇異值分解過程示意圖
在機器學(xué)習(xí)領(lǐng)域唯绍,有相當(dāng)多的應(yīng)用與奇異值分解都有非常緊密的聯(lián)系拼岳,比如機器學(xué)習(xí)中常做feature reduction的PCA,做數(shù)據(jù)壓縮(以圖像壓縮為代表)的算法况芒,還有做搜索引擎語義層次檢索的LSI(Latent Semantic Indexing)
概率與統(tǒng)計
從廣義來說惜纸,機器學(xué)習(xí)在做的很多事情,和統(tǒng)計層面數(shù)據(jù)分析和發(fā)掘隱藏的模式绝骚,是非常類似的耐版。以至于傳統(tǒng)的機器學(xué)習(xí)很大一部分被稱作統(tǒng)計學(xué)習(xí)理論,這充分說明了統(tǒng)計學(xué)在機器學(xué)習(xí)領(lǐng)域的重要性压汪。
極大似然思想粪牲、貝葉斯模型是理論基礎(chǔ),樸素貝葉斯(NaiveBayes)止剖、語言模型(Ngram)腺阳、隱馬爾科夫(HMM)湿滓、隱變量混合概率模型是他們的高級形態(tài)。常見分布如高斯分布是混合高斯模型(GMM)等的基礎(chǔ)舌狗。
3.1.2 經(jīng)典算法的學(xué)習(xí)
機器學(xué)習(xí)中有很多的經(jīng)典算法:感知機叽奥,KNN,樸素貝葉斯痛侍,K-Means朝氓,SVM,AdaBoost主届,EM赵哲,決策樹,隨機森林君丁,GDBT枫夺,HMM……
算法這么多,那么對于初學(xué)者應(yīng)該怎么學(xué)習(xí)呢绘闷?我的答案是:分門別類很重要橡庞。基本上印蔗,對機器學(xué)習(xí)算法的分類普遍的觀點是分為三大類:有監(jiān)督學(xué)習(xí)扒最,無監(jiān)督學(xué)習(xí),強化學(xué)習(xí)华嘹。
-
有監(jiān)督學(xué)習(xí)
有監(jiān)督學(xué)習(xí)是指進行訓(xùn)練的數(shù)據(jù)包含兩部分信息:特征向量 + 類別標(biāo)簽吧趣。也就是說,他們在訓(xùn)練的時候每一個數(shù)據(jù)向量所屬的類別是事先知道的耙厚。在設(shè)計學(xué)習(xí)算法的時候强挫,學(xué)習(xí)調(diào)整參數(shù)的過程會根據(jù)類標(biāo)進行調(diào)整,類似于學(xué)習(xí)的過程中被監(jiān)督了一樣薛躬,而不是漫無目標(biāo)地去學(xué)習(xí)俯渤,故此得名。下圖中泛豪,不同顏色的點代表不同的類別稠诲,直線就是我們學(xué)習(xí)出來的分界面(也叫學(xué)習(xí)器侦鹏,分類器)诡曙。
典型的有監(jiān)督學(xué)習(xí)
無監(jiān)督學(xué)習(xí)
相對于有監(jiān)督而言,無監(jiān)督方法的訓(xùn)練數(shù)據(jù)沒有類標(biāo)略水,只有特征向量价卤。甚至很多時候我們都不知道總共的類別有多少個。因此渊涝,無監(jiān)督學(xué)習(xí)就不叫做分類慎璧,而往往叫做 聚類床嫌。就是采用一定的算法,把特征性質(zhì)相近的樣本聚在一起成為一類胸私。
K-Means算法就是一個無監(jiān)督學(xué)習(xí)算法厌处,在它執(zhí)行前數(shù)據(jù)是每有類標(biāo)的,執(zhí)行過程中才會有類標(biāo)岁疼,但是此時類標(biāo)不固定阔涉,只有當(dāng)聚類完成后每個樣本的類標(biāo)才能固定。如下圖所示就是無監(jiān)督算法的執(zhí)行過程捷绒。
-
強化學(xué)習(xí)
所謂強化學(xué)習(xí)就是智能系統(tǒng)從環(huán)境到行為映射的學(xué)習(xí)瑰排,以使獎勵信號(強化信號)函數(shù)值最大,強化學(xué)習(xí)不同于連接主義學(xué)習(xí)中的監(jiān)督學(xué)習(xí)暖侨,主要表現(xiàn)在教師信號上椭住,強化學(xué)習(xí)中由環(huán)境提供的強化信號是對產(chǎn)生動作的好壞作一種評價(通常為標(biāo)量信號),而不是告訴強化學(xué)習(xí)系統(tǒng)RLS(reinforcement learning system)如何去產(chǎn)生正確的動作字逗。由于外部環(huán)境提供的信息很少京郑,RLS必須靠自身的經(jīng)歷進行學(xué)習(xí)。通過這種方式葫掉,RLS在行動-評價的環(huán)境中獲得知識傻挂,改進行動方案以適應(yīng)環(huán)境。
本文是一個教你入門的方法挖息,只是帶你領(lǐng)略了解機器學(xué)習(xí)的大致框架金拒。不會介紹具體的算法的詳細原理與過程,所以想要深入了解可以查看相關(guān)書籍或者文獻套腹。對于具體的算法屬于哪一類绪抛,并且為什么這么劃分,請讀者認(rèn)真學(xué)習(xí)相關(guān)的機器學(xué)習(xí)教程电禀。
3.1.3 編程技術(shù)
對于編程技術(shù)學(xué)習(xí)和選擇幢码,無非就是 編程語言 和 開發(fā)環(huán)境。我個人的建議是 Python + PyCharm尖飞。原因很簡單症副,python簡單易學(xué),不至于讓我們把太多的時間花在語言的學(xué)習(xí)上(PS:學(xué)習(xí)機器學(xué)習(xí)的重點在于各個機器學(xué)習(xí)算法理論的學(xué)習(xí)和掌握)政基。并且Jetbrains公司開發(fā)的Python集成開發(fā)環(huán)境PyCharm也是非常的簡單易用贞铣。
4、你是否真的準(zhǔn)備好了沮明?
說完了機器學(xué)習(xí)的入門過程辕坝,我得給大家潑點冷水。雖然說目前AI真的很火熱荐健,就在剛剛酱畅,我寫累了休息看新聞的時候就有新聞推送給我:商湯科技B輪融資4.5億美元琳袄。這場革命是機遇,但是它真的適合你嗎纺酸?我可以很肯定的說窖逗,并不是所有人都適合轉(zhuǎn)行AI。
下面是的總結(jié)餐蔬,想轉(zhuǎn)行的人可以自我對照:
如果你天生感覺學(xué)習(xí)數(shù)學(xué)很吃力滑负,并且代碼能力很一般的人。我可以很負責(zé)人的告訴你用含,轉(zhuǎn)行AI矮慕,學(xué)習(xí)機器學(xué)習(xí)算法將會是你人生的災(zāi)難。對于這類 猿友 你一定不能轉(zhuǎn)行AI啄骇;
如果你數(shù)學(xué)一般痴鳄,但是編程能力非常好,你曾經(jīng)有著用代碼改變世界的雄心缸夹。對于這一類 猿友 痪寻,我覺得你轉(zhuǎn)行也行,但是你一定要走應(yīng)用化的AI道路虽惭。因為數(shù)學(xué)是你的天花板橡类,你注定成不了 Hinton那樣的學(xué)術(shù)大牛;
如果你數(shù)學(xué)很好芽唇,但是編程薄弱顾画。恭喜你,你具備了轉(zhuǎn)行AI的先天優(yōu)勢匆笤。對于這類 猿友研侣,我覺得你可以轉(zhuǎn)行AI,但是你得努力把編程水平提上來炮捧。
如果你數(shù)學(xué)很牛庶诡,曾經(jīng)與菲爾茲獎擦肩而過,曾經(jīng)給Apache頂級項目貢獻N萬行核心代碼咆课。恭喜你末誓,AI領(lǐng)域需要的就是你,你就是未來的Hinton书蚪,吳恩達……
- -AI大行其道喇澡,你準(zhǔn)備好了嗎?