MLP綜述

   看了CSDN上介紹MLP的文章,有介紹原理,有介紹公式的,這篇文章是基於當時看很多篇別人的博整理的筆記(未標註原文出處,原文作者有意見請聯繫晴嫣,保證添加到參考鏈接中),MLP整體思路。


    單層感知器是最簡單的神經網絡。它包含輸入層和輸出層,輸入層和輸出層直接相連。

    單個感知器無法解決非線性問題,由多個感知器組合可以來實現非線性分類面

    但是簡單的組合,得到的依舊是線性分類器,爲了解決這個問題,有了MLP,MLP是單層感知機的推廣,與單層感知機的本質區別是增加了隱含層。

    隱藏層的神經元與輸入層是全連接的,假設輸入層用向量X表示,則隱藏層的輸出就是f(W1X+b1),W1是權重(也叫連接係數),b1是偏置,函數f可以是常用的sigmoid函數或者tanh函數,特點是連續可微。

   最後就是輸出層,其實隱藏層到輸出層可以看成是一個多類別的邏輯迴歸,也即softmax迴歸,所以輸出層的輸出就是softmax(W2X1+b2),X1表示隱藏層的輸出f(W1X+b1)。

   因此,MLP所有的參數就是各個層之間的連接權重以及偏置,包括W1、b1、W2、b2。對於一個具體的問題,如何確定這些參數。求解最佳的參數是一個最優化問題,解決最優化問題,最簡單的就是梯度下降法了(SGD):首先隨機初始化所有參數,然後迭代地訓練,不斷地計算梯度和更新參數,直到滿足某個條件爲止(比如誤差足夠小、迭代次數足夠多時)。這個過程涉及到代價函數、規則化(Regularization)、學習速率(learning rate)、梯度計算等。

    

    因爲這種聯接圖沒有閉環或迴路。我們可以用反向傳播法(back propagation)來訓練上述這個神經網絡。

    反向傳播算法分二步進行,即信號的正向傳播和誤差的反向傳播。這兩個過程的工作簡述如下。

1.正向傳播

    在逐層處理的過程中,每一層神經元的狀態只對下一層神經元的狀態產生影響。在輸出層把現行輸出和期望輸出進行比較,如果現行輸出不等於期望輸出,則進入反向傳播過程。

2.反向傳播

    反向傳播時,把誤差信號按原來正向傳播的通路反向傳回,並對每個隱層的各個神經元的權係數進行修改,以望誤差信號趨向最小。


BP算法具體流程如下:

①前向傳播:給各連接權值分別賦一個區間(-1,1)內的隨機數,選擇一個數據輸入,從第一層開始,計算每一層輸出並保存各層輸出。

②反向傳播:計算最後一層輸出和目標輸出的差e=t-a,並根據公式計算最後一層的敏感性,其中爲網絡第M層輸出函數對淨輸入n求導,最後一層爲線性函數,求導爲1。按照公式計算前一層的敏感性,直到第一層,其中爲第m層到m-1層的權值。

③調權值:可以從第一層開始,也可以從最後一層開始進行調權。


④選擇下一個輸入,繼續上面的過程,直到網絡收斂爲止。


BP算法存在的問題:

(1)梯度越來越稀疏:從頂層越往下,誤差校正信號越來越小;

(2)收斂到局部最小值:尤其是從遠離最優區域開始的時候(隨機值初始化會導致這種情況的發生);

(3)一般,我們只能用有標籤的數據來訓練:但大部分的數據是沒標籤的,而大腦可以從沒有標籤的的數據中學習。

    

由此提出改進算法:

基於動量的BP學習算法

    由於BP算法的收斂速度比較慢,可能有多個局部極小點,有不穩定性,故提出基於動量的BP算法。它能平滑振盪提高收斂性能。故引入一個動量係數 ,當動量係數增加時,振盪減小,從而有利於減少振盪數目,保持平均值。

動量可以維持算法穩定的前提下使用更高的學習速度。動量法降低了網絡對於誤差曲面局部細節的敏感性,有效的抑制網絡陷入局部最小。

可變學習速度的BP算法

    它試圖在較平坦的曲面提高學習速度,而在斜率增大時減小學習速度。它的規則如下:

1)如果誤差平方(在整個訓練集上)在權值更新後增加了百分數z (典型值爲1%至5%),則取消權值更新,學習速度乘上一個因子 (1 > r > 0),並且動量係數 g 置爲 0。

2)如果誤差平方在權值更新後減少,則接受權值更新,並且學習速度乘上一個因子 h>1,如果動量係數 g 先前被置爲0,則恢復到先前的值。

3)如果誤差平方的增加少於z,則接受權值更新,但是學習速度和動量係數不變。

    改進的BP算法也有些缺點:需要設置一些額外的參數,並且算法性能對參數變化很敏感,參數的選擇還和問題有關。容易使一些能收斂的數據變得不可收斂。目前還有許多的改進算法,這些方法中應用最廣的是增加了衝量(動量)項的改進BP算法。




發佈了35 篇原創文章 · 獲贊 36 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章