RNN原理理解


參考博客

https://zybuluo.com/hanbingtao/note/541458

語言模型

語言模型:語言模型是對一種語言的特征進行建模,例如給定一個一句話前面的部分,預測接下來最有可能的一個詞是什么。讓神經網絡輸出概率:softmax層作為輸出層。

N-Gram:假設一個詞出現的概率只與前面N個詞相關。模型的大小和N的關系是指數級的。

RNN:理論上可以往前(或者往后)看任意多個詞。

循環神經網絡

循環神經網絡(Recurrent Neural Network,RNN),能夠更好的處理序列的信息,在NLP中有很多應用。RNN有很多種類。

基本RNN(只是單向的)

輸入層+一個隱藏層(RNN的核心結構)+一個輸出層(全連接層)

x是一個向量,它表示輸入層的值, s是一個向量,它表示隱藏層的值(這里隱藏層面畫了一個節點,你也可以想象這一層其實是多個節點,節點數與向量s的維度相同),o也是一個向量,它表示輸出層的值。

U是輸入層到隱藏層的權重矩陣,V是隱藏層到輸出層的權重矩陣。

循環神經網絡的隱藏層的值s不僅僅取決於當前這次的輸入x,還取決於上一次隱藏層的值s。權重矩陣W就是隱藏層上一次的值作為這一次的輸入的權重。

注意RNN有時刻的概念,與輸入有關,在t時刻接收到輸入xt之后,隱藏層的值是st,輸出值是ot。關鍵一點是,st的值不僅僅取決於xt,還取決於st-1

公式如下:

 

f和g都是激活函數,f對應着隱藏層(循環層),g對應着輸出層(是一個全連接層)

循環層和全連接層的區別就是循環層多了一個權重矩陣 W。

雙向RNN

既考慮前面的詞,也考慮后面的詞。

 

雙向卷積神經網絡的隱藏層要保存兩個值,一個A參與正向計算,另一個值A'參與反向計算。

正向計算時,隱藏層的值有關;反向計算時,隱藏層的值有關;最終的輸出取決於正向和反向計算的加和

計算公式如下:

正向和反向計算權值不共享,有不同的權重矩陣。

深度RNN

深度RNN:兩個及以上的隱藏層就是深度RNN。

 計算公式如下:

RNN循環層的訓練方法:BPTT(Back Propagation through Time)

BPTT算法是針對循環層的訓練算法,它的基本原理和BP算法是一樣的,也包含同樣的三個步驟:

  • 前向計算每個神經元的輸出值
  • 反向計算每個神經元的誤差項
  • 計算每個權重的梯度

最后再用隨機梯度下降法(SGD)更新權重。

循環層如下圖所示:

 

 

循環層的公式為:

 

 

用矩陣表示為:

 

 

 誤差項的計算:

BTPP算法將第l層t時刻的誤差項值沿兩個方向傳播,一個方向是其傳遞到輸入層,這部分只和權重矩陣U有關;另一個是方向是將其沿時間線傳遞到上一個時刻,這部分只和權重矩陣W有關。

具體計算和推導見:https://zybuluo.com/hanbingtao/note/541458

 

 

 

 權重梯度的推導見:https://zybuluo.com/hanbingtao/note/541458

 

 

 

 

 

RNN的梯度爆炸和梯度消失問題

產生梯度爆炸和梯度消失問題的原因:

 

 RNN的實現見:https://zybuluo.com/hanbingtao/note/541458


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM