GRU,LSTM

總結自吳恩達老師的網易深度學習工程師微專業

  • 介紹GRU之前,首先我們先直觀的理解一下梯度消失(Gradient Vanishing)問題。

RNN在NLP中具有很大的應用價值,但是其存在一個很大的缺陷,那就是梯度消失的問題。例如下面的例句中:
The cat, which already ate …,was full;
The cats, which already ate …,were full.
在這兩個句子中,cat對應着was,cats對應着were,(中間存在很多很長省略的單詞),句子中存在長期依賴(long-term dependencies),前面的單詞對後面的單詞有很重要的影響。但是我們目前所見到的基本的RNN模型,是不擅長捕獲這種長期依賴關係的。
和基本的深度神經網絡結構類似,輸出yy得到的梯度很難通過反向傳播再傳播回去,也就是很難對前面幾層的權重產生影響,所以RNN也有同樣的問題,也就是很難讓網絡記住前面的單詞是單數或者複數,進而對後面的輸出產生影響。
對於梯度消失問題,在RNN的結構中是我們首要關心的問題,也更難解決; 雖然梯度爆炸在RNN中也會出現,但對於梯度爆炸問題,因爲參數會指數級的梯度,會讓我們的網絡參數變得很大,得到很多的Nan或者數值溢出,所以梯度爆炸是很容易發現的,我們的解決方法就是用梯度修剪(gradient clipping),也就是觀察梯度向量,如果其大於某個閾值,則對其進行縮放,保證它不會太大。

1. GRU

  • 一個包含一個更新門Γu\Gamma_u的GRU簡化版本如下圖示:
    在這裏插入圖片描述
    公式如下:
    c~<t>=tanh(Wc[c<t1>,x<t>]+bc)\tilde c^{<t>}=tanh(W_c[c^{<t-1>},x^{<t>}]+b_c)
    Γu=σ(Wu[c<t1>,x<t>]+bu)\Gamma_u=\sigma(W_u[c^{<t-1>},x^{<t>}]+b_u)
    c<t>=Γuc~<t>+(1Γu)c<t1>c^{<t>}=\Gamma_u*\tilde c^{<t>}+(1-\Gamma_u)*c^{<t-1>}
  • 完整的GRU單元存在着Γu,Γr\Gamma_u, \Gamma_r兩個門,決定着每個時間步的候選值,圖示如下:
    在這裏插入圖片描述
    公式如下:
    Γr=σ(Wr[c<t1>,x<t>]+br)\Gamma_r=\sigma(W_r[c^{<t-1>},x^{<t>}]+b_r)
    c~<t>=tanh(Wc[Γrc<t1>,x<t>]+bc)\tilde c^{<t>}=tanh(W_c[\Gamma_r*c^{<t-1>},x^{<t>}]+b_c)
    Γu=σ(Wu[c<t1>,x<t>]+bu)\Gamma_u=\sigma(W_u[c^{<t-1>},x^{<t>}]+b_u)
    c<t>=Γuc~<t>+(1Γu)c<t1>c^{<t>}=\Gamma_u*\tilde c^{<t>}+(1-\Gamma_u)*c^{<t-1>}

2. LSTM

GRU能夠讓我們在序列中學習到更深的聯繫,LSTM(long short-term memory)對捕捉序列中更深層次的聯繫要比GRU更加有效,當然也更復雜。
LSTM中,使用了單獨的更新門ΓuΓ_u和遺忘門ΓfΓ_f,以及一個輸出門ΓoΓ_o,LSTM單元的可視化圖如下所示:
引自Andrew Ng老師
c~<t>=tanh(Wc[a<t1>,x<t>]+bc)\tilde c^{<t>}=tanh(W_c[a^{<t-1>},x^{<t>}]+b_c)
Γu=σ(Wu[a<t1>,x<t>]+bu)\Gamma_u=\sigma(W_u[a^{<t-1>},x^{<t>}]+b_u)
Γf=σ(Wf[a<t1>,x<t>]+bf)\Gamma_f=\sigma(W_f[a^{<t-1>},x^{<t>}]+b_f)
Γo=σ(Wo[a<t1>,x<t>]+bo)\Gamma_o=\sigma(W_o[a^{<t-1>},x^{<t>}]+b_o)
c<t>=Γuc~<t>+Γfc<t1>c^{<t>}=\Gamma_u*\tilde c^{<t>}+\Gamma_f*c^{<t-1>}
a<t>=Γotanh(c<t>)a^{<t>}=\Gamma_o*tanh(c^{<t>})
在實際使用時,幾個門值不僅僅取決於 a<t1>a^{<t-1>}x<t1>x^{<t-1>} ,還可能會取決於上一個記憶細胞的值c<t1>c^{<t-1>} ,這也叫做peephole connection。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章