小白日常學習---BP算法

BP算法詳細總結
神經網絡

個人學習之後的理解,隨手筆記。

這裏可以用一個簡單的小遊戲來解釋該網絡,猜物品遊戲,先給對方一個大致的範圍,比如蘋果,給定食物的範圍,然後對方去猜(這就可以理解爲正向傳播),答錯之後繼續給提示(反向傳播),這樣有來有往直到猜到答案,就構成一個簡單的BP網絡。

在style transfer中就是,將input feature map 與output進行損失值的最小化匹配,也就是看結果是否相似,不同時就根據現在結果原路返回繼續進行參數調整,直到結果相同。
下面就根據學習的進行一些彙總理解。
一個簡單的神經網絡學習模型可以用下圖進行表示,
在這裏插入圖片描述
輸入部接收外來的輸入樣本X,由訓練部進行網絡的權係數W調整,然後由輸出部輸出結果。在這個過程中,期望的輸出信號可以作爲教師信號輸入,由該教師信號與實際輸出進行比較,產生的誤差去控制修改權係數W。

在風格遷移中有loss損失函數,假設對於content loss,這裏就可以理解爲output 與content input進行比較,對於產生的誤差經過不斷更新優化對應的權重值,促使誤差最小化,使得output逼近最終的效果,在content上與輸入相近。

在修改權重係數時有一個權重變化率n, n的取值一般在0到1之間,n取值太大則會影響w的穩定;取值也不能太小,太小則會使W的求取過程收斂速度太慢。

BP算法用於前饋多層網絡的學習算法,(爲了解決多層前向神經網絡的權係數優化而提出來的),前饋多層網絡的結構一般如圖1—12所示
在這裏插入圖片描述
它含有輸人層、輸出層以及處於輸入輸出層之間的中間層。中間層有單層或多層,由於它們和外界沒有直接的聯繫,故也稱爲隱層。在隱層中的神經元也稱隱單元。 隱層雖然和外界不連接.但是,它們的狀態則影響輸入輸出之間的關係。這也是說,改變隱層的權係數,可以改變整個多層神經網絡的性能。

設有一個m層的神經網絡,並在輸入層有樣本X;設第k層的i神經元的輸入總和表示爲Ui k ,輸出Xi k ;從第k—1層的第j個神經元到第k層的第i個神經元的權係數爲Wij 各個神經元的激發函數爲f,則各個變量的關係可用下面有關數學式表示:
在這裏插入圖片描述
反向傳播算法分二步進行,即正向傳播和反向傳播。這兩個過程的工作簡述如下。

1.正向傳播

輸入的樣本從輸入層經過隱單元一層一層進行處理,通過所有的隱層之後,則傳向輸出層;在逐層處理的過程中,每一層神經元的狀態只對下一層神經元的狀態產生影響。在輸出層把現行輸出和期望輸出進行比較,如果現行輸出不等於期望輸出,則進入反向傳播過程。(torch7中的定義層)

function NewClass:updateOutput(input)
end

2.反向傳播

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

function NewClass:updateGradInput(input, gradOutput)
end

那麼BP算法的實質就是使網絡輸出誤差Ltotal值達到最小,BP算法具體就是採用“最速下降法”使總誤差函數儘量達到最小。

.最速下降法,即梯度下降算法,使權值調整量與誤差的梯度下降成正比。也就是說調整後權值使下次迭代計算的誤差沿各權值的梯度方向是下降的,那麼輸出總誤差是趨於減少的。此法可使網絡輸出誤差達到局部極小,但是不能保證達到全局最小。

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