第五週:迴圈神經網路
視訊學習
緒論
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上是共享的