前饋網絡及反向傳播

本文主要介紹多層感知器模型(MLP),它也可以看成是一種logister迴歸,輸入層通過非線性轉換,即通過隱含層把輸入投影到線性可分的空間中。

如果我們在中間加一層神經元作爲隱含層,則它的結構如下圖所示

    單隱層的MLP定義了一個映射: ,其中 D和L爲輸入向量和輸出向量f(x)的大小。

    隱含層與輸出層神經元的值通過激活函數計算出來,例如下圖:如果我們選用sigmoid作爲激活函數,輸入設爲x,要求出隱含層的激活值a,公式如下。其中 。

    同理輸出的h(x)可以用同樣的公式得到,上述過程就是向前傳導,因爲這種聯接圖沒有閉環或迴路。

    我們可以用反向傳播法(backpropagation)來訓練上面這個神經網絡。下面主要介紹backpropation算法。

    假設對於單個樣例(x,y),它的代價函數(cost function)爲

    對於一個樣本集 ,定義它的cost function爲:

    我們要做的就是最小化上述式子,類似於最小二乘,不同的是加上了第二項的權重衰減,它是用來防止過擬合,可以把它看成是一個約束項,而整個式子就是求解最值的拉格朗日公式。我們的目標是針對參數    來求其函數  的最小值。爲了求解神經網絡,我們需要將每一個參數    初始化爲一個很小的、接近零的隨機值(比如說,使用正態分佈  生成的隨機值,其中  設置爲  ),之後對目標函數使用諸如批量梯度下降法的最優化算法。關於wb的初值,我根據這篇論文(Understanding the difficulty of training deep feedforward neuralnetworks)得出的結論:如果激活函數爲tanh,我們設置爲之間的值,如果激活函數是sigmoid,則是 

 


 

    關於反向傳播算法的推導,UFLDL 中介紹的很清楚,我直接粘帖過來了。

    既然是用梯度下降法,我們先對代價函數J求關於w的偏導數,直接寫出結果:

    

    反向傳播算法的思路如下:給定一個樣例 ,我們首先進行"前向傳導"運算,計算出網絡中所有的激活值,包括  的輸出值。之後,針對第  層的每一個節點 ,我們計算出其"殘差,該殘差表明了該節點對最終輸出值的殘差產生了多少影響。對於最終的輸出節點,我們可以直接算出網絡產生的激活值與實際值之間的差距,我們將這個差距定義爲  (第  層表示輸出層)。對於隱藏單元我們如何處理呢?我們將基於節點(譯者注:第  層節點)殘差的加權平均值計算 ,這些節點以  作爲輸入。下面將給出反向傳導算法的細節:

 

  1. 進行前饋傳導計算,利用前向傳導公式,得到  直到輸出層  的激活值。
  2. 對於第  層(輸出層)的每個輸出單元 ,我們根據以下公式計算殘差:

[譯者注:

]

  1.   的各個層,第  層的第  個節點的殘差計算方法如下:

{譯者注:

將上式中的的關係替換爲的關係,就可以得到:

    

以上逐次從後向前求導的過程即爲"反向傳導"的本意所在。 ]

  1. 計算我們需要的偏導數,計算方法如下:

        

  最後,我們用矩陣-向量表示法重寫以上算法。我們使用"表示向量乘積運算符(在MatlabOctave裏用".*"表示,也稱作阿達馬乘積)。若 ,則 。在上一個教程中我們擴展了  的定義,使其包含向量運算,這裏我們也對偏導數  也做了同樣的處理(於是又有  )。


  那麼,反向傳播算法可表示爲以下幾個步驟:

  1. 進行前饋傳導計算,利用前向傳導公式,得到 直到輸出層  的激活值。
  2. 對輸出層(第  層),計算:

    

  1. 對於  的各層,計算:

    

  1. 計算最終需要的偏導數值:

    

實現中應注意:在以上的第2步和第3步中,我們需要爲每一個  值計算其 。假設  sigmoid函數,並且我們已經在前向傳導運算中得到了 。那麼,使用我們早先推導出的 表達式,就可以計算得到 


最後,我們將對梯度下降算法做個全面總結。在下面的僞代碼中, 是一個與矩陣  維度相同的矩陣, 是一個與  維度相同的向量。注意這裏""是一個矩陣,而不是"   相乘"。下面,我們實現批量梯度下降法中的一次迭代:

 

  1. 對於所有 ,令  ,  (設置爲全零矩陣或全零向量)
  2. 對於   
    1. 使用反向傳播算法計算   
    2. 計算 
    3. 計算 
  3. 更新權重參數:

    

    

    注意:爲了使代價函數更快的收斂,首先要對輸入數據進行歸一化。

    上面忘了講tanh激活函數,,非線性數據圍繞原點對稱更容易很好的收斂代價函數,因爲它們傾向於產生零均值輸入到下一層,一般講,tanh有更好的收斂性能。

    

本文轉自:http://www.cnblogs.com/loujiayu/p/3545026.html

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