深度學習之淺見
通常來說,大家認為深度學習的觀點是Geoffrey Hinton在2006年提出的。這一算法提出之后,得到了迅速的發展。關于深度學習,zouxy09的專欄中有詳細的介紹,Free Mind的博文也很值得一讀。本博文是我對深度學習的一點看法,主要內容在第4、5部分,不當之處還請指教。
1.深度學習
深度學習,即Deep Learning,是一種學習算法(Learning algorithm)。學習算法這個很好理解,那么Deep指的是什么呢?這里的Deep是針對算法的結構而言的。
譬如,SVMs及Logistic Regression被稱為淺層學習,是因為其隱藏節點只有一層。也就是說,這些算法只通過了一層“思考”就得到了答案,所以它們是淺顯的。然而,深度學習的結構中有多個隱藏層,所以起了一個名字叫做Deep。博文Deep learning:十六(deep networks)中對這種結構的優缺點做了說明。
2.波爾茲曼機
深度學習是基于Deep Belief Nets提出的算法。Hinton的論文中,是從受限波爾茲曼機(RBMs)中引出的Deep Belief Nets。波爾茲曼機的結構圖如下(來自百度圖片,這個圖實際上不對,隱層節點和可見層節點兩兩之間都有連線)。
受限波爾茲曼機去掉了同層之間節點的連線,結構圖如下(來自受限波爾茲曼機)。
波爾茲曼機的相關知識具體可以參考Simon Haykin的《神經網絡原理》第三版。受限波爾茲曼機有很多好的博文,譬如受限波爾茲曼機。波爾茲曼機的學習規則是使得學習之后的似然函數取值最大,然而作為無監督學習,似然函數從何而來?
Hinton原來是學物理的,《神經網絡原理》中把波爾茲曼機分在了植根于統計力學的隨機機器這一章中。波爾茲曼機中定義了一個系統能量,并基于此定義了各個狀態的概率。這些都是基于統計熱力學得出的。在這一基礎上,可以寫出似然函數,之后利用梯度方法對網絡進行迭代。
受限波爾茲曼機的疊加得到了深度信度網絡(deep belief nets),可參考深度學習概述:從感知機到深度網絡或Hinton的《A Fast Learning Algorithm for Deep Belief Nets》
深度信度網絡的訓練方法被稱為是一種 fast, greedy algorithm。就如上圖(來自受限波爾茲曼機)所表示,首先,我們認為x和h1組成RBM,對其進行訓練;之后,固定此處的w,訓練h1和h2,并以此類推。
3.稀疏自編碼器
UFLDL教程中是利用稀疏自編碼其來導出的深度信度網絡,以及深度學習算法的。個人覺得這比玻爾茲曼機好理解多了。稀疏自編碼器如下所示(來自UFLDL教程),它的理論建立在多層感知器的反向傳播(back propagate)算法上。
和2中類似,深度網絡可以表示為如下形式(來自受限波爾茲曼機)。同樣可以采用逐層訓練的方法。
4.我們所理解的,是我們看到的世界
記得之前看過一本叫做《數學基捶的書,其中有一段印象深刻。“為何在集論可推出的無數種結構中,只有少數幾種得到了重要的地位?為何有些概念更加有趣?形形色色的數學理論盛衰由人類的實踐決定。”那么,我們是否可以認為,數學從一無所有開始,通過限定公理,建立起一套合適的數學理論來擬合我們看到的世界?而深度學習擬合的又是什么?為何深度學習能夠在包括計算機視覺在內的眾多領域取得成功?深度學習——機器學習——人工智能,擬合的是我們看到的世界。
稀疏自編碼器的解釋
根據信息不增定理,在網絡傳播過程中熵減少。而稀疏編碼器中的隱藏元個數小于輸入維度。因此,隱藏元是一個自編碼的過程,在這個過程中盡可能的保留輸入的信息。在深度網絡中,每一層的訓練亦是如此。
研究表明,人腦的神經元連接也是多層的。由此發展出的神經網絡(多層感知器)和由稀疏自編碼器構成的深度網絡具有相同的結構。一個不恰當的表示是,網絡的訓練過程是使得每一層保留的熵最大,這樣整個網絡的輸出才有可能有盡可能大的熵(在限定的網絡結構下)。那么,為何這一條規則可以在網絡訓練中取得成功?
因為熵是人定義出來的,并不是真實存在,卻幫助人更好的去理解這個世界。由稀疏自編碼器導出的深度學習網絡利用這一條規則對人腦進行了成功的模擬。如果這一條規則(即人腦的對信息的處理不滿足保留熵最大)不成立,那么就不符合人對世界的認知,在人類發展過程中,熵的定義就會被淘汰。所以這一條規則是成立的,這樣訓練出來的網絡,和人的大腦有共同之處。
波爾茲曼機的解釋
對于波爾茲曼機及其背后的物理思想,自己還沒有搞明白。然而,物理是一門對自然萬物運行的機理進行解釋的科學,統計熱力學也不例外。人自身即置于這個世界之內,建立的理論大概也是殊途同歸吧。對于這一點,由于自己學識所限,不敢妄加揣測。
5.道可道,非常道
看過《老子》之后后,大抵都會糾結于一個問題——什么是道?我個人傾向于把“道”理解為天地,或是天地之間的規則,而這個規則不是永恒不變的。“道”可以視作為一種機制,形形色色的生物是其運行的不同結果。那么,回到4中那句“形形色色的數學理論盛衰由人類的實踐決定”,數學理論的盛衰真的是人類的實踐決定的嗎?只有在人意識到某一種理論的不足的時候,才會有新的理論的發展,有了發展和變化,才會有盛衰。人認識世界,世界改變人的認識,數學理論的盛衰由“道”決定。
回歸正題。
1.對于SVMs等淺層學習,什么是道?
2.深度學習的道?
3.道法自然、修道
很多淺層學習算法可以看作是從被標記的數據之間尋找規律的過程,對于網絡結構本身而言,它的“道”是一組組人為建立的被標記的數據。我們試圖去建立一個屬于它們的世界,讓它們在我們建立的世界中學習。然而,這個過程是困難的,不談淺層網絡的結構對其表示的影響,和真實的世界相比,我們建立的用來訓練淺層網絡的世界太簡單,對真實世界的表示有太大的局限性。
深度學習的過程是不一樣的。認識到建立一個世界的困難之后,試圖利用世界本身去訓練網絡。然而這個過程是沒有有反饋的(即無監督學習),我們把人本身作為橋梁,利用我們抽象出的規則,和合適的結構(多層感知器)去構造一個能夠表達真實世界規律的人工網絡。
對于Deep belief Nets,我們做的還是太多了,太“有為”了。無論從結構上,還是其規則的限定上(我們把網絡的訓練問題過多的限制成優化問題了)。修道,一般指突破天地限制,大徹大悟的過程。如果有一天,算法能夠突破人為的限定,和人所在的世界交互,那算是修道成功了吧!
6.其他
這段時間煩心事很多,博客本來都不想寫了,后來想想,還是應該堅持下去。這篇博文主要是想把我現在的看法表達出來,行文有點慘不忍睹,觀點也有很多錯誤,還請大家見諒。