在迴圈神經⽹絡中的梯度計算⽅法中,當時間步數較⼤或者時間步較小時,迴圈神經⽹絡的梯度較容易出現衰減或**。雖然裁剪梯度可以應對梯度**,但⽆法解決梯度衰減的問題。通常由於這個原因,迴圈神經⽹絡在實際中較難捕捉時間序列中時間步距離較⼤的依賴關係。
門控迴圈神經⽹絡(gated recurrent neural network)的提出,正是為了更好地捕捉時間序列中時間步距離較⼤的依賴關係。它通過可以學習的⻔來控制資訊的流動。其中,門控迴圈單元(gatedrecurrent unit,gru)是⼀種常⽤的門控迴圈神經⽹絡。
gru它引⼊了重置⻔和更新⻔的概念,從而修改了迴圈神經⽹絡中隱藏狀態的計算⽅式。
門控迴圈單元中的重置⻔和更新⻔的輸⼊均為當前時間步輸⼊ x
tx_t
xt 與上⼀時間步隱藏狀態ht−
1h_ht
−1
,輸出由啟用函式為sigmoid函式的全連線層計算得到。 如下圖所示:
hh,給定時間步 t
tt 的小批量輸⼊xt∈
rn×d
,xt
∈rn
×dx_t\in\r^, x_t\in\r^
xt∈rn
×d,x
t∈
rn×
d(樣本數為n
nn,輸⼊個數為d
dd)和上⼀時間步隱藏狀態ht−
1∈rn
×hh_\in\r^
ht−1∈
rn×h
。重置⻔ rt∈
rn×h
r_t\in \r^
rt∈rn
×h和更新⻔ zt∈
rn×h
z_t\in \r^
zt∈rn
×h rt=
σ(xt
wxr+
ht−1
whr+
br)z
t=σ(
xtwx
z+ht
−1wh
z+bz
)r_t=\sigma(x_tw_+h_w_+b_r)\\ z_t=\sigma(x_tw_+h_w_+b_z)
rt=σ(
xtw
xr+
ht−1
whr
+br
)zt
=σ(
xtw
xz+
ht−1
whz
+bz
)sigmoid函式可以將元素的值變換到0和1之間。因此,重置⻔r
tr_t
rt 和更新⻔ z
tz_t
zt 中每個元素的值域都是[0,1]。
接下來,⻔控迴圈單元將計算候選隱藏狀態來輔助稍後的隱藏狀態計算。如果重置⻔中元素值接近0,那麼意味著重置對應隱藏狀態元素為0,即丟棄上⼀時間步的隱藏狀態。如果元素值接近1,那麼表⽰保留上⼀時間步的隱藏狀態。然後,將按元素乘法的結果與當前時間步的輸⼊鏈結,再通過含啟用函式tanh的全連線層計算出候選隱藏狀態,其所有元素的值域為[-1,1]。
具體來說,時間步 t 的候選隱藏狀態 h~t
∈rn×
h\tilde h_t\in \r ^
h~t∈r
n×h
h ~t
=tanh(
xtwx
h+(r
t⊙ht
−1)w
hh+b
h)\tilde h_t=\tanh(x_tw_+(r_t⊙h_)w_+b_h)
h~t
=tanh(x
twx
h+(
rt⊙
ht−1
)wh
h+b
h)從上⾯這個公式可以看出,重置⻔控制了上⼀時間步的隱藏狀態如何流⼊當前時間步的候選隱藏狀態。而上⼀時間步的隱藏狀態可能包含了時間序列截⾄上⼀時間步的全部歷史資訊。因此,重置⻔可以⽤來丟棄與**⽆關的歷史資訊。
最後,時間步t的隱藏狀態 ht∈
rn×h
h_t\in \r^
ht∈rn
×h的計算使⽤當前時間步的更新⻔z
tz_t
zt來對上⼀時間步的隱藏狀態 ht−
1h_ht−1
和當前時間步的候選隱藏狀態h~t
\tilde h_t
h~t
做組合:
h t=
zt⊙h
t−1+
(1−z
t)⊙h
~th_t = z_t \odot h_ + (1-z_t)\odot \tilde h_t
ht=zt
⊙ht
−1+
(1−z
t)⊙
h~t
值得注意的是,更新⻔可以控制隱藏狀態應該如何被包含當前時間步資訊的候選隱藏狀態所更新,如上圖所⽰。假設更新⻔在時間步 t′t'
t′到t (t
′t(t' < t)
t(t′
之間⼀直近似1。那麼,在時間步t′t'
t′到t
tt 間的輸⼊資訊⼏乎沒有流⼊時間步 t
tt 的隱藏狀態h
th_t
ht實際上,這可以看作是較早時刻的隱藏狀態 ht′
−1h_ht
′−1
直通過時間儲存並傳遞⾄當前時間步t
tt。這個設計可以應對迴圈神經⽹絡中的梯度衰減問題,並更好地捕捉時間序列中時間步距離較⼤的依賴關係。
我們對⻔控迴圈單元的設計稍作總結:
重置⻔有助於捕捉時間序列⾥短期的依賴關係;
更新⻔有助於捕捉時間序列⾥⻓期的依賴關係。
整合時鐘門控單元
總結 時鐘門控是通過時鐘使能訊號關閉模組時鐘來降低時鐘功率的常用技術。時鐘門控在功能上僅需要乙個and或or門。考慮您正在使用帶有時鐘的and門。高en沿可能隨時出現,並且可能與時鐘沿不一致。在這種情況下,與 門的輸出將比時鐘占空比短的時間為1。反過來,您最終會在時鐘訊號 現毛刺。為了在整個數字系統...
迴圈神經網路 GRU
這裡我們首先來看一下gru是如何將lstm的三個門簡化成兩個門的結構的 這裡的r rr門 r門這裡同樣是乙個啟用函式 控制的是上乙個時間戳的狀態st 1s st 1 對我們的當前時間戳狀態s ts t st 的乙個影響,r的取值範圍依舊是在0到1之間,也就是說,當你的r門全部關閉 r 0 的時候,就...
迴圈神經網路 GRU
gru是由cho在2014年提出的,全稱是gated recurrent unit。它與lstm最大的不同在於gru將遺忘門和輸入門合成了乙個 更新門 同時網路不再額外給出記憶狀態c tc t ct 而是將輸出結果h th t ht 作為記憶狀態不斷向後迴圈傳遞,網路的輸入和輸出都變得特別簡單。具體...