天天看點

AI(008) - 循環神經網絡(Recurrent Neural Network)循環神經網絡(Recurrent Neural Network)目錄

循環神經網絡(Recurrent Neural Network)

AI-第五期-DarkRabbit

這篇文章是對循環神經網絡的一個概念性總結,對應:

  • 第十一周:(01)循環神經網絡
  • 第十一周:(04)LSTM
  • 維基百科(en):
    • “Recurrent neural network” 詞條
    • “Long short-term memory” 詞條
    • “Backpropagation through time” 詞條

公式在CSDN的app中會顯示亂碼,請在其它方式閱讀

目錄

  • 循環神經網絡(Recurrent Neural Network)
  • 目錄
    • 1 什麼是循環神經網絡
    • 2 常用結構(Architectures)
      • 2.1 基本結構(Basic)
      • 2.2 簡單結構(Simple Recurrent (Neural) Networks,SR(N)N)
      • 2.3 長短期記憶網絡(Long Short-Term Memory,LSTM)
    • 3 基于時間的反向傳播算法(Backpropagation Trough Time,BPTT)

1 什麼是循環神經網絡

循環神經網絡是一種人工神經網絡(Artificial Neural Network),它的神經元間的連接配接沿序列(sequence)構成有向圖,這使得它能表現出動态時間行為,是以有些地方也稱為時間遞歸神經網絡。

2 常用結構(Architectures)

2.1 基本結構(Basic)

基本循環神經網絡結構(圖檔來自 Wikipedia):

AI(008) - 循環神經網絡(Recurrent Neural Network)循環神經網絡(Recurrent Neural Network)目錄

從圖中可以看出( t t 為時間,除時間外所指均為向量或矩陣,下同):

  • 輸入層(input):在 tt 時刻的輸入 xt x t 。
    • 隐藏層(hidden):在 t t 時刻的值 htht ,它取決于權重為 U U 的 xtxt 與 權重為 V V 的 ht−1ht−1 。
    • 輸出層(output):在 t t 時刻的輸出 otot ,它取決于權重為 W W 的 htht 。
    • 用公式表示即是:

      otht=σo(Wht)=σh(Uxt+Vht−1)(1)(2) o t = σ o ( W h t ) ( 1 ) h t = σ h ( U x t + V h t − 1 ) ( 2 )

      其中 σ(⋅) σ ( ⋅ ) 為對應的激活函數。

      從公式(2)表現為遞歸形式來看,輸出 ot o t 是受到之前所有輸入的影響( xt,xt−1,⋯ x t , x t − 1 , ⋯ )。展開式為:

      ot=σo(Wht)=σo(W⋅σh(Uxt+Vht−1))=σo(W⋅σh(Uxt+V⋅σh(Uxt−1+Vht−2)))=σo(W⋅σh(Uxt+V⋅σh(Uxt−1+V⋅σh(Uxt−2+V⋅σh(⋯)))))(3) o t = σ o ( W h t ) = σ o ( W ⋅ σ h ( U x t + V h t − 1 ) ) = σ o ( W ⋅ σ h ( U x t + V ⋅ σ h ( U x t − 1 + V h t − 2 ) ) ) = σ o ( W ⋅ σ h ( U x t + V ⋅ σ h ( U x t − 1 + V ⋅ σ h ( U x t − 2 + V ⋅ σ h ( ⋯ ) ) ) ) ) ( 3 )

      2.2 簡單結構(Simple Recurrent (Neural) Networks,SR(N)N)

      簡單循環網絡(SRN)通常是指 Elman networks 與 Jordan networks 。

      Elman 網絡的結構(圖檔來自 Wikipedia):

      AI(008) - 循環神經網絡(Recurrent Neural Network)循環神經網絡(Recurrent Neural Network)目錄

      Elman 網絡是一個三層網絡(圖中 x,y,z x , y , z ),附帶一個“上下文單元”(context units,圖中 u u )。隐層與這些單元相連接配接,權重為1。

      Jordan 網絡和 Elman 網絡非常相似。隻是這些“上下文單元”不是和隐層相連,而是與輸出層相連。這些“上下文單元”被稱為狀态層(state layer)。

      它們的公式表示都為:

      ytht=σy(Wyht+by)=σh(Whxt+Uhht−1+bh)(4)(5)yt=σy(Wyht+by)(4)ht=σh(Whxt+Uhht−1+bh)(5)

      2.3 長短期記憶網絡(Long Short-Term Memory,LSTM)

      LSTM 避免了梯度消失的問題。

      LSTM 結構如下(圖檔來自 Wikipedia):

      AI(008) - 循環神經網絡(Recurrent Neural Network)循環神經網絡(Recurrent Neural Network)目錄

      一個 LSTM 包含一個記憶細胞(memory cell,圖中 ct c t ),一個遺忘門(forget gate,圖中 σ,Ft σ , F t )一個輸入門(input gate,圖中 σ,It σ , I t )和一個輸出門(output gate,圖中 σ,Ot σ , O t )。

      從圖中就可以看出,在 LSTM 有:

      • 遺忘門:決定了上一時刻 ct−1 c t − 1 保留多少内容。
      • 輸入門:決定了這一時刻 xt x t 保留多少内容。
      • 輸出門:決定了這一時刻 ct c t 有多少内容輸出到 ht h t 。
      • 輸入:在 t t 時刻的輸入 xtxt ,在 t−1 t − 1 時刻的輸出 ht−1 h t − 1 和 ct−1 c t − 1 。
      • 輸出:在 t t 時刻的輸出 htht 和 ct c t 。

      用公式表示即是:

      FtItOtctht=sigmoid(WFxt+UFht−1+bF)=sigmoid(WIxt+UIht−1+bI)=sigmoid(WOxt+UOht−1+bO)=Ft∘ct−1+It∘tanh(Wcxt+Ucht−1+bc)=Ot∘tanh(ct)(6)(7)(8)(9)(10) F t = s i g m o i d ( W F x t + U F h t − 1 + b F ) ( 6 ) I t = s i g m o i d ( W I x t + U I h t − 1 + b I ) ( 7 ) O t = s i g m o i d ( W O x t + U O h t − 1 + b O ) ( 8 ) c t = F t ∘ c t − 1 + I t ∘ tanh ⁡ ( W c x t + U c h t − 1 + b c ) ( 9 ) h t = O t ∘ tanh ⁡ ( c t ) ( 10 )

      其中 ∘ ∘ 是哈達馬乘積(Hadamard product)矩陣運算,也記作 ∗ ∗ ,部分文章也寫作 ⊙ ⊙ 。

      3 基于時間的反向傳播算法(Backpropagation Trough Time,BPTT)

      BPTT 是一種基于梯度的技術,可以用來計算 Elman 網絡。

      具體的計算可以參考這篇文章

      Recurrent Neural Networks Tutorial, Part 3 – Backpropagation Through Time and Vanishing Gradients

繼續閱讀