當前位置:
首頁 > 新聞 > 6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

1新智元編譯

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

最小二乘法

深度學習的一切都起源於這個數學片段(我把它用Python 寫了出來):

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

這一方法是 1805 年巴黎數學家阿德利昂·瑪利·埃·勒讓德首次提出的(1805,Legendre),勒讓德建立了許多重要的定理,尤其是在數論和橢圓積分(Elliptic Integrals)方面,提出了對素數定理(Prime Number Theorem)和二次互反律(Quadratic Reciprocity)的猜測並發表了初等幾何教科書。他對預測彗星的未來位置特別痴迷。他找到了根據彗星此前的幾個位置計算其軌跡的方法。

他嘗試了幾種方法,終於找到了一個讓他滿意的方法。勒讓德先猜測彗星的未來位置,然後平方其誤差,重新做出猜測,以減少平方誤差的和。這是線性回歸的種子。

上述代碼中,m 是係數,b是預測中的常數,坐標是彗星的位置。我們的目標是找到m和b的組合,使其誤差儘可能小。

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

這就是深度學習的核心理念:輸入,然後設定期望的輸出,找到二者的相關性。

梯度下降

勒讓德手工降低誤差率的方法很耗時。荷蘭諾貝爾獎得主Peter Debye 在一個世紀後(1909年,Debye)正式確定了解決方案。

讓我們想像一下,勒讓德有一個參數需要擔心——我們稱之為X。Y軸表示每個X的誤差值。勒讓德尋找的是最低誤差時X的位置。在這種圖形化表示中,我們可以看到誤差Y最小化時,X = 1.1。

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

彼得·德比(Peter Debye)注意到最低點左邊的斜率是負的,而另一邊則是正的。因此,如果知道任何給定X值的斜率值,就可以將Y 導向最小值。

這引出了梯度下降的方法。幾乎每一個深度學習模型中都在使用這個原則。

寫成Python:

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

這裡要注意的是learning_rate。通過沿斜率相反方向接近最小值。此外,越接近最小值,斜率越小。每一步都會減少,因為斜率向零趨近。

num_iterations 是達到最小值前的預計迭代次數。

線性回歸

通過組合最小二乘法和梯度下降法,就可以得到線性回歸。 20世紀50年代和60年代,一批實驗經濟學家在早期的計算機上實現了這個想法。這個邏輯是在卡片計算機上實現的,那是真正的手工軟體程序。當時需要幾天的時間準備這些打孔卡,最多24小時才能通過計算機進行一次回歸分析。

現在用不著打孔卡了,用Python 寫出來是這樣的:

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

將誤差函數與梯度下降合併可能會有一點不好理解。可以運行代碼試一試。

感知器

查查弗蘭克·羅森布拉特(Frank Rosenblatt)這個人——他白天解剖大鼠的大腦,並在夜間尋找外星生命的跡象。1958 年,他造了一個模仿神經元的機器(1958,Rosenblatt ),登上了「紐約時報」的頭版《新海軍裝備學習》。

如果你給Rosenblatt的機器看50組圖像,每組中的一張標有「向左」,另一張標著「向右」,這台機器能夠在沒有預編程的情況下對它們進行區分。公眾被機器真正能學習的這種可能性吸引了。

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

對於每個訓練周期,您從左側輸入數據。初始隨機權重添加到所有輸入數據上。權重之和被計算出來。如果和為負,則被寫為0,否則寫為1。

如果預測是正確的,那麼該循環中的權重就不做任何調整。如果有錯誤的,就將誤差乘以學習率。這會相應地調整權重。

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

把感知器寫成Python:

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

經過頭一年的炒作,Marvin Minsky 和Seymour Papert 否定了這個想法(1969, Minsky& Papert)。當時,, Minsky 和 Papert 都在麻省理工學院的AI實驗室工作。他們寫了一本書,證明感知器只能解決線性問題。他們還駁斥了關於多層感知器的想法。不幸的是,弗蘭克·羅森布拉特兩年後遭遇了海難。

在, Minsky 和 Papert 專著出版一年之後,芬蘭的一名大學生髮現了解決多層感知器的非線性問題的理論(Linnainmaa,1970)。由於感知器遭受的批評,AI相關投資枯竭了十多年。這被稱為AI 的第一個寒冬。

Minsky 和 Papert 的批評是XOR Problem。邏輯與OR邏輯相同,但有一個例外 - 當你有兩個true語句(1&1)時,返回False(0)。

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

在 OR 邏輯中,可能將 true combination 從 false 中分離出來。但如你所見,你無法將 XOR 和一個線性函數分離。

人工神經網路

到1986年,幾項實驗證明了,神經網路可以解決複雜的非線性問題(Rumelhart等,1986)。當時的計算機比理論提出時快了一萬倍。這時,Rumelhart提出了他們具有傳奇色彩的論文:

我們描述了神經元式單元網路的新的學習過程,反向傳播。該過程反覆地調整網路中的連接權重,以便最小化網路的實際輸出向量與期望的輸出向量之間的差異。作為權重調整的結果,不屬於輸入或輸出的內部「隱藏」單元代表了任務域的重要特徵,並且任務中的規則由這些單元的交互捕獲。創造有用的新函數的能力將反向傳播與早期更簡單的方法區分開來,例如感知器收斂過程「Nature 323,533-536(1986年10月9日)。

這一方法解決了XOR問題,解凍了第一個AI 寒冬。

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

請注意,X_XOR數據中添加的參數[1]是偏置神經元,它們與線性函數中的常量具有相同的行為。

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

反向傳播、矩陣乘法和梯度下降組合可能很難包圍你的頭腦。這個過程的可視化通常是對發生事情的簡化。請專註於理解背後的邏輯。

深度神經網路

深層神經網路是輸入層和輸出層之間具有很多層的神經網路。這個概念是由Rina Dechter(Dechter,1986)引入的,但在2012年獲得了主流關注。不久之後就出現了IBM Watson 的Jeopardy 大勝和谷歌識貓的成功。

深度神經網路的核心結構保持不變,但現在應用於幾個不同的問題。正則化也有很多改進。最初,這是一組數學函數,來簡化嘈雜的數據(Tikhonov,A.N,1963)。它們現在用於神經網路,以提高其泛化能力。

創新的很大一部分是原因計算能力的飛躍。它改進了研究者的創新周期——80年代中期的超級計算機需要計算一年的東西,今天GPU 技術半秒就能算好。

計算方面的成本降低以及深度學習庫的發展現在已經眾所周知。我們來看一個普通的深度學習的例子,從底層開始:

  • GPU > Nvidia Tesla K80。硬體常用於圖形處理。與CPU相比,深度學習平均速度要快50-200倍。

  • CUDA > GPU的低級編程語言

  • CuDNN > Nvidia 優化 CUDA的庫

  • Tensorflow > Google 在 CuDNN 之上的深度學習框架

  • TFlearn > Tensorflow的前端框架

我們來看看MNIST圖像分類,深度學習的入門任務。

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

用 TFlearn 執行:

6段Python代碼刻畫深度學習歷史:從最小二乘法到深度神經網路

如您在TFlearn示例中所看到的,深度學習的主要邏輯仍然類似於Rosenblatt的感知器。不使用二進位Heaviside step function,今天的網路大多使用Relu activition。在卷積神經網路的最後一層,損失等於categorical_crossentropy。這是勒讓德最小二乘法的演變,是多類別的邏輯回歸。優化器adam起源於 Debye 梯度下降的工作。 Tikhonov的正則化概念以停用層和正則化函數的形式得到廣泛實施。

原文地址:http://blog.floydhub.com/coding-the-history-of-deep-learning/

點擊閱讀原文可查看職位詳情,期待你的加入~

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

「微軟AI已達8000人」加大AI賭注,聯手亞馬遜,與谷歌蘋果抗衡
「世界最大人臉對齊數據集」ICCV 2017:距離解決人臉對齊已不遠
全球肝臟腫瘤病灶區CT圖像分割挑戰大賽,聯想E-Health奪得冠軍
Tesla與AMD合作自駕車AI晶元,是深度合作還是炒作?
用深度學習解決自然語言處理中的7大問題,文本分類、語言建模、機器翻譯等

TAG:新智元 |