第五週:迴圈神經網路

yzm10發表於2020-08-22

第五週:迴圈神經網路

視訊學習

緒論

1. 迴圈神經網路的應用

語音問答、視覺問答、機器翻譯、股票預測、作詞機、作詩、仿寫論文及程式碼、影像理解

2. 迴圈神經網路 vs 卷積神經網路

  • RNN核心問題:上下文關係(時序)

  • 迴圈神經網路與卷積神經網路的不同

    • 傳統神經網路、卷積神經網路,輸入和輸出之間是相互獨立的
    • RNN可以更好的處理具有時序關係的任務
    • RNN通過其迴圈結構引入“記憶”的概念
      • 輸出不僅依賴於輸入,還依賴“記憶”
      • 將同一個結構迴圈利用

基本組成結構

  • 隱層狀態h可以被看作是“記憶”,因為它包含了之前時間點上的相關資訊。
  • 輸出y不僅由當前的輸入所決定,還會考慮到之前的“記憶”。由兩者共同決定。
  • RNN在不同時刻共享一組引數(U,W,V),極大地減小了需要訓練和預估的引數量。

1. 基本結構

  • 隱層的資料被存入到一個“記憶”單元中
  • 存在“記憶”中的資料會被作為另外一個輸入與原始輸入一起輸入到神經網路中
    • 兩種輸入
    • 兩種輸出

2. 深度RNN

深度較深,特徵表示能力較強。

3. 雙向RNN

同時聯絡上、下文資訊。

4. BPTT演算法

與BP演算法相似,複合函式鏈式求導需要考慮所有與W相關的h。

迴圈神經網路的變種

1. 傳統RNN的問題

  • 當迴圈神經網路在時間維度上非常深的時候,會導致梯度消失(較多)或者梯度爆炸(對優化過程影響很大)的問題。
  • 梯度爆炸導致的問題:模型訓練不穩定,梯度變為Nan(無效數字),Inf(無窮大)
  • 梯度爆炸問題的改進:
    • 權重衰減
    • 梯度截斷:誤差梯度超過閾值,截斷梯度,將梯度設為閾值
  • 梯度消失導致的問題:長時依賴問題
    • 隨著時間間隔不斷增大,RNN會喪失學習到連線較遠資訊的能力。
  • 梯度消失問題的改進:
    • 改進模型
    • LSTM,GRU

2. LSTM

LSTM中“記憶”不會被新的輸入覆蓋(相加)。

如果前面的輸入對 C~t~ 產生了影響,那這個影響會一直存在,除非遺忘門的權重為0。

  • LSTM實現三個門的計算:
    • 遺忘門:遺忘資訊,通過記住後資訊
    • 輸入門:確定需要更新的資訊
    • 輸出門:確定輸出資訊
  • 小技巧:
    • LSTM中learning rate可以被儘量的設定小
    • 初始化將輸出門bias置為正數(1或5),這樣模型剛開始訓練時forget gate的值接近於1,不會發生梯度消失

3. GRU

解決LSTM運算複雜的問題。

  • GRU只有兩個門:
    • 重置門:控制忽略前一時刻的狀態資訊的程度,重置門越小說明忽略的越多
    • 更新門:控制前一時刻的狀態資訊被帶入到當前狀態中的程度,更新門越大表示前一時刻的狀態資訊帶入越多
  • 相似:
    • 從t-1到t時刻的記憶的更新都引入加法
    • 可以防止梯度消失

擴充套件

1. 解決RNN梯度消失的其他方法

  • Clockwise RNN
    • 把隱層分成很多組,每組有不同的迴圈週期,有的週期是1(同普通RNN),有的週期更長。這樣距離較遠的某個依賴關係就可以通過週期較長的cell少數幾次迴圈訪問到,從而網路層數不太深,更容易學到。

2. 基於attention的RNN

  • 每個時刻根據當前記憶學到一個attention權重矩陣
  • 同一時刻該權重在每個channel上是共享的

相關文章