熱線電話:13121318867

登錄
首頁精彩閱讀神經網絡中的前向和后向算法
神經網絡中的前向和后向算法
2018-08-20
收藏

神經網絡中的前向和后向算法

看了一段時間的深度網絡模型,也在tf和theano上都跑了一些模型,但是感覺沒有潛下去,對很多東西的理解都只停留在“這個是干什么的”層次上面。昨天在和小老師一起看一篇文章的時候,就被問到RNN里面的后向傳播算法具體是怎么推。當時心里覺得BP算法其實很熟悉啊,然后在推導的過程中就一臉懵逼了。于是又去網上翻了翻相關內容,自己走了一遍,準備做個筆記,算是個交代。

準備一個神經網絡模型,比如:

其中,[i1,i2]

代表輸入層的兩個結點,[h1,h2]代表隱藏層的兩個結點,[o1,o2]為輸出。[b1,b2]

為偏置項。連接每個結點之間的邊已經在圖中標出。

來了解一下前向算法:

前向算法的作用是計算輸入層結點對隱藏層結點的影響,也就是說,把網絡正向的走一遍:輸入層—->隱藏層—->輸出層
計算每個結點對其下一層結點的影響。
?? 例如,我們要算結點h1

的值,那么就是:

是一個簡單的加權求和。這里稍微說一下,偏置項和權重項的作用是類似的,不同之處在于權重項一般以乘法的形式體現,而偏置項以加法的形式體現。
??而在計算結點o1時,結點h1的輸出不能簡單的使用neth1的結果,必須要計算激活函數,激活函數,不是說要去激活什么,而是要指“激活的神經元的特征”通過函數保留并映射出來。以sigmoid函數為例,h1的輸出:


于是


最后o1的輸出結果,也就是整個網絡的一個輸出值是:

按照上面的步驟計算出out02,則[outo1,outo2]就是整個網絡第一次前向運算之后得到的結果。

后向算法:

??在實際情況中,因為是隨機給定的權值,很大的可能(幾乎是100%)得到的輸出與實際結果之間的偏差非常的大,這個時候我們就需要比較我們的輸出和實際結果之間的差異,將這個殘差返回給整個網絡,調整網絡中的權重關系。這也是為什么我們在神經網絡中需要后向傳播的原因。其主要計算步驟如下:
1. 計算總誤差

2. 隱藏層的權值更新
在要更新每個邊的權重之前,必須要知道這條邊對最后輸出結果的影響,可以用整體誤差對w5求偏導求出:

具體計算的時候,可以采用鏈式法則展開:

在計算的時候一定要注意每個式子里面哪些自變量是什么,求導千萬不要求錯了。
??需要講出來的一個地方是,在計算w1的權重時,Etotal中的兩部分都需要對它進行求導,因為這條邊在前向傳播中對兩個殘差都有影響

3. 更新權重 這一步里面就沒什么東西了,直接根據學習率來更新權重:


至此,一次正向+反向傳播過程就到此為止,接下來只需要進行迭代,不斷調整邊的權重,修正網絡的輸出和實際結果之間的偏差(也就是training整個網絡)。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢