CNN的重點整理


1.常用的非線性激活函數: sigmoid、tanhrelu等等,前兩者sigmoid/tanh比較常見於全鏈接層,後者relu常見於卷積層。這裏先簡要介紹下最基礎的sigmoid函數(btw,在本博客中SVM那篇文章開頭有提過)。

    sigmoid的函數表達式如下

    其中z是一個線性組合,比如z可以等於:b +* + *通過代入很大的正數或很小的負數到g(z)函數中可知,其結果趨近於0或1

    因此,sigmoid函數g(z)的圖形表示如下( 橫軸表示定義域z,縱軸表示值域g(z) ):

    也就是說,sigmoid函數的功能是相當於把一個實數壓縮至0到1之間。當z是非常大的正數時,g(z)會趨近於1,而z是非常大的負數時,則g(z)會趨近於0。

    壓縮至0到1有何用處呢?用處是這樣一來便可以把激活函數看作一種“分類的概率”,比如激活函數的輸出爲0.9的話便可以解釋爲90%的概率爲正樣本。

    舉個例子,如下圖(圖引自Stanford機器學習公開課

邏輯與

    z = b +* + *,其中b爲偏置項 假定取-30,都取爲20

  • 如果 = 0 = 0,則z = -30,g(z) = 1/( 1 + e^-z )趨近於0。此外,從上圖sigmoid函數的圖形上也可以看出,當z=-30的時候,g(z)的值趨近於0
  • 如果 = 0  = 1,或 =1 = 0,則z = b +* + * = -30 + 20 = -10,同樣,g(z)的值趨近於0
  • 如果 = 1  = 1,則z = b +* + * = -30 + 20*1 + 20*1 = 10,此時,g(z)趨近於1。

    換言之,只有都取1的時候,g(z)→1,判定爲正樣本;取0的時候,g(z)→0,判定爲負樣本如此達到分類的目的。

2.什麼是卷積: 對圖像(不同的數據窗口數據)和濾波矩陣(一組固定的權重:因爲每個神經元的多個權重固定,所以又可以看做一個恆定的濾波器filter)做內積(逐個元素相乘再求和)的操作就是所謂的『卷積』操作,也是卷積神經網絡的名字來源。

3.兩大機制:

  1. 左邊數據在變化,每次濾波器都是針對某一局部的數據窗口進行卷積,這就是所謂的CNN中的局部感知機制。
    • 打個比方,濾波器就像一雙眼睛,人類視角有限,一眼望去,只能看到這世界的局部。如果一眼就看到全世界,你會累死,而且一下子接受全世界所有信息,你大腦接收不過來。當然,即便是看局部,針對局部裏的信息人類雙眼也是有偏重、偏好的。比如看美女,對臉、胸、腿是重點關注,所以這3個輸入的權重相對較大。
  2. 與此同時,數據窗口滑動,導致輸入在變化,但中間濾波器Filter w0的權重(即每個神經元連接數據窗口的權重)是固定不變的,這個權重不變即所謂的CNN中的參數(權重)共享機制。
  • 再打個比方,某人環遊全世界,所看到的信息在變,但採集信息的雙眼不變。btw,不同人的雙眼 看同一個局部信息 所感受到的不同,即一千個讀者有一千個哈姆雷特,所以不同的濾波器 就像不同的雙眼,不同的人有着不同的反饋結果。
     附經典動圖理解多通道卷積:

4.cnn層級結構:

  • 最左邊是數據輸入層,對數據做一些處理,比如去均值(把輸入數據各個維度都中心化爲0,避免數據過多偏差,影響訓練效果)、歸一化(把所有的數據都歸一到同樣的範圍)、PCA/白化等等。CNN只對訓練集做“去均值”這一步。

    中間是

  • CONV:卷積計算層,線性乘積求和。
  • RELU:激勵層,上文2.2節中有提到:ReLU是激活函數的一種。
  • POOL:池化層,簡言之,即取區域平均或最大。(特徵數大大減少)

    最右邊是

  • FC:全連接層
參考原博客:http://blog.csdn.net/v_july_v/article/details/51812459#comments

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章