AI 大行其道,你準備好了嗎?——謹送給徘徊於轉行 AI 的程序員


做者 | 章華燕(金橋智慧科技) 
python

前言 

近年來,隨着 Google 的 AlphaGo 戰勝韓國圍棋棋手李世乭以後,機器學習尤爲是深度學習的熱潮席捲了整個IT界。全部的互聯網公司,尤爲是 Google 微軟,百度,騰訊等巨頭,無不在佈局人工智能技術和市場。百度,騰訊,阿里巴巴,京東,等互聯網巨頭甚至都在美國硅谷大肆高薪挖掘人工智能人才。如今在北京,只要是機器學習算法崗位,少則月薪 20k,甚至100k 以上……  程序員


不錯,新時代時代來了,咱們從互聯網走向移動互聯網,如今又從移動互聯網走向人工智能時代。業內有人稱這一次的人工智能爆發是互聯網3.0時代的開啓。因此如今搞IT開發的工程師的不懂機器學習,就至關於低級程序員。趕忙從基礎學起,入門機器學習,走進人工智能的大門……
算法


1. 人工智能的三起三落

 20世紀50-70年代,人工智能提出後,力圖模擬人類智慧,可是因爲過度簡單的算法、匱乏的難以應對不肯定環境的理論,以及計算能力的限制,逐漸冷卻。   數據庫


 20世紀80年代,人工智能的關鍵應用——專家系統得以發展,可是數據較少,難以捕捉專家的隱性知識,建造和維護大型系統的複雜性和成本也使得人工智能漸漸不被主流計算機科學所重視。   編程


 進入20世紀90年代,神經網絡、遺傳算法等科技「進化」出許多解決問題的最佳方案,因而21世紀前10年,復興人工智能研究進程的各類要素,例如摩爾定律、大數據、雲計算和新算法等,推進人工智能在20世界20年代進入快速增加時期。預計將來十年,會在一些難以逾越的困惑中迎來奇點時代的爆發式增加。網絡


 2. 新浪潮爲何會崛起    

人工智能(AI)問世之初曾經狂妄自大、使人失望,它如何忽然變成當今最熱門的技術領域?這個詞語首次出如今1956年的一份研究計劃書中。該計劃書寫道:「只要精心挑選一羣科學家,讓他們一塊兒研究一個夏天,就能夠取得重大進展,使機器可以解決目前只有人類才能解決的那些問題。」至少能夠說,這種見解過於樂觀。儘管偶有進步,但AI在人們心目中成爲了言過其實的代名詞,以致於研究人員基本上避免使用這個詞語,寧願用「專家系統」或者「神經網絡」代替。「AI」的平反和當前的熱潮可追溯到2012年的ImageNet Challenge在線競賽。框架


 ImageNet是一個在線數據庫,包含數百萬張圖片,所有由人工標記。每一年一度的ImageNet Challenge競賽旨在鼓勵該領域的研究人員比拼和衡量他們在計算機自動識別和標記圖像方面的進展。他們的系統首先使用一組被正確標記的圖像進行訓練,而後接受挑戰,標記以前從未見過的測試圖像。在隨後的研討會上,獲勝者分享和討論他們的技術。2010年,獲勝的那個系統標記圖像的準確率爲72%(人類平均爲95%)。2012年,多倫多大學教授傑夫·辛頓(Geoff Hinton)領導的一支團隊憑藉一項名爲「深度學習」的新技術大幅提升了準確率,達到85%。後來在2015年的ImageNet Challenge競賽中,這項技術使準確率進一步提高至96%,首次超越人類。機器學習


 不錯,這一切都歸功於一個概念:「 深度學習(Deep Learning) 」。雖然2016年以前,深度學習技術已經火了起來,可是真正大爆發的事件倒是2016年Google在韓國首爾舉行的人工智能機器人AlphaGo與圍棋九段選手李世石之間的人機五翻棋大戰,最終人類最強選手輸給了機器人。  編程語言


曾幾時何,人們認爲圍棋是人類棋牌類遊戲的最後的尊嚴陣地,就這樣在人工智能輕鬆地攻陷了人類智力的最後一塊陣地!這件事震驚了全部人。從這之後,全球學術界和工業界都躁動了,巨頭們都在加緊佈局人工智能:Google挖來了神經網絡算法的奠定人、深度學習之父 Geoffrey Hinton;Facebook則挖到了Hinton的學生,卷積神經網絡(CNN)的奠定人Yann LeCun;然而就在不到一年的時間,微軟也是說動了一直保持中立留在學術界的深度學習領域三大牛的最後一位Yoshua Bengio。  函數


固然,國內的互聯網巨頭,百度、阿里、騰訊、京東、滴滴、美團等也都在佈局AI。其中百度更是被認爲在AI上已經 All In 了。


 深度神經網絡(DNN)


 3. 機器學習是你必經之路    

入門AI,機器學習是必需要學習的,能夠這麼說:機器學習是人工智能的基石和精髓。只有學好了機器學習算法原理和思想,你纔算真正的入門人工智能。可是,對於非專業的半路出家的大家該如何入門?這個問題其實很難回答,由於每一個人的目標不同,技術基礎和數學基礎也都不同,因此因人而異。可是一般來講,學習機器學習算法,須要的必備知識仍是能夠羅列的。

 3.1 機器學習必備基礎 


 機器學習的學習過程

對於上圖,之因此最左邊寫了『數學基礎』 『經典算法學習』 『編程技術』 三個並行的部分,是由於機器學習是一個將數學、算法理論和工程實踐緊密結合的領域,須要紮實的理論基礎幫助引導數據分析與模型調優,同時也須要精湛的工程開發能力去高效化地訓練和部署模型和服務。 


在互聯網領域從事機器學習的人基本上屬於如下兩種背景: 


其中絕大部分是程序員出身,這類童鞋工程經驗相對會多一些。另外一部分是學數學統計領域的,這部分童鞋理論基礎相對紮實一些。所以對比上圖,這二類童鞋入門機器學習,所欠缺和須要增強的部分是不同的。


  •  3.1.1 關於數學    

曾經有無數的滿懷激情,誓要在機器學習領域有一番做爲的同窗,在看到公式的一刻忽然就以爲本身狗帶了。是的,機器學習之因此門檻高而且顯得高大上的主要緣由就是數學。每個算法,要在訓練集上最大程度擬合同時又保證泛化能力,須要不斷分析結果和數據,調優參數,這須要咱們對數據分佈和模型底層的數學原理有必定的理解。所幸的是若是隻是想合理應用機器學習,而不是作相關方向高精尖的研究,所須要的數學知識讀完本科的理工科童鞋仍是能很容易的把這些數學知識學明白的。


 基本全部常見機器學習算法須要的數學基礎,都集中在微積分、線性代數和機率與統計當中。下面咱們先過一過知識重點,文章的後部分會介紹一些幫助學習和鞏固這些知識的資料。


 微積分:微分的計算及其幾何、物理含義,是機器學習中大多數算法的求解過程的核心。好比算法中運用到梯度降低法、牛頓法等。若是對其幾何意義有充分的理解,就能理解「梯度降低是用平面來逼近局部,牛頓法是用曲面逼近局部」,可以更好地理解運用這樣的方法。

    

凸優化和條件最優化的相關知識在算法中的應用隨處可見,若是能有系統的學習將使得你對算法的認識達到一個新高度。


梯度降低法示意圖 

線性代數:大多數機器學習的算法要應用起來,依賴於高效的計算,這種場景下,程序員童鞋們習慣的多層for循環一般就行不通了,而大多數的循環操做可轉化成矩陣之間的乘法運算,這就和線性代數有莫大的關係了。向量的內積運算更是隨處可見。矩陣乘法與分解在機器學習的主成分分析(PCA)和奇異值分解(SVD) 等部分呈現刷屏狀地出現。


奇異值分解過程示意圖


在機器學習領域,有至關多的應用與奇異值分解都有很是緊密的聯繫,好比機器學習中常作feature reduction的PCA,作數據壓縮(以圖像壓縮爲表明)的算法,還有作搜索引擎語義層次檢索的LSI(Latent Semantic Indexing) 


機率與統計:從廣義來講,機器學習在作的不少事情,和統計層面數據分析和發掘隱藏的模式,是很是相似的。以致於傳統的機器學習很大一部分被稱做統計學習理論,這充分說明了統計學在機器學習領域的重要性。 

  

 極大似然思想、貝葉斯模型是理論基礎,樸素貝葉斯(NaiveBayes)、語言模型(Ngram)、隱馬爾科夫(HMM)、隱變量混合機率模型是他們的高級形態。常見分佈如高斯分佈是混合高斯模型(GMM)等的基礎。 


 樸素貝葉斯算法的基本原理


  • 3.1.2 經典算法的學習    

機器學習中有不少的經典算法:感知機,KNN,樸素貝葉斯,K-Means,SVM,AdaBoost,EM,決策樹,隨機森林,GDBT,HMM……    


算法這麼多,那麼對於初學者應該怎麼學習呢?個人答案是:分門別類很重要。基本上,對機器學習算法的分類廣泛的觀點是分爲三大類:有監督學習,無監督學習,強化學習。 


有監督學習:有監督學習是指進行訓練的數據包含兩部分信息:特徵向量 + 類別標籤。也就是說,他們在訓練的時候每個數據向量所屬的類別是事先知道的。在設計學習算法的時候,學習調整參數的過程會根據類標進行調整,相似於學習的過程當中被監督了同樣,而不是漫無目標地去學習,故此得名。下圖中,不一樣顏色的點表明不一樣的類別,直線就是咱們學習出來的分界面(也叫學習器,分類器)。


典型的有監督學習 


無監督學習:相對於有監督而言,無監督方法的訓練數據沒有類標,只有特徵向量。甚至不少時候咱們都不知道總共的類別有多少個。所以,無監督學習就不叫作分類,而每每叫作 聚類。就是採用必定的算法,把特徵性質相近的樣本聚在一塊兒成爲一類。 


K-Means算法就是一個無監督學習算法,在它執行前數據是每有類標的,執行過程當中纔會有類標,可是此時類標不固定,只有當聚類完成後每一個樣本的類標才能固定。以下圖所示就是無監督算法的執行過程。 


 K-Means算法聚類過程 


強化學習:所謂強化學習就是智能系統從環境到行爲映射的學習,以使獎勵信號(強化信號)函數值最大,強化學習不一樣於鏈接主義學習中的監督學習,主要表如今教師信號上,強化學習中由環境提供的強化信號是對產生動做的好壞做一種評價(一般爲標量信號),而不是告訴強化學習系統RLS(reinforcement learning system)如何去產生正確的動做。因爲外部環境提供的信息不多,RLS必須靠自身的經歷進行學習。經過這種方式,RLS在行動-評價的環境中得到知識,改進行動方案以適應環境。 


本文是一個教你入門的方法,只是帶你領略瞭解機器學習的大體框架。不會介紹具體的算法的詳細原理與過程,因此想要深刻了解能夠查看相關書籍或者文獻。對於具體的算法屬於哪一類,而且爲何這麼劃分,請讀者認真學習相關的機器學習教程。 


  • 3.1.3 編程技術    

對於編程技術學習和選擇,無非就是 編程語言 和 開發環境。我我的的建議是 Python + PyCharm。緣由很簡單,python簡單易學,不至於讓咱們把太多的時間花在語言的學習上(PS:學習機器學習的重點在於各個機器學習算法理論的學習和掌握)。而且Jetbrains公司開發的Python集成開發環境PyCharm也是很是的簡單易用。

 

 Python與PyCharm 


 4. 你是否真的準備好了?    

說完了機器學習的入門過程,我得給你們潑點冷水。雖說目前AI真的很火熱,就在剛剛,我寫累了休息看新聞的時候就有新聞推送給我:商湯科技B輪融資4.1億美圓。這場革命是機遇,可是它真的適合你嗎?我能夠很確定的說,並非全部人都適合轉行AI。    


下面是的總結,想轉行的人能夠自我對照: 

  • 若是你天生感受學習數學很吃力,而且代碼能力很通常的人。我能夠很負責人的告訴你,轉行AI,學習機器學習算法將會是你人生的災難。對於這類猿友你必定不能轉行AI。
  •  若是你數學通常,可是編程能力很是好,你曾經有着用代碼改變世界的雄心。對於這一類 猿友 ,我以爲你轉行也行,可是你必定要走應用化的AI道路。由於數學是你的天花板,你註定成不了 Hinton 那樣的學術大牛。 
  • 若是你數學很好,可是編程薄弱。恭喜你,你具有了轉行AI的先天優點。對於這類 猿友,我以爲你能夠轉行AI,可是你得努力把編程水平提上來。 
  • 若是你數學很牛,曾經與菲爾茲獎擦肩而過,曾經給Apache頂級項目貢獻N萬行核心代碼。恭喜你,AI領域須要的就是你,你就是將來的Hinton,吳恩達…… 
AI大行其道,你準備好了嗎?


 參考文獻: 

1. 李航. 統計學習方法[M]. 清華大學出版社, 2012. 
2. 周志華. 機器學習 : = Machine learning[M]. 清華大學出版社, 2016. 
3. 機器學習(三)常見算法優缺點- http://blog.csdn.net/u013709270/article/details/53911431

 原文地址 

http://blog.csdn.net/u013709270/article/details/74892124 
相關文章
相關標籤/搜索