日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

深度学习之循环神经网络(3)梯度传播

發布時間:2023/12/15 循环神经网络 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习之循环神经网络(3)梯度传播 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

深度學習之循環神經網絡(3)梯度傳播

?通過循環神經網絡的更新表達式可以看出輸出對張量Wxh\boldsymbol W_{xh}Wxh?Whh\boldsymbol W_{hh}Whh?和偏置b\boldsymbol bb均是可導的,可以利用自動梯度算法來求解網絡的梯度。此處我們僅簡單地推導一下RNN的梯度傳播公式,并觀察其特點。

?考慮梯度?L?Whh\frac{?\mathcal L}{?\boldsymbol W_{hh}}?Whh??L?,其中L\mathcal LL為網絡的誤差,只考慮最后一個時刻ttt的輸出ot\boldsymbol o_tot?與真實值之間的差距。由于Whh\boldsymbol W_{hh}Whh?被每個時間戳i上權值共享,在計算?L?Whh\frac{?\mathcal L}{?\boldsymbol W_{hh}}?Whh??L?時需要將每個中間時間戳iii上面的梯度求和,利用鏈式法則展開為
?L?Whh=∑i=1t?L?ot?ot?ht?ht?hi?+hi?Whh\frac{?\mathcal L}{?\boldsymbol W_{hh}}=\sum_{i=1}^t\frac{?\mathcal L}{?\boldsymbol o_t} \frac{?\boldsymbol o_t}{?\boldsymbol h_t} \frac{?\boldsymbol h_t}{?\boldsymbol h_i} \frac{?^+ \boldsymbol h_i}{?\boldsymbol W_{hh}}?Whh??L?=i=1t??ot??L??ht??ot???hi??ht???Whh??+hi??
其中?L?ot\frac{?\mathcal L}{?\boldsymbol o_t}?ot??L?可以基于損失函數直接求得,?ot?ht\frac{?\boldsymbol o_t}{?\boldsymbol h_t}?ht??ot??ot=ht\boldsymbol o_t=\boldsymbol h_tot?=ht?的情況下:
?ot?ht=1\frac{?\boldsymbol o_t}{?\boldsymbol h_t}=1?ht??ot??=1
?+hi?Whh\frac{?^+ \boldsymbol h_i}{?\boldsymbol W_{hh}}?Whh??+hi??的梯度將hi\boldsymbol h_ihi?展開后也可以求得:
?+hi?Whh=?σ(Wxhxt+Whhht?1+b)?Whh\frac{?^+ \boldsymbol h_i}{?\boldsymbol W_{hh}}=\frac{?σ(\boldsymbol W_{xh} \boldsymbol x_t+\boldsymbol W_{hh} \boldsymbol h_{t-1}+\boldsymbol b)}{?\boldsymbol W_{hh}}?Whh??+hi??=?Whh??σ(Wxh?xt?+Whh?ht?1?+b)?
其中?+hi?Whh\frac{?^+ \boldsymbol h_i}{?\boldsymbol W_{hh}}?Whh??+hi??只考慮到一個時間戳的梯度傳播,即“直接”偏導數,與?L?Whh\frac{?\mathcal L}{?\boldsymbol W_{hh}}?Whh??L?考慮i=1,…,ti=1,…,ti=1,,t所有的時間戳的偏導數不同。

?因此,只需要推導出?ht?hi\frac{?\boldsymbol h_t}{?\boldsymbol h_i}?hi??ht??的表達式即可完成循環神經網絡的梯度推導。利用鏈式法則,我們把?ht?hi\frac{?\boldsymbol h_t}{?\boldsymbol h_i}?hi??ht??分拆分連續時間戳的梯度表達式:
?ht?hi=?ht?ht?1?ht?1?2…?hi+1?hi=∏k=it?1?hk+1?hk\frac{?\boldsymbol h_t}{?\boldsymbol h_i}=\frac{?\boldsymbol h_t}{?\boldsymbol h_{t-1}} \frac{?\boldsymbol h_{t-1}}{?2} … \frac{?\boldsymbol h_{i+1}}{?\boldsymbol h_i}=\prod_{k=i}^{t-1}{\frac{?\boldsymbol h_{k+1}}{?\boldsymbol h_k}}?hi??ht??=?ht?1??ht???2?ht?1???hi??hi+1??=k=it?1??hk??hk+1??
考慮
hk+1=?σ(Wxhxk+1+Whhhk+b)\boldsymbol h_{k+1}=?σ(\boldsymbol W_{xh} \boldsymbol x_{k+1}+\boldsymbol W_{hh} \boldsymbol h_k+\boldsymbol b)hk+1?=?σ(Wxh?xk+1?+Whh?hk?+b)
那么
?hk+1?hk=WhhTdiag(σ′(Wxhxk+1+Whhhk+b))=WhhTdiag(σ′(hk+1))\begin{aligned}\frac{?\boldsymbol h_{k+1}}{?\boldsymbol h_k}&=\boldsymbol W_{hh}^T diag(σ' (\boldsymbol W_{xh} \boldsymbol x_{k+1}+\boldsymbol W_{hh} \boldsymbol h_k+\boldsymbol b))\\ &=\boldsymbol W_{hh}^T diag(σ' (\boldsymbol h_{k+1}))\end{aligned}?hk??hk+1???=WhhT?diag(σ(Wxh?xk+1?+Whh?hk?+b))=WhhT?diag(σ(hk+1?))?
其中diag(x)diag(\boldsymbol x)diag(x)把向量x\boldsymbol xx的每個元素作為矩陣的對角元素,得到其它元素全為0的對角矩陣,例如:
diag([3,2,1])=[300020001]diag([3,2,1])=\begin{bmatrix}3&0&0\\0&2&0\\0&0&1\end{bmatrix}diag([3,2,1])=???300?020?001????
因此
?ht?hi=∏j=it?1diag(σ′(Wxhxk+1+Whhhk+b))Whh\frac{?\boldsymbol h_t}{?\boldsymbol h_i}=\prod_{j=i}^{t-1}diag(σ' (\boldsymbol W_{xh} \boldsymbol x_{k+1}+\boldsymbol W_{hh} \boldsymbol h_k+\boldsymbol b)) \boldsymbol W_{hh} ?hi??ht??=j=it?1?diag(σ(Wxh?xk+1?+Whh?hk?+b))Whh?
至此,?L?Whh\frac{?\mathcal L}{?\boldsymbol W_{hh}}?Whh??L?的梯度推導完成。

?由于深度學習框架可以幫助我們自動推導梯度,只需要簡單地了解循環神經網絡的梯度傳播方式即可。我們在推導?L?Whh\frac{?\mathcal L}{?\boldsymbol W_{hh}}?Whh??L?的過程中發現,?ht?hi\frac{?\boldsymbol h_t}{?\boldsymbol h_i}?hi??ht??的梯度包含了Whh\boldsymbol W_{hh}Whh?的連乘運算,我們會在后面介紹,這是導致循環神經網絡訓練困難的根本原因。

總結

以上是生活随笔為你收集整理的深度学习之循环神经网络(3)梯度传播的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。