1. 程式人生 > >DeepLearning-NLP-NN&RNN&LSTM正向傳播和反向傳播

DeepLearning-NLP-NN&RNN&LSTM正向傳播和反向傳播

DeepLearning-NLP-NN&RNN&LSTM正向傳播和反向傳播

神經網路NN結構、傳播及修正

神經網路結構圖

數學公式描述經典網路中每一個神經元的工作

(1)輸入x ;
(2)計算z=w*x +b (其中b一般為0向量);
(3)輸出new_x = f(z),這裡的f是一個函式,可以是sigmoid、tanh、relu等,f就是上文所說到的激勵函式。

如何反向傳播(BP(Backpropagation)神經網路)

反向傳播的目標是對權重進行優化,使得神經網路能夠學習到從任意的輸入到輸出的準確對映。
第一步:結合BP神經網路,誤差由輸出層展開之輸入層的過程如下:
在這裡插入圖片描述
第二步:通過誤差E求偏導來調節權重,使權重得到最優權重(SGD或者梯度下降)
在這裡插入圖片描述

神經網路反向傳播工作例子

神經網路有2個輸入神經元,2個隱層神經元以及2個輸出神經元。此外,隱層和輸出神經元會包含一個偏置(b1、b2,即為wx+b中的b),下面是基本的網路結構:
在這裡插入圖片描述
1、初始化:我們對該網路設定一些初始的權重、偏置以及輸入和輸出:在這裡插入圖片描述
2、前向傳播:

計算各個神經元的淨輸入和啟用值,其中net表示淨輸入(啟用前的值),out表示啟用後的值,下標h表示隱藏層相關,下標o表示輸出層相關。
在這裡插入圖片描述


3、計算誤差(損失):

可以自己設計或者使用現在已有的損失函式計算誤差(損失),本例使用方差。
在這裡插入圖片描述

4、反向傳播:
用損失E對所有矩陣權重和偏置求導,其中對w5的求導過程如下:
在這裡插入圖片描述

5、梯度下降更新所有的權重和偏置:
本次網路調整後w5的新值應該為:
在這裡插入圖片描述
6、誤差E對w1求偏導:
注意:w1對兩個輸出的誤差都有影響,所以反向傳播需要加和Eo1和Eo2對w1的偏導:
在這裡插入圖片描述

通過以上過程可以更新所有權重,再次迭代更新,直到滿足條件。
參考博文:
https://blog.csdn.net/leiting_imecas/article/details/60463897
https://yq.aliyun.com/ziliao/282825?spm=a2c4e.11155472.blogcont.20.5bf35f18lpWK4a


https://blog.csdn.net/a819825294/article/details/53393837

RNN結構、傳播及修正:

RNN網路結構

右圖為RNN的縮圖,每個黑圈代表一個網路層,表示網路每次能處理的單元(比如一個word表示為的n維的vector),每條黑線表示各個層之間的權重矩陣。

左圖為右圖的展開,將右圖所表示的每個層細化到神經網路的最小單元-神經元。左圖中Input Layer的神經元表示一個元素(數字),Hidden Layer和Output Layer的神經元中有f符號代表啟用函式,它們啟用的也是一個元素(數字),每條連線的線上有權重,表示每個神經元之間的權重係數,權重係數為一個元素(數字)。Input Layer的所有元素和Hidden Layer的第i個神經元相關的權重做運算得出第i神經元的淨輸入,通過啟用函式之後得到第i個神經元的淨輸出,Hidden Layer的所有神經元都做類似的運算,只是各個神經元的權重係數不相同。Hidden Layer到 Output Layer的計算過程同理。和NN的不同之處在於,RNN的Hidden Layer的輸出會作為下一時間步的輸入,所以有了左圖中hidden Layer輸出作為hidden layer的輸入。
在這裡插入圖片描述

將RNN按時間步展開:

前向傳播時,RNN的每個時間步共享所有的權重矩陣(每個時間步的權重矩陣都是相同的),在時間步到達T(最長時間步)時,計算所有時間步的累積誤差(損失),然後反向傳播調整網路的權重矩陣。
在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

LSTM

參考博文:
http://lib.csdn.net/article/deeplearning/45510
https://yq.aliyun.com/ziliao/282827?spm=a2c4e.11155472.blogcont.23.572b43f7vr81fe
https://wugh.github.io/posts/2016/03/cs224d-notes4-recurrent-neural-networks-continue/