1. 程式人生 > >深度學習為何要“deep”下

深度學習為何要“deep”下

深層學習開啟了人工智慧的新時代。不論任何行業都害怕錯過這一時代浪潮,因而大批資金和人才爭相湧入。但深層學習卻以“黑箱”而聞名,不僅調參難,訓練難,“新型”網路結構的論文又如雨後春筍般地湧現,使得對所有結構的掌握變成了不現實。我們缺少一個對深層學習合理的認識。

神經網路並不缺少新結構,但缺少一個該領域的E=mc2

很多人在做神經網路的實驗時會發現調節某些方式和結構會產生意想不到的結果。但就我個人而言,這些發現並不會讓我感到滿足。我更關心這些新發現到底告訴我們了什麼,造成這些現象的背後原因是什麼。我會更想要將新的網路結構歸納到已有的體系當中。這也是我更多思考“為何深層學習有效”的原因。下面便是目前YJango關於這方面的見解。

深層神經網路相比一般的統計學習擁有從數學的嚴謹中不會得出的關於物理世界的先驗知識(非貝葉斯先驗)。該內容也在Bengio大神的論文和演講中多次強調。大神也在Bay Area Deep Learning School 2016的Founda’ons and Challenges of Deep Learning pdf(這裡也有視訊,需翻牆)中提到的distributed representations和compositionality兩點就是神經網路和深層神經網路高效的原因(若有時間,強烈建議看完演講再看該文)。雖然與大神的思考起點可能不同,但結論完全一致(看到Bengio大神的視訊時特別興奮)。下面就是結合例子分析:
1. 為什麼神經網路高效
2. 學習的本質是什麼
3. 為什麼深層神經網路比淺層神經網路更高效
4. 神經網路在什麼問題上不具備優勢

其他推薦讀物

  • Bengio Y. Learning deep architectures for AI[J]. Foundations and trends® in Machine Learning, 2009, 2(1): 1-127.
  • Brahma P P, Wu D, She Y. Why Deep Learning Works: A Manifold Disentanglement Perspective[J]. 2015.
  • Lin H W, Tegmark M. Why does deep and cheap learning work so well?[J]. arXiv preprint arXiv:1608.08225, 2016.
  • Bengio Y, Courville A, Vincent P. Representation learning: A review and new perspectives[J]. IEEE transactions on pattern analysis and machine intelligence, 2013, 35(8): 1798-1828.

YJango的整個思考流程都圍繞減熵二字進行。之前在《熵與生命》和《生物學習》中討論過,生物要做的是降低環境的熵,將不確定狀態變為確定狀態。通常機器學習是優化損失函式,並用概率來衡量模型優劣。然而概率正是由於無法確定狀態才不得不用的衡量手段。生物真正想要的是沒有絲毫不確定性。

深層神經網路在自然問題上更具優勢,因為它和生物學習一樣,是找回使熵增加的“物理關係”(知識,並非完全一樣),將變體(2n)轉化回因素(n)附帶物理關係的形式,從源頭消除熵(假設每個因素只有兩種可能狀態)。這樣所有狀態間的關係可以被確定,要麼肯定發生,要麼絕不發生,也就無需用概率來衡量。因此下面定義的學習目標並非單純降低損失函式,而從確定關係的角度考慮。一個完美訓練好的模型就是兩個狀態空間內所有可能取值間的關係都被確定的模型。

學習目標:是確定(determine)兩個狀態空間內所有可能取值之間的關係,使得熵儘可能最低。

:對熵不瞭解的朋友可以簡單記住,事件的狀態越確定,熵越小。如絕不發生(概率0)或肯定發生(概率為1)的事件熵小。而50%可能性事件的熵反而大。

為舉例說明,下面就一起考慮用神經網路學習以下兩個集合的不同關聯(OR gate和 XOR gate)。看看隨著網路結構和關聯的改變,會產生什麼不同情況。尤其是最後網路變深時與淺層神經網路的區別。

:選擇這種XOR這種簡單關聯的初衷是輸入和輸出空間狀態的個數有限,易於分析變體個數和熵增的關係。

:用“變體(variation)”是指同一類事物的不同形態,比如10張狗的圖片,雖然外貌各異,但都是狗。

問題描述:集合A有4個狀態,集合B有2個狀態。0和1只是用於表示不同狀態的符號,也可以用0,1,2,3表示。狀態也並不一定表示數字,可以表示任何物理意義。

A={00,01,10,11}

B={0,1}

方式1:記憶

  • 隨機變數X:可能取值是 {00,01,10,11}
  • 隨機變數Y:可能取值是 {0,1}

    :隨機變數(大寫X)是將事件投射到實數的函式。用對應的實數表示事件。而小寫字母x表示對應該實數的事件發生了,是一個具體例項。

  • 網路結構:暫且不規定要學習的關聯是OR還是XOR,先建立一個沒有隱藏層,僅有一個輸入節點,一個輸出節點的神經網路。
  • 表示式y=M(x)=ϕ(w1x+b)ϕ表示sigmoid函式。
  • 說明:下圖右側中的虛線表示的既不是神經網路的連結,也不是函式中的對映,而是兩個空間中,所有可能值之間的關係(relation)。學習的目的是確定這些狀態的關係。比如當輸入00時,模型要嘗試告訴我們00到1的概率為0,00到0的概率為1,這樣熵H(X)=ipi(x)logpi(x)才會為零。
  • 關係圖:左側是網路結構,右側是狀態關係圖。輸入和輸出空間之間共有8個關係(非箭頭虛線表示關係)。除非這8個關係對模型來說都是相同的,否則用wh1表示f:XY時的熵H(M(X),X)就會增加。(wh1無法照顧到8個關係,若完美擬合一個關係,其餘的關係就不準確)

    :這裡YJango是wh1用表示ϕ(wh1x+b)的縮寫。

  • 資料量:極端假設,若用查詢表來表示關係:需要用8個不同的(x,y)資料來記住想要擬合的f:XY

方式2:手工特徵

  • 特徵:空間A的4個狀態是由兩個0或1的狀態共同組成。我們可以觀察出來(計算機並不能),我們利用這種知識k()A中的狀態分解開(disentangle)。分解成兩個獨立的子隨機變數H1={0,1}H2={0,1}。也就是用二維向量表示輸入。
  • 網路結構:由於分成了二維特徵,這次網路結構的輸入需改成兩個節點。下圖中的上半部分是,利用人工知識k()將隨機變數X無損轉變為H1H2的共同表達(representation)。這時h1h2一起形成網路輸入。

    k()旁邊的黑線(實線表示確定關係)並非是真正的神經網路結構,只是方便理解,可以簡單想象成神經網路轉變的。

  • 表示式y=M(h)=ϕ(Whh+b)

    :方便起見,wh1h1+wh2h2寫成了矩陣的表達形式Whh,其中b是標量,而Wh=[wh1wh2]h⃗ =[h1h2]

  • 關係圖:由於k()固定,只考慮下半部分的關係。因為這時用了兩條線wh1wh2來共同對應關係。原本需要擬合的8個關係,現在變成了4個(兩個節點平攤)。同樣,除非右圖的4條紅色關係線對wh1來說相同,並且4條綠色關係線對wh2來說也相同,否則用