循環神經網絡可以很好地處理長而有序的文本數據輸入序列。它模擬閱讀壹篇文章的順序,從前向後閱讀文章中的每壹個單詞,將前面讀到的有用信息編碼到狀態變量中,使其具有壹定的記憶能力,能夠更好地理解後面的文字。
其網絡結構如下圖所示:
從圖中可以看出,T是時間,X是輸入層,S是隱含層,O是輸出層,矩陣W是隱含層的最後壹個值作為這個輸入的權重。
如果公式2被重復帶入公式1,妳會得到:
其中f和g是激活函數,u是從輸入層到隱含層的權重矩陣,w是隱含層從上壹時刻到下壹時刻的狀態轉移的權重矩陣。在文本分類的任務中,F可以選擇Tanh函數或者ReLU函數,G可以使用Softmax函數。
通過最小化損失誤差(即輸出Y與真實類別的距離),不斷訓練網絡,使得到的遞歸神經網絡能夠準確預測文本的類別,達到分類的目的。與卷積神經網絡等前饋神經網絡相比,循環神經網絡由於具有描述序列信息的能力,往往能得到更準確的結果。
RNN的訓練算法是BPTT。
BPTT的基本原理和BP算法壹樣,也是三步走:
1.正向計算每個神經元的輸出值;
2.反向計算每個神經元的誤差項值,它是誤差函數E對神經元J的加權輸入的偏導數;
3.計算每個權重的梯度。
最後,使用隨機梯度下降算法更新權重。
具體參考:/p/39a99c88a565
最後,通過鏈式法則獲得由雅可比矩陣表示的每個權重的梯度:
由於預測誤差沿神經網絡各層反向傳播,當雅可比矩陣的最大特征值大於1時,各層的梯度會隨著離輸出的距離呈指數增長,導致梯度爆炸;另壹方面,如果雅可比矩陣的最大特征值小於1,梯度將呈指數級收縮並消失。對於常見的前饋網絡來說,梯度的消失意味著神經網絡的預測效果無法通過加深網絡層次來提高,因為無論如何只有幾層接近輸出才能真正起到學習作用。這使得遞歸神經網絡模型難以學習輸入序列中的長距離依賴性。
關於RNN梯度下降的詳細推導,請參考:/p/44163528。
梯度爆炸的問題可以通過梯度裁剪來緩解,即當梯度的範式大於給定值時,梯度等比例收縮。梯度消失的問題比較難,模型本身也需要改進。深度殘差網絡是對前饋神經網絡的改進,通過殘差學習緩解了梯度消失的現象,使我們可以學習更深層次的網絡表示。對於循環神經網絡來說,長時記憶模型及其變體,如門控循環單元,通過加入門控機制,在很大程度上彌補了梯度消失帶來的損失。
LSTM的網絡組織圖如下:
與傳統的遞歸神經網絡相比,LSTM仍然是基於xt和ht?1來計算ht,但內部結構設計得更細致,增加了三個門,即輸入門it、遺忘門ft、輸出門ot和壹個內部存儲單元ct。輸入門控制當前計算的新狀態在存儲單元中更新到什麽程度;遺忘門控制前壹個存儲單元中有多少信息被遺忘;輸出門對電流輸出的控制程度取決於當前的存儲單元。
在經典LSTM模型中,T層的更新計算公式為
其中它通過輸入xt和上壹步的隱藏層輸出ht。1進行線性變換,然後通過激活函數σ。輸入gate it的結果是壹個向量,其中每個元素是壹個0到1之間的實數,用來控制每個維度上流過閥門的信息量;兩個矩陣Wi和Ui以及向量bi是輸入門的參數,需要在訓練過程中學習。遺忘門ft和輸出門ot的計算方式與輸入門類似,它們有自己的參數W、U和B..不同於傳統的循環神經網絡,從最後壹個記憶單元的狀態ct?從1到當前狀態ct的轉變不壹定完全取決於由激活函數計算的狀態,而是也由輸入門和遺忘門控制。
在訓練好的網絡中,當輸入序列中沒有重要信息時,LSTM遺忘門的值接近1,輸入門的值接近0。這時,過去的記憶就會被保存下來,從而實現長時記憶功能。當輸入序列中出現重要信息時,LSTM要將其存儲在內存中,其輸入門的值會接近1;當輸入序列中出現重要信息,而這些信息意味著之前的記憶不再重要時,輸入門的值接近1,而遺忘門的值接近0,這樣舊的記憶被遺忘,新的重要信息被記憶。通過這種設計,整個網絡可以更容易地學習序列之間的長期依賴關系。
GRU在LSTM上簡化,其網絡結構如下:
Zt代表更新門,類似於LSTM的遺忘門和輸入門。它可以決定丟棄哪些信息和添加哪些新信息。
Rt代表reset gate,用於決定丟棄之前信息的程度。
需要註意的是,H只是壹個變量,所以在每壹個時刻,包括最後的線性組合,H都在用之前的自己和現在的備選答案更新自己。比如這個變量就像壹杯酒。我們每次倒出壹部分酒,把倒出來的酒和新加入的原料混合,然後再倒回去。這裏reset控制的是混合後要倒出來和倒回去的酒的比例,update控制的是新原料與之前釀造的酒混合的比例。同理,可以理解為LSTM,LSTM的遺忘門在功能上類似於reset,輸入門類似於update。不同的是,LSTM還控制著當前狀態的曝光,即輸出門的功能,這是GRU所沒有的。
1.百面機器學習
2./p/45649187
3./p/39a99c88a565