如何規劃機器學習、人工神經網路和深度學習的學習路徑
對我們多數人來說,這一輪人工智慧的熱潮爆發於去年阿法狗 (Alpha Go) 4:1 完勝職業圍棋高手李世乭。
之後,彷彿一夜之間,人工智慧紅遍大街小巷、電視、網路、微信公眾號以及朋友圈。不得不說,在這個運動中媒體起到了重大的推波助瀾的作用,甚至到現在多少出現了一些泡沫的成分。
但是,忽略掉這些泡沫的成分,單從技術層面上說,這輪人工智慧的爆發主要還是因為人工神經網路領域深度學習這個突破性技術的成功應用。
其實,在 2016 年阿發狗戰勝李世乭之前,2006 年完善的深度學習技術就已經在語音識別(2009年)和圖像識別(2012年)等世界級競賽上顛覆了傳統的人工智慧技術,把識別正確率大幅提高。
2016 年阿法狗的完勝,人們更加深刻的意識到深度學習顛覆的不僅僅是傳統的模式識別等專業領域。現在是圍棋,未來可能就是你我現在從事的各行各業。
的確如此,這輪人工智慧熱潮不同於前不久的大數據熱潮。大數據熱潮本質上還是在原有數據積累基礎上如何進一步挖掘數據價值問題,技術顛覆性沒那麼強。而深度學習帶來了技術上實實在在的突破。而且這正是人工神經網路技術 60 年歷史幾度興衰苦苦追尋的目標。一旦破繭,前途無量。
這輪人工智慧熱潮不是一陣風,而是開啟了一個新的時代。
馬上,五月底,人機大戰第二季就要在烏鎮打響。這次代表人類的是中國棋手柯潔。有人認為這是一場沒有懸念的比賽,理由是阿法狗經過一年的演練,水平更加精進。
但別忘了,人最善於學習。我更願意把這個懸念保持到最後,一切皆有可能。我相信棋手們這一年也沒閑著,也在研究。但結果究竟如何,我們只能拭目以待。無論結果如何都不會改變人工智慧改變世界的步伐。
未來的產品和應用開發,必然越來越多的加入人工智慧的因素。無論是產品經理還是技術開發者,都需要學習和應用好這個武器。
在分享機器學習和深度學習的學習路徑之前,先和大家一起理清幾個基本概念。
人工智慧,泛指人造的智能機器或智能系統,能夠模擬人的智慧活動。大致可以分為兩大類型:
- 第一類以專家系統為代表。它把人類以及專家的知識和智慧輸入到計算機的程序系統中,使用時根據知識庫對問題進行推理和決策。
第二類以機器學習為代表,不再僅僅依靠人類向系統直接輸入知識,而是由系統根據實際的經驗(數據)不斷的自我學習,通過完善預測模型參數或者提煉出深層次的抽象認知來對新的問題進行判斷和求解。
顯然,具有自我學習能力的人工智慧更有潛力,更有可能超越人類。
機器學習,也可以分為兩大類型:
- 第一類採用近乎純數學的方法,即推斷統計學的方法,從已知數據(樣本)中學習到問題模型和參數,外加各種技巧,對新的問題進行預測。線性回歸,邏輯回歸,支持向量機,決策樹,k 近鄰,k 平均,EM 演算法,以及和貝葉斯推斷和馬爾科夫過程相關的演算法都屬於這一類。
第二類採用人工神經網路(簡稱 ANN)的方法。以人的認知系統和神經系統為出發點,通過研究人的神經元系統的認知規律,用計算機模擬人的神經系統,以達到學習和求解問題的能力。感知機,反向傳播演算法,Hopfield 網路,玻爾茲曼機,受限波爾茨曼機,深度置信網,卷積神經網路,循環神經網路都屬於這個領域。
數學的方法,更注重背後的原理和證明,比較嚴謹。人工神經網路的方法更接近人的智能處理方式。但是,由於人的認知方式並沒有完全搞清楚,這使得人工神經網路的方法就沒數學方法那麼嚴謹。很多實用的演算法至今都缺乏嚴謹的證明(這在數學家眼裡是不能容忍的)。
人工神經網路 (ANN),也可以分為兩個類型:(沒錯,「三個二」劃分法)
第一類是淺層的網路。如早期的感知機,它只有一個輸入層和輸出層組成。另外,上面提到的推斷統計類型的機器學習方法從廣義上說基本都可以歸到這一類。
第二類就是深層的網路,即深度學習網路。它除了輸出層和輸出層之外,還有一個或多個隱層。通過學習演算法,在隱層實現了對數據的抽象表達,如同人的認知系統。
顯然,深度學習能夠實現更高的智能。人總能根據經驗從表現獲取的信息,即感知裡面抽象出更深層的認知。深度學習追求的正是這個目標。
上面用「三個二」分類法,以簡要的方式描述了一下人工智慧、機器學習、人工神經網路和深度學習的關係。不知有沒有說清楚。
下面重點說人工神經網路(ANN)和深度學習:
ANN 的歷史幾乎和人工智慧的歷史一樣長。
以 1956 年出現的感知機 (Perceptron) 為標誌,ANN 出現了第一個興盛時期。它是不含隱層的淺層網路,通過數據訓練權重,形成知識的表達。因為它模擬了人類大腦的認知過程,因此,一出現就引起轟動。
但是,由於它只能解決線性可分問題(連最基本的異或分類都解決不了)。同時,由於它缺乏深層次非線性網路的有效學習演算法,無法進一步發展,所以,很快被人們質疑能力有限而拋棄。
直到 80 年代,ANN 迎來復甦。一個原因是反向傳播演算法(BP 演算法)的出現,很好解決了多層神經網路的學習演算法問題,使 ANN 不再僅限於解決線性問題。另一個原因是 1982 年 Hopfield 網路的出現,它採用熱平衡的能量模型來優化網路,為解決循環網路的演算法問題提供新的方向。
但是,循環網路的訓練是非常困難的,缺乏有效的演算法阻礙了這些技術進入實用。
這裡必須要提到一個人,Geoffrey Hinton,被譽為深度學習的鼻祖,人工神經網路領域祖師爺級的人物。現年已經 70 歲,多倫多大學心理學家和計算機科學家。
Hinton 最早實現了 BP 演算法的實用,並且在 Hopfiled 網路基礎上發明波爾茨曼機(1985)。雖然波爾茨曼機在學習演算法方面取得進展,但是,在實際使用時運行速度非常慢,幾乎沒有什麼實用價值。
難能可貴的是,Hinton 始終堅守這個方向,尋求突破,直到 2006 年,他在堆疊受限玻爾茲曼機和邏輯置信網的基礎上,發明了混合的深度置信網,標誌著深度學習時代的來臨。前文提到的深度學習在 2009 年和 2012 年兩次競賽的勝利,都是他的學生贏得的!2013 年,Hinton 開始在谷歌大腦工作。
更難能可貴的是,Hinton 在深度學習如火如荼的 2012 年,也在 http://coursra.org 上開設了人工神經網路與機器學習的課程。如果說 Andrew Ng 的 Machine learning 是機器學習的最佳入門途徑,那麼 Hinton 的課程就是學習 ANN 和深度學習的不二選擇。
Hinton 的祖父是 19 世紀的邏輯學家喬治·布爾,也是布爾代數的發明家。我們編程經常用到 bool ,以後再用時要回想一下它和 Hinton 的關係。據說 Hinton 有個姑姑,解放前期投身延安,解放後還在中國養過幾十年的牛。如果屬實,這真是個傳奇的家族。
開啟深度學習大幕的除了 Hinton之外,還有 Yann Lecun (有人把這個名字按照拼音讀作「嚴樂村」,Hinton 在它的課程中,發音接近「楊樂康」) ,他出生在法國,是紐約大學的教授,主要是卷積神經網路方面的貢獻。目前在facebook。
以及 Yoshua Bengio,目前在蒙特利爾大學。值得我們初學者關注的是,Benjio 和他的學生 在 2016 年出了一本深度學習的書,名字就叫 Deep Learning Book,現在已經有中文翻譯版免費下載,可以說是學習深度學習最新的書籍。
這三個人被稱為人工智慧領域的三位大牛。加上Andrew ,就是四位,跟著大牛學習人工智慧總是沒錯的。
與人工神經網路跌宕起伏的經歷不同,基於推斷統計學的機器學習發展一直比較平穩,逐漸完善,形成以支持向量機,決策樹,k 近鄰,k 平均,EM 演算法等為代表的演算法。這些演算法在小樣本,傳統低速計算的場合仍然起著重要作用。在深度學習爆發之前,支持向量機被認為是最好的分類器。
需要說明的是,深度學習幾乎都是在人工神經網路領域發展起來的,但是,推斷統計學仍然是它的數學基礎,如線性回歸,邏輯回歸,高斯分布,貝葉斯推斷,馬爾科夫過程等。認為傳統的機器學習過時的說法是片面的。
Andrew NG 在 2008 年機器學習公開課上仍然以推斷統計類的機器學習為主,感知機只稍微提了一下,人工神經網路也只是給出了 Yann Lecun 手寫識別的一個例子。但在 2012 年 coursra 課程上,加入了人工神經網路和反向傳播演算法的詳解。被視作機器學習和ANN演算法的最佳入門途徑(詳情參看本號的《機器學習入門》一文)
Hinton 在 coursera 上的 Neural Networks for Machine Learning 是學習深度學習的不二選擇。但是,Hinton 和 Andrew 不一樣,沒有把該課程的通俗化作為目標。無論內容設置、講解方式和課後問題及作業銜接方面都有很大跨度,使得本來就晦澀難懂的深度學習知識更加難學。(後面會有文章詳述)
綜合以上分析,推薦學習路徑如下:
1. 熟悉必要的數學基礎:
微積分:求導,梯度,偏微分,積分等。
統計學,概率論:重點要了解推斷統計學和概率論的基本概念。高斯分布,貝葉斯公式。最小二乘法,線性回歸,邏輯回歸等。我看的主要是 Mendenhall 編寫的 Statistics for Engineering and the Sciences ,中文版叫 《統計學》。知識體系比較完整,層次清楚,講解到位。
線性代數:重點了解基本概念:向量,向量空間,向量投影,矩陣運算,特徵值分解,SVD分解等。MIT 有個 35 集的線性代數公開課,對線性代數的講解及其透徹。網易公開課有視頻。我主要從這個課程學習線性代數。沒發現太好的書籍。
2. 學習基本的機器學習方法和理論:
以 Andrew NG 在 courera 2012 年 11 講 Machine Learning 為入門途徑,內容包括:線性回歸,邏輯回歸,人工神經網路,BP 演算法,優化方法,泛化方法。這些都是機器學習最基本的知識,也是學習深度學習更複雜的演算法和問題分析的基礎。
以 Andrew Ng 在斯坦福公開課 2008 年 20 講 Machine Learning 為補充,了解更多的傳統機器學習演算法或者各種演算法背後更多的數學原理。網易公開課有帶有中文字幕的視頻。
3. 學習 ANN 和的深度學習:
ANN 方面,我主要看的 Simon Haykin 2011年出版的《神經網路與機器學習》。在原理推導方面比較有系統性。
學習 Hinton 在 coursera 2012 年的 16 講 Neural Networks for Machine Learning 。感知機,反向傳播演算法,優化,循環網路,泛化,Hopfiled網路,波爾茨曼機,受限玻爾茲曼機(RBM),堆疊RBM,深度置信網路等。
4. 同時關注較新的學習材料為參考:
如上文提到的 Henjio 2016 年出版的 Deep Learning Book
以及網上各種學習資源
5. 學習和使用一些開源工具:
如 deeplerning4java, Therno, Tensor flow 等,通過實踐和積累經驗進行學習。這些工具都有指南文檔,對機器學習方法和演算法也有不同程度的描述。
註:本文為作者伊曉強原創,版權歸作者所有 個人公眾號: 伊曉強
本文在作者私人公眾號同步發表,版式內容略加修改。二維碼如下,歡迎關注。
推薦閱讀:
※caffe用別人的model和prototxt測試,batch_size如何選擇?
※如何評價MSRA的新paper:Deep Image Analogy?
※如何獲得Bengio的《Deep Learning》的pdf版?
※沒有GPU可以做深度學習嗎?
※卷積神經網路可以用於小目標檢測嗎?
TAG:深度学习DeepLearning | 吴恩达AndrewNg | Coursera |