bptt(沿時反向傳播演算法)基本原理與bp演算法一樣,包含三個步驟:
迴圈層將誤差項反向傳遞到上一層網路,與普通的全連線層是完全一樣的。
迴圈層的加權輸入net
lnet^l
netl
與上一層的加權輸入net
l−1net^
netl−1
關係如下:
n et
tl=u
atl−
1+ws
t−1net^l_t=ua^_t+ws_
nettl
=uat
l−1
+wst
−1atl
−1=f
l−1(
nett
l−1)
a^_t=f^(net^_t)
atl−1
=fl−
1(ne
ttl−
1)上式中net
tlnet^l_t
nettl
是第l層神經元的加權輸入;net
tl−1
net^_t
nettl−
1是l-1層神經元的加權輸入;atl
−1a^_t
atl−1
是第l-1層神經元的輸出;fl−
1f^fl−1
是第l-1層的啟用函式。
∂ ne
ttl∂
nett
l−1=
∂net
tl∂a
tl−1
∂atl
−1∂n
ettl
−1=u
∗dia
g[f′
l−1(
nett
l−1)
]\frac_t}=\frac_t}\frac_t}_t}=u*diag[f^(net^_t)]
∂nettl
−1∂
nett
l=
∂atl
−1∂
nett
l∂
nett
l−1
∂atl
−1
=u∗d
iag[
f′l−
1(ne
ttl−
1)]
所以:δtl
−1=∂
e∂ne
ttl−
1=∂e
∂net
tl∂n
ettl
∂net
tl−1
=δtl
∗u∗d
iag[
f′l−
1(ne
ttl−
1)]\delta^_t=\frac_t}=\frac\frac_t}=\delta^l_t*u*diag[f^(net^_t)]
δtl−1
=∂ne
ttl−
1∂e
=∂n
ettl
∂e
∂net
tl−1
∂ne
ttl
=δt
l∗u
∗dia
g[f′
l−1(
nett
l−1
)]上式就是將誤差項傳遞到上一層演算法。
1.3權重梯度的計算
接下來是bptt演算法的最後一步:計算每個權重的梯度
首先計算誤差函式e對權重矩陣w的梯度:∂e∂
上圖為我們前兩步計算得到的量,包括每個時刻t迴圈層的輸出值s
ts_t
st,以及誤差項δ
t\delta_t
δt我們知道了任意乙個時刻的誤差項δ
t\delta_t
δt,以及上乙個時刻迴圈層的輸出值st−
1s_st−1
,就可以按照下面的公式求出權重矩陣在t時刻的梯度:
上式中,δit
\delta^t_i
δit
表示t時刻誤差項向量的第i各分量,即第i層的誤差項;katex parse error: double subscript at position 8: s__̲i表示t-1時刻迴圈層第i各神經元的輸出值。
權重梯度推導:
1.4梯度**與梯度消失
rnns並不能很好地處理較長的序列。主要原因是rnn在訓練中很容易發生梯度**和梯度消失,導致訓練時梯度不能在較長序列中一直傳遞下去,從而使rnn無法捕捉到長距離的影響。
三種方法應對梯度消失問題:
1)合理的初始化權重值。初始化權重,使每個神經元盡可能不要取極大或極小值,以躲開梯度消失的區域。
2)使用relu代替sigmod和tanh作為啟用函式。
3)使用其它結構的rnns,比如長短時記憶網路(lstm)和gated recurrent unit(gru),這是最流行的做法。
KMP演算法推導
申明 此文系博主對huge對kmp演算法的推導過程的加工整理而成,在讀此文之前,如果對kmp演算法不是非常了解的,可以去到閱讀有關kmp的相關知識,如果已經非常了解,那就請繼續吧。有了以上的資料了解後,讓我們一起來推導和構建kmp演算法吧。定義 a是問題中模式串 短串 長度為n b是問題中的文字串 ...
BP演算法推導
反向傳播演算法是深度學習的基礎之一,其主要的核心就是對代價函式 e 關於權重 w 或偏置 b 的偏導數 的表示式。這個表示式代表在改變權值和偏置時,代價函式變化的快慢。使用 w l 表示從 l 1 層的 k 神經元到 l 層的 j 神經元上的權重。之所以 l 的序號在 l 1 層的序號之前,是因為後...
EM演算法推導
給定觀測樣本集 求帶有隱變數模型的最大似然。似然函式 l theta logp y theta log sum zp y,z theta log p y z,theta p z theta 將似然函式減去上一步的似然函式 begin l theta l theta log p y z,theta p...