Deep Learning 神經網絡為啥可以識別?
今天看到一些感興趣的東西,現在總結了給大家分享一下,如果有錯,希望大家指正批評,謝謝!那就開始進入正題。
先從簡單的說起來吧!
一、基本變換:層
一般的神經網絡是由一層一層堆疊而成的,但是每層究竟在做啥呢?
我從三個方面述說一下:
-
數學公式
Y = a*(W*X+b)
其中Y是輸出量,X是輸入量,a()是一個激活函數,W是權重矩陣,b是偏置向量。每一層都是通過該公式簡單的得到輸出Y。
-
數學理解
通過如下5種對輸入空間(輸入向量的集合)的操作,完成 輸入空間 —> 輸出空間 的變換(矩陣的行空間到列空間)。
注:用“空間”二字是指被分類的并不是單個事物,而是一類事物。空間是指這類事物所有個體的集合。
-
升維/降維
-
放大/縮小
-
旋轉
-
平移
-
“彎曲”
這5種操作中,1,2,3的操作由 W*X完成的,4的操作是由+b完成的,5的操作則是由 a()來實現。
每層的數學理解:
用線性變換跟隨著非線性變化,將輸入空間投向另一個空間。
-
物理理解
對 W*X的理解就是通過組合形成新物質,a()又符合了我們所處的世界都是非線性的特點。
假想情景:
X是二維向量,維度是碳原子和氧原子的數量 [C;O],數值且定為 [1;1]。若確定 Y是三維向量,就會形成如下網絡的形狀 (神經網絡的每個節點表示一個維度)。通過改變權重的值,可以獲得若干個不同物質。右側的節點數決定了想要獲得多少種不同的新物質(矩陣的行數)。
若權重 W 的數值如(1),那么網絡的輸出Y就會是三個新物質,[二氧化碳,臭氧,一氧化碳]。
若 減少右側的一個節點,并改變權重 W 至(2),那輸出Y就會是兩個新物質, [ O_{0.3} ;CO_{1.5}]。
若再加一層,就是再次通過組合 [CO2;O3;CO] 這三種基礎物質,形成若干個更高層的物質。
若希望通過層網絡能夠從[C, O]空間轉變到 [CO2;O3;CO]空間的話,那么網絡的學習過程就是將 W 的數值變成盡可能接近(1)的過程 。
重要 的是這種組合思想,組合成的東西在神經網絡中并不需要有物理意義,可以是抽象概念。
每層神經網絡的物理理解:
通過現有的不同物質的組合形成新物質。
二、理解角度
現在我們知道了每一層的行為,但這種行為又是如何完成識別任務的呢?
數學視角:“線性可分”
-
一維情景
以分類為例,當要分類正數、負數、零,三類的時候,一維空間的直線可以找到兩個超平面(比當前空間低一維的子空間。當前空間是平面的話,超平面就是點)分割這三類。但面對像分類奇數和偶數無法找到可以區分它們的點的時候,我們借助 x % 2(除2取余)的轉變,把x變換到另一個空間下來比較0和非0,從而分割奇偶數。
-
二維情景
平面的四個象限也是線性可分。但下圖的紅藍兩條線就無法找到一超平面去分割。
神經網絡的解決方法依舊是轉換到另外一個空間下,用的是所說的5種空間變換操作。比如下圖就是經過放大、平移、旋轉、扭曲原二維空間后,在三維空間下就可以成功找到一個超平面分割紅藍兩線 (同SVM的思路一樣)。
上面是一層神經網絡可以做到的空間變化。若把Y當做新的輸入再次用這5種操作進行第二遍空間變換的話,網絡也就變為了二層。最終輸出是:
Y=a2(W2*(a1*(W1*X +b1))+b2)
設想當網絡擁有很多層時,對原始輸入空間的“扭曲力”會大幅增加,如下圖,最終我們可以輕松找到一個超平面分割空間。
當然也有如下圖失敗的時候,關鍵在于“如何扭曲空間”。所謂監督學習就是給予神經網絡網絡大量的訓練例子,讓網絡從訓練例子中學會如何變換空間。每一層的權重 W 就控制著如何變換空間,我們最終需要的也就是訓練好的神經網絡的所有層的權重矩陣。這里有非常棒的可視化空間變換Demo,一定要打開嘗試并感受這種扭曲過程。 更多內容請看Neural Networks, Manifolds, and Topology.
-
線性可分視角:神經網絡的學習就是學習如何利用矩陣的線性變換加激活函數的非線性變換,將原始輸入空間投向線性可分/稀疏的空間去分類/回歸。
-
增加節點數:增加維度,即增加線性轉換能力。
-
增加層數:增加激活函數的次數,即增加非線性轉換次數。
物理視角:“物質組成”
-
類比:
回想上文由碳氧原子通過不同組合形成若干分子的例子。若從分子層面繼續迭代這種組合思想,可以形成DNA,細胞,組織,器官,最終可以形成一個完整的人。繼續迭代還會有家庭,公司,國家等。這種現象在身邊隨處可見。并且原子的內部結構與太陽系又驚人的相似。不同層級之間都是以類似的幾種規則再不斷形成新物質。你也可能聽過分形學這三個字。可通過觀看從1米到150億光年來感受自然界這種層級現象的普遍性。
-
人臉識別情景:
我們可以模擬這種思想并應用在畫面識別上。由像素組成菱角,再組成五官,最后到不同的人臉。每一層代表不同的物質層面 (如分子層)。 每層的 W存儲著如何組合上一層的物質從而形成若干新物質 。 如果我們完全掌握一架飛機是如何從分子開始一層一層形成的,拿到一堆分子后,我們就可以判斷他們是否可以以此形成方式,形成一架飛機。 附:Tensorflow playground展示了數據是如何“流動”的。
-
物質組成視角:神經網絡的學習過程就是學習物質組成方式的過程。
-
增加節點數:增加同一層物質的種類,比如118個元素的原子層就有118個節點。
-
增加層數:增加更多層級,比如分子層,原子層,器官層,并通過判斷更抽象的概念來識別物體。
三、“深層”的思考:真的只有這些原因嗎?
按照上文在理解視角中所述的觀點,可以想出下面兩條理由關于為什么更深的網絡會更加容易識別,增加容納變異體(variation)(紅蘋果、綠蘋果)的能力、魯棒性(robust)。
數學視角:變異體(variation)很多的分類的任務需要高度非線性的分割曲線。不斷的利用那5種空間變換操作將原始輸入空間像“捏橡皮泥一樣”在高維空間下捏成更為線性可分/稀疏的形狀:可視化空間變換。
物理視角:通過對“抽象概念”的判斷來識別物體,而非細節。比如對“飛機”的判斷,即便人類自己也無法用語言或者若干條規則來解釋自己如何判斷一個飛機。因為人腦中真正判斷的不是是否“有機翼”、“能飛行”等細節現象,而是一個抽象概念。層數越深,這種概念就越抽象,所能涵蓋的變異體就越多,就可以容納戰斗機,客機等很多種不同種類的飛機。
然而深層神經網絡的驚人表現真的只有這些原因嗎? 為什么神經網絡過深后,預測的表現又變差? 而且這時變差的原因是由于“過深”嗎?
來自:http://mp.weixin.qq.com/s/yTOctOwd95ZIa2SBV7KVoQ