1、GRU概述
GRU是LSTM網絡的一種效果很好的變體,它較LSTM網絡的結構更加簡單,而且效果也很好,因此也是當前非常流形的一種網絡。GRU既然是LSTM的變體,因此也是可以解決RNN網絡中的長依賴問題。
在LSTM中引入了三個門函數:輸入門、遺忘門和輸出門來控制輸入值、記憶值和輸出值。而在GRU模型中只有兩個門:分別是更新門和重置門。具體結構如下圖所示:
圖中的zt和rt分別表示更新門和重置門。更新門用於控制前一時刻的狀態信息被帶入到當前狀態中的程度,更新門的值越大說明前一時刻的狀態信息帶入越多。重置門控制前一狀態有多少信息被寫入到當前的候選集 $\tilde{h}_t$ 上,重置門越小,前一狀態的信息被寫入的越少。
2、GRU前向傳播
根據上面的GRU的模型圖,我們來看看網絡的前向傳播公式:
其中[]表示兩個向量相連,*表示矩陣的乘積。
3、GRU的訓練過程
從前向傳播過程中的公式可以看出要學習的參數有Wr、Wz、Wh、Wo。其中前三個參數都是拼接的(因為后先的向量也是拼接的),所以在訓練的過程中需要將他們分割出來:
輸出層的輸入:
輸出層的輸出:
在得到最終的輸出后,就可以寫出網絡傳遞的損失,單個樣本某時刻的損失為:
則單個樣本的在所有時刻的損失為:
采用后向誤差傳播算法來學習網絡,所以先得求損失函數對各參數的偏導(總共有7個):
其中各中間參數為:
在算出了對各參數的偏導之后,就可以更新參數,依次迭代知道損失收斂。
概括來說,LSTM和CRU都是通過各種門函數來將重要特征保留下來,這樣就保證了在long-term傳播的時候也不會丟失。此外GRU相對於LSTM少了一個門函數,因此在參數的數量上也是要少於LSTM的,所以整體上GRU的訓練速度要快於LSTM的。不過對於兩個網絡的好壞還是得看具體的應用場景。
參考文獻:
***本文為參考各位大神博客的筆記*