1. 程式人生 > >論文筆記:Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling

論文筆記:Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling

感想
最近深度學習面試的時候,有個面試官問了我LSTM,我一下子傻眼了,確實不怎麼好懂,學LSTM已經有半年的時間了,但是對這個玩意兒卻還不怎麼明白,可能是沒用過它的緣故吧,我找了一篇它和GRU比較的論文,這篇論文沒有從理論上證明哪個模型的好壞,只是從實驗,應用場景的角度發現GRU在一些場景比LSTM強,GRU是2014年提出的模型,可以說是一種LSTM的變體,使得計算和更新效率提高了,並且還取得了不錯的效果

1.介紹

RNN最近在機器學習中表現了良好的效果,特別是當輸入或者輸出是可變長度的時候。最近,RNN在機器翻譯這種具有挑戰性的任務上超過了現有最好的系統的效能。有趣的是傳統的RNN效果不好,但是一些有複雜迴圈隱藏層的單元的RNN,例如長短時記憶(long short-term memory)單元,成功的應用到了許多應用中,並且取得了不錯的效果。

在這篇文章中,我們評估了兩個最相近的變體。其中一個是LSTM(long short-term memory),另一個是GRU(gated recurrent unit ).LSTM因其長短時依賴的關係,在基於序列的任務中國工作得很好。GRU用於機器翻譯的場景中(context of machine translation)。我們評估這兩種單元和一個更傳統的tanh單元在序列模型中的表現。我們用了3種有許多聲音的音樂資料集和由Ubisoft提供的內部資料集,Ubisoft資料集中每個樣本是初始語音的表示(raw speech representation)。

通過實驗,我們可以得出以下的結論,所有的模型都使用固定數量的引數,在一些資料集上,,GRU比LSTM單元在CPU時間上的收斂速度上更快,並且在引數更新和泛化上效能更佳。

2.Recurrent Neural Network
RNN是一個卷積前饋(conventional feedforward)神經網路的一個拓展,它可以處理可變長度的輸入序列(variable-length sequence input),RNN有一個迴圈隱藏狀態,這個狀態每個時刻只依賴於前一時刻的激勵。
更正式一點,給定一個序列x=(x1,x2,…,xT),RNN更新隱藏狀態ht如下:

Ф是一個非線性函式,例如有仿射變換(affine transformation)的logistic sigmoid函式,輸出是y=(y1,y2,…,yT),它也可以是一個可變長度。
傳統上,迴圈隱藏狀態的更新的如下式:


其中,g是一個平滑的,有邊界的函式,例如logistic sigmoid函式或者一個雙曲正切函式(hyperbolic tangent function)。
一個生成式的RNN輸出的是一個序列下一個元素的概率分佈,給定現在的狀態ht, 生成模型可以捕獲可變長度模型的分佈,只需要用一個特別的輸出標記一個序列的末尾就可以實現可變長度。序列的可能性可以被分解為

最後一個元素是一個特別的序列末尾值(special end-of-sequence value),我們對每一個條件概率建模


但是,RNN很難進行訓練並捕捉到長短時依賴(long-term dependencies),因為梯度要麼消失(到多數情況)了要麼就爆炸(很少)了,這使得基於梯度的優化方法很難優化模型。不是因為在梯度刻度方面的變化,而是由於長時的依賴(long-term dependencies)效果被短時的依賴(short-termdependencies)隱藏了。研究者提出了兩種方法解決這個問題,

1.     設計一個比簡單的隨機梯度下降(SGD)更好的學習演算法,例如使用一個簡單的裁剪的梯度(simple clipped gradient),裁剪的梯度中梯度向量的範數被裁剪;或者使用二階方法,但如果二次導數的增長形式跟一階導數一樣,這種方法可能對這個問題不怎麼敏感。

2.     這種方法是這篇文章特別關注的,即設計比通常激勵函式更復雜的激勵函式(activation function),包括一個簡單非線性元素級別的仿射變換,這通過使用門單元(gating units)實現的。最初在激勵函式或者一個迴圈單元的嘗試提出了LSTM單元(long short-term memory),最近,研究者提出了另一種型別的迴圈單元,GRU單元。RNN在需要捕獲長短時依賴的任務上表現出色,當然,這些任務不限於語音識別,機器翻譯,還有很多其他序列任務。

3.  Gated Recurrent Neural Networks

3.1  Long Short-Term Memory Unit
LSTM是由Hochreiterand Schmidhuber提出來的,隨後經歷了許多小修改,我們實現的是Graves(2013年)的LSTM的實現,不像迴圈單元,迴圈單元只是簡單的計算輸入訊號的權重和一個非線性函式。每一個在t時刻的LSTM單元j有一個記憶c^jt,LSTM的輸出或者激勵是

O^jt是一個輸出門,它決定這該記憶單元的值是否輸出。輸出門的計算如下


其中,σ是一個logistic sigmoid函式,V0是一個對角矩陣(diagonal matrix)。

記憶單元c^jt通過一萬已存在記憶的部分來更新的,並且增加了一個新的內容c~^jt:

記憶的遺忘是由遺忘門f^jt模組完成的,新記憶內容是由輸入門i^jt模組完成的。門的計算如下


Vf和Vi是對角矩陣。
不想傳統的迴圈層那樣,傳統的迴圈層會在每一步重寫它的內容,而LSTM單元可以決定是否保留這些記憶。如果LSTM單元從每個階段的輸入序列中檢測到了一個重要的特徵,它可以很容易攜帶一個長距離的資訊,捕獲潛在的長距離的依賴(long-distance dependencies)。

上圖為LSTM單元,我簡單解釋一下,首先輸入是IN,輸入包括input x和這層t-1時刻的值h,我們就經過雙曲正切函式tanh,得到c~,緊接著我們就可以更次年c,c是c~和c在t-1時刻的加權和,得到c以後,我們就可以計算單元的輸出OUT,c經過雙曲正切函式tanh,然後和o相乘就得到OUT,o的計算是輸入x,這個單元t-1時刻的輸出值,以及c的值的加權和。


3.2  Gated Recurrent Unit

GRU是2014年提出來使的每個迴圈單元可以自適應的捕捉不同時間刻度下的依賴(adaptively capture dependencies of different time scales.)。與LSTM單元相似,GRU具有調節資訊流動的門單元,但是,沒有一個單獨的記憶單元(memory cells)。

GRU在時刻t的激勵h^jt是一個線性的修改,如下

其中,更新門為z^jt,它決定多少單元跟新它的激勵,或者內容。更新門的計算為


這個過程是把現在的狀態和新的狀態求和,和LSTM的單元類似。GRU沒有采取任何機制去控制那個狀態暴露出來,而是每次所有狀態都會暴露。

候選激勵h~^jt和傳統的迴圈單元計算相似


其中,rt是一個重置門的集合,當r^jt接近於0的時候,重置門高效的使得這個單元表現為好像是在讀這個輸入序列的第一個符號。Rt和ht-1是元素相乘的符號,具體解釋可以參見這篇LSTM文章,這篇文章用的是小圓圈代替,不過講的都是一個東西:
https://zybuluo.com/hanbingtao/note/581764
example:


重置門r^jt和更新門的計算相似


上圖為GRU單元,簡單解釋一下,首先是IN,首先計算t時刻的候選激勵h~,它是由t時刻的輸入x,該層t-1時刻的值和重置門rt相乘的權重和;緊接著我們計算更新門z,z是由t時刻的輸入x,t-1時刻的h值的權重和的激勵,然後我們就可以計算h了,h是t時刻t時刻的1-z和t-1時刻的h值相乘,然後更新門z和候選激勵h~相乘,兩者相加即得到t時刻的h了,最後通過out輸出。

3.3  Discussion
1.     它們共有的最主要的特徵是從t時刻到t+1時刻的更新,這是傳統的迴圈單元所沒有的,傳統的迴圈單元一直用一個新的值來替換激勵或者一個單元的內容。這個值是由輸入和先前的隱藏狀態計算得來的。另外,LSTM和GRU都會儲存現有的內容(existing

content)並且會增加新的內容(new content)。這樣做有兩個優點:

a)     在一個很長序列步(a long series of steps)的輸入流中,每個單元很容易記得現有的一些特定的特徵。任何重要的特徵,要麼由LSTM的遺忘門決定要麼由GRU的更新門更新,它不會被重寫,只是去維護更新

b)     可能更重要的是,這個額外的單元有效的創造了跨越多個時間步的快捷路徑,這些路徑很容易使錯誤反向傳播,不至於迅速消失(門單元將近飽和為1),這是因為我們穿過了多個,有界非線性單元。結果減少了由於梯度消失帶了的困難。

2.     這兩個單元也有很多的區別,LSTM單元的一個特徵控制記憶內容的暴露(exposure of the memory content),這個GRU沒有。在LSTM單元中,記憶內容的數量是由輸出門控制的,但GRU是把所有的內容都暴露出來,沒有進行控制。另一個區別是輸入門(input gate)的位置,或者與之對應的重置門(reset gate)的位置。LSTM單元計算新的記憶內容的時候,它沒有控制從上一時間步傳來的資訊的數量。而是控制控制有多少新的內容被新增到記憶單元(memory cell),記憶單元和遺忘門是分開的。另一方面,當計算新的,候選的激勵的時候,GRU控制著從前一個激勵的資訊流動,它不是控制著有多少的候選激勵被新增。

從這些區別和相似點,很難得出哪個門單元更好,有研究者報告說,根據他們先前的實驗,這兩個單元在機器翻譯上的效能不相上下。這促使我們寫了這篇文章,LSTM和GRU單元的經驗比較。


4 實驗

4.1 任務和資料集

我們在序列模型上比較LSTM,GRU和tanh單元,序列模型目標是學習一個序列的分佈,在給定一個訓練序列的集合下,我們計算它的最大似然估計:


其中,θ是模型引數的集合,跟具體地,我們評估複音音樂模型(polyphonic music modeling)和語音訊號模型的任務。

對於複音音樂模型,我們用了3個複音音樂資料集:Nottingham, JSB Chorales, MuseData and Piano-midi.這些資料集包含許多個序列,這些序列的每個符號分別代表93,98,108維二元向量。我們使用sigmoid函式作為輸出單元。

我們使用了由Ubisoft提供的內部語音訊號模型資料集,每個序列是一個一維的音訊訊號,在每一個時間步,我們設計一個RNN去用20個連續的樣本去預測後面的10個連續的樣本。我們使用兩種不同版本的資料集:第一個資料集樣本序列的長度是500(Ubisoft A),第二個資料集樣本的序列長度是8000(Ubisoft B),Ubisoft A有7230個序列,Ubisoft B有800個序列。我們使用20個元件的混合高斯(mixture ofGaussians)作為輸出層。


4.2 模型
每一個任務,我們訓練三種不同的RNN,每個RNN有LSTM單元,GRU單元,tanh單元中的一種,實驗最開始的目標是比較公平的比較三種單元,我們的模型的引數量大小几乎一樣,我們有意的使模型足夠小,使得可以避免過擬合。


上表是實驗中所用模型的大小。


上圖為訓練集和測試解的log概率的平均值。在複音音樂資料集的案例中,GRU-RNN超過了其它結構的RNN的效能,Nottingham除外。就三個音樂資料集而言,三個模型的效能表現相近。另一方面,LSTM和GRU在Ubisoft資料集上的效能比傳統的tanh-RNN強,LSTM表現最佳。

每個模型我們都用RMSProp(由hinton發明的,有興趣的話自行百度)來訓練,用固定標準差0.075的權重噪聲進行訓練。在每一次更新,如果把梯度大於1的話,我們把梯度規範化為1,這是用來防止梯度爆炸的問題。我們選擇了一個學習率去最大化我們驗證的效能,學習率是從10個隨機候選的log引數,這些引數服從U(-12,-6).驗證集也用與early-stop訓練。

 


上圖顯示了驗證的學習曲線,就音樂資料集而言,GRU訓練得更快,引數更新也快。對Ubisoft而言,如下圖,儘管tanh-RNN更新需要的計算量更小,但是模型沒有取得更好的效果。

上圖是不同型別單元的訓練和驗證集的學習曲線,y軸對應的是模型的負log似然值(negative log likelihood of the model)。

 

結果表明,新型的門單元的比傳統的迴圈單元表現更優,首先速度經常更快,最終的解更佳。但是我們的結果不能斷定LSTM和GRU哪個更好,這表明,迴圈單元門的選擇嚴重取決於資料集和與之對應的任務。


參考文獻
[1]. Junyoung Chung, Çaglar Gülçehre,KyungHyun Cho, Yoshua Bengio:

Empirical Evaluation of Gated RecurrentNeural Networks on Sequence Modeling. CoRR abs/1412.3555 (2014)

[2]. 零基礎入門深度學習(6) -長短時記憶網路(LSTM).

https://zybuluo.com/hanbingtao/note/581764
--------------------- 
作者:農民小飛俠 
來源:CSDN 
原文:https://blog.csdn.net/w5688414/article/details/78079335 
版權宣告:本文為博主原創文章,轉載請附上博文連結!