近年來,隨著 Google 的 AlphaGo 打敗韓國圍棋棋手李世乭之后,機(jī)器學(xué)習(xí)尤其是深度學(xué)習(xí)的熱潮席卷了整個(gè) IT 界。所有的互聯(lián)網(wǎng)公司,尤其是 Google 微軟,百度,騰訊等巨頭,無不在布局人工智能技術(shù)和市場。百度,騰訊,阿里巴巴,京東,等互聯(lián)網(wǎng)巨頭甚至都在美國硅谷大肆高薪挖掘人工智能人才。現(xiàn)在在北京,只要是機(jī)器學(xué)習(xí)算法崗位,少則月薪 20k,甚至 100k 以上……
不錯(cuò),新時(shí)代時(shí)代來了,我們從互聯(lián)網(wǎng)走向移動(dòng)互聯(lián)網(wǎng),現(xiàn)在又從移動(dòng)互聯(lián)網(wǎng)走向人工智能時(shí)代。業(yè)內(nèi)有人稱這一次的人工智能爆發(fā)是互聯(lián)網(wǎng) 3.0 時(shí)代的開啟。所以現(xiàn)在搞 IT 開發(fā)的工程師的不懂機(jī)器學(xué)習(xí),就相當(dāng)于低級程序員。趕緊從基礎(chǔ)學(xué)起,入門機(jī)器學(xué)習(xí),走進(jìn)人工智能的大門……
1. 人工智能的三起三落
20 世紀(jì) 50-70 年代,人工智能提出后,力圖模擬人類智慧,但是由于過分簡單的算法、匱乏的難以應(yīng)對不確定環(huán)境的理論,以及計(jì)算能力的限制,逐漸冷卻。
20 世紀(jì) 80 年代,人工智能的關(guān)鍵應(yīng)用——專家系統(tǒng)得以發(fā)展,但是數(shù)據(jù)較少,難以捕捉專家的隱性知識,建造和維護(hù)大型系統(tǒng)的復(fù)雜性和成本也使得人工智能漸漸不被主流計(jì)算機(jī)科學(xué)所重視。
進(jìn)入 20 世紀(jì) 90 年代,神經(jīng)網(wǎng)絡(luò)、遺傳算法等科技 “進(jìn)化” 出許多解決問題的最佳方案,于是 21 世紀(jì)前 10 年,復(fù)興人工智能研究進(jìn)程的各種要素,例如摩爾定律、大數(shù)據(jù)、云計(jì)算和新算法等,推動(dòng)人工智能在 20 世界 20 年代進(jìn)入快速增長時(shí)期。預(yù)計(jì)未來十年,會(huì)在一些難以逾越的困惑中迎來奇點(diǎn)時(shí)代的爆發(fā)式增長。
2. 新浪潮為什么會(huì)崛起
人工智能(AI)問世之初曾經(jīng)狂妄自大、令人失望,它如何突然變成當(dāng)今最熱門的技術(shù)領(lǐng)域?這個(gè)詞語首次出現(xiàn)在 1956 年的一份研究計(jì)劃書中。該計(jì)劃書寫道:“只要精心挑選一群科學(xué)家,讓他們一起研究一個(gè)夏天,就可以取得重大進(jìn)展,使機(jī)器能夠解決目前只有人類才能解決的那些問題。” 至少可以說,這種看法過于樂觀。盡管偶有進(jìn)步,但 AI 在人們心目中成為了言過其實(shí)的代名詞,以至于研究人員基本上避免使用這個(gè)詞語,寧愿用 “專家系統(tǒng)” 或者 “神經(jīng)網(wǎng)絡(luò)” 代替。“AI” 的平反和當(dāng)前的熱潮可追溯到 2012 年的 ImageNet Challenge 在線競賽。
ImageNet 是一個(gè)在線數(shù)據(jù)庫,包含數(shù)百萬張圖片,全部由人工標(biāo)記。每年一度的 ImageNet Challenge 競賽旨在鼓勵(lì)該領(lǐng)域的研究人員比拼和衡量他們在計(jì)算機(jī)自動(dòng)識別和標(biāo)記圖像方面的進(jìn)展。他們的系統(tǒng)首先使用一組被正確標(biāo)記的圖像進(jìn)行訓(xùn)練,然后接受挑戰(zhàn),標(biāo)記之前從未見過的測試圖像。
在隨后的研討會(huì)上,獲勝者分享和討論他們的技術(shù)。2010 年,獲勝的那個(gè)系統(tǒng)標(biāo)記圖像的準(zhǔn)確率為 72%(人類平均為 95%)。2012 年,多倫多大學(xué)教授杰夫 · 辛頓(Geoff Hinton)領(lǐng)導(dǎo)的一支團(tuán)隊(duì)?wèi){借一項(xiàng)名為 “深度學(xué)習(xí)” 的新技術(shù)大幅提高了準(zhǔn)確率,達(dá)到 85%。后來在 2015 年的 ImageNet Challenge 競賽中,這項(xiàng)技術(shù)使準(zhǔn)確率進(jìn)一步提升至 96%,首次超越人類。
不錯(cuò),這一切都?xì)w功于一個(gè)概念:“深度學(xué)習(xí)(Deep Learning)”。雖然 2016 年之前,深度學(xué)習(xí)技術(shù)已經(jīng)火了起來,但是真正大爆發(fā)的事件卻是 2016 年 Google 在韓國首爾舉行的人工智能機(jī)器人 AlphaGo 與圍棋九段選手李世石之間的人機(jī)五翻棋大戰(zhàn),最終人類最強(qiáng)選手輸給了機(jī)器人。曾幾時(shí)何,人們認(rèn)為圍棋是人類棋牌類游戲的最后的尊嚴(yán)陣地,就這樣在人工智能輕松地攻陷了人類智力的最后一塊陣地!這件事震驚了所有人。
從這以后,全球?qū)W術(shù)界和工業(yè)界都躁動(dòng)了,巨頭們都在加緊布局人工智能:Google 挖來了神經(jīng)網(wǎng)絡(luò)算法的奠基人、深度學(xué)習(xí)之父 Geoffrey Hinton;Facebook 則挖到了 Hinton 的學(xué)生,卷積神經(jīng)網(wǎng)絡(luò)(CNN)的奠基人 Yann LeCun;然而就在不到一年的時(shí)間,微軟也是說動(dòng)了一直保持中立留在學(xué)術(shù)界的深度學(xué)習(xí)領(lǐng)域三大牛的最后一位 Yoshua Bengio。當(dāng)然,國內(nèi)的互聯(lián)網(wǎng)巨頭,百度、阿里、騰訊、京東、滴滴、美團(tuán)等也都在布局 AI。其中百度更是被認(rèn)為在 AI 上已經(jīng) All In 了。
深度神經(jīng)網(wǎng)絡(luò)(DNN)
3. 機(jī)器學(xué)習(xí)是你必經(jīng)之路
入門 AI,機(jī)器學(xué)習(xí)是必須要學(xué)習(xí)的,可以這么說:機(jī)器學(xué)習(xí)是人工智能的基石和精髓。只有學(xué)好了機(jī)器學(xué)習(xí)算法原理和思想,你才算真正的入門人工智能。但是,對于非專業(yè)的半路出家的你們該如何入門?這個(gè)問題其實(shí)很難回答,因?yàn)槊總€(gè)人的目標(biāo)不一樣,技術(shù)基礎(chǔ)和數(shù)學(xué)基礎(chǔ)也都不一樣,所以因人而異。但是通常來說,學(xué)習(xí)機(jī)器學(xué)習(xí)算法,需要的必備知識還是可以羅列的。
機(jī)器學(xué)習(xí)必備基礎(chǔ)
機(jī)器學(xué)習(xí)的學(xué)習(xí)過程
對于上圖,之所以最左邊寫了『數(shù)學(xué)基礎(chǔ)』『經(jīng)典算法學(xué)習(xí)』『編程技術(shù)』三個(gè)并行的部分,是因?yàn)闄C(jī)器學(xué)習(xí)是一個(gè)將數(shù)學(xué)、算法理論和工程實(shí)踐緊密結(jié)合的領(lǐng)域,需要扎實(shí)的理論基礎(chǔ)幫助引導(dǎo)數(shù)據(jù)分析與模型調(diào)優(yōu),同時(shí)也需要精湛的工程開發(fā)能力去高效化地訓(xùn)練和部署模型和服務(wù)。
在互聯(lián)網(wǎng)領(lǐng)域從事機(jī)器學(xué)習(xí)的人基本上屬于以下兩種背景:其中絕大部分是程序員出身,這類童鞋工程經(jīng)驗(yàn)相對會(huì)多一些;另一部分是學(xué)數(shù)學(xué)統(tǒng)計(jì)領(lǐng)域的,這部分童鞋理論基礎(chǔ)相對扎實(shí)一些。因此對比上圖,這二類童鞋入門機(jī)器學(xué)習(xí),所欠缺和需要加強(qiáng)的部分是不一樣的。
數(shù)學(xué)
曾經(jīng)有無數(shù)的滿懷激情,誓要在機(jī)器學(xué)習(xí)領(lǐng)域有一番作為的同學(xué),在看到公式的一刻突然就覺得自己狗帶了。是的,機(jī)器學(xué)習(xí)之所以門檻高并且顯得高大上的主要原因就是數(shù)學(xué)。
每一個(gè)算法,要在訓(xùn)練集上最大程度擬合同時(shí)又保證泛化能力,需要不斷分析結(jié)果和數(shù)據(jù),調(diào)優(yōu)參數(shù),這需要我們對數(shù)據(jù)分布和模型底層的數(shù)學(xué)原理有一定的理解。所幸的是如果只是想合理應(yīng)用機(jī)器學(xué)習(xí),而不是做相關(guān)方向高精尖的研究,所需要的數(shù)學(xué)知識讀完本科的理工科童鞋還是能很容易的把這些數(shù)學(xué)知識學(xué)明白的。
基本所有常見機(jī)器學(xué)習(xí)算法需要的數(shù)學(xué)基礎(chǔ),都集中在微積分、線性代數(shù)和概率與統(tǒng)計(jì)當(dāng)中。下面我們先過一過知識重點(diǎn),文章的后部分會(huì)介紹一些幫助學(xué)習(xí)和鞏固這些知識的資料。
微積分
微分的計(jì)算及其幾何、物理含義,是機(jī)器學(xué)習(xí)中大多數(shù)算法的求解過程的核心。比如算法中運(yùn)用到梯度下降法、牛頓法等。如果對其幾何意義有充分的理解,就能理解 “梯度下降是用平面來逼近局部,牛頓法是用曲面逼近局部”,能夠更好地理解運(yùn)用這樣的方法。
凸優(yōu)化和條件最優(yōu)化的相關(guān)知識在算法中的應(yīng)用隨處可見,如果能有系統(tǒng)的學(xué)習(xí)將使得你對算法的認(rèn)識達(dá)到一個(gè)新高度。
梯度下降法示意圖
線性代數(shù)
大多數(shù)機(jī)器學(xué)習(xí)的算法要應(yīng)用起來,依賴于高效的計(jì)算,這種場景下,程序員童鞋們習(xí)慣的多層 for 循環(huán)通常就行不通了,而大多數(shù)的循環(huán)操作可轉(zhuǎn)化成矩陣之間的乘法運(yùn)算,這就和線性代數(shù)有莫大的關(guān)系了。向量的內(nèi)積運(yùn)算更是隨處可見。矩陣乘法與分解在機(jī)器學(xué)習(xí)的主成分分析(PCA)和奇異值分解(SVD) 等部分呈現(xiàn)刷屏狀地出現(xiàn)。
奇異值分解過程示意圖
在機(jī)器學(xué)習(xí)領(lǐng)域,有相當(dāng)多的應(yīng)用與奇異值分解都有非常緊密的聯(lián)系,比如機(jī)器學(xué)習(xí)中常做 feature reduction 的 PCA,做數(shù)據(jù)壓縮(以圖像壓縮為代表)的算法,還有做搜索引擎語義層次檢索的 LSI(Latent Semantic Indexing)
概率與統(tǒng)計(jì)
從廣義來說,機(jī)器學(xué)習(xí)在做的很多事情,和統(tǒng)計(jì)層面數(shù)據(jù)分析和發(fā)掘隱藏的模式,是非常類似的。以至于傳統(tǒng)的機(jī)器學(xué)習(xí)很大一部分被稱作統(tǒng)計(jì)學(xué)習(xí)理論,這充分說明了統(tǒng)計(jì)學(xué)在機(jī)器學(xué)習(xí)領(lǐng)域的重要性。
極大似然思想、貝葉斯模型是理論基礎(chǔ),樸素貝葉斯 (NaiveBayes)、語言模型 (Ngram)、隱馬爾科夫 (HMM)、隱變量混合概率模型是他們的高級形態(tài)。常見分布如高斯分布是混合高斯模型 (GMM) 等的基礎(chǔ)。
樸素貝葉斯算法的基本原理
經(jīng)典算法的學(xué)習(xí)
機(jī)器學(xué)習(xí)中有很多的經(jīng)典算法:感知機(jī),KNN,樸素貝葉斯,K-Means,SVM,AdaBoost,EM,決策樹,隨機(jī)森林,GDBT,HMM……
算法這么多,那么對于初學(xué)者應(yīng)該怎么學(xué)習(xí)呢?我的答案是:分門別類很重要。基本上,對機(jī)器學(xué)習(xí)算法的分類普遍的觀點(diǎn)是分為三大類:有監(jiān)督學(xué)習(xí),無監(jiān)督學(xué)習(xí),強(qiáng)化學(xué)習(xí)。
編程技術(shù)
對于編程技術(shù)學(xué)習(xí)和選擇,無非就是編程語言和開發(fā)環(huán)境。我個(gè)人的建議是Python + PyCharm。原因很簡單,Python 簡單易學(xué),不至于讓我們把太多的時(shí)間花在語言的學(xué)習(xí)上(PS:學(xué)習(xí)機(jī)器學(xué)習(xí)的重點(diǎn)在于各個(gè)機(jī)器學(xué)習(xí)算法理論的學(xué)習(xí)和掌握)。并且 Jetbrains 公司開發(fā)的 Python 集成開發(fā)環(huán)境 PyCharm 也是非常的簡單易用。
Python 與 PyCharm
4. 你是否真的準(zhǔn)備好了?
雖然目前 AI 領(lǐng)域發(fā)展火熱,商湯科技 B 輪融資 4.5 億美元。但是這場革命是機(jī)遇,真的適合你嗎?實(shí)踐證明,并不是所有人都適合轉(zhuǎn)行 AI。
下面的總結(jié),大家可以自行對照:
如果你數(shù)學(xué)一般,但是編程能力非常好,你曾經(jīng)有著用代碼改變世界的雄心。對于這一類 猿友 ,我覺得你轉(zhuǎn)行也行,但是你一定要走應(yīng)用化的 AI 道路。
如果你數(shù)學(xué)很好,但是編程薄弱。恭喜你,你具備了轉(zhuǎn)行 AI 的先天優(yōu)勢。對于這類 猿友,我覺得你可以轉(zhuǎn)行 AI,但是你得努力把編程水平提上來。
如果你數(shù)學(xué)很牛,曾經(jīng)與菲爾茲獎(jiǎng)擦肩而過,曾經(jīng)給 Apache 頂級項(xiàng)目貢獻(xiàn) N 萬行核心代碼。恭喜你,AI 領(lǐng)域需要的就是你,你就是未來的 Hinton,吳恩達(dá)……
AI 大行其道,你準(zhǔn)備好了嗎?
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4762瀏覽量
100539 -
人工智能
+關(guān)注
關(guān)注
1791文章
46859瀏覽量
237567 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8377瀏覽量
132409
原文標(biāo)題:傳統(tǒng)程序員要不要轉(zhuǎn)行到AI?
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論