CS231n-2017 第10講 迴圈神經網路
阿新 • • 發佈:2019-01-05
一、迴圈神經網路與應用場景
考察一個輸入序列
,迴圈神經網路每次會結合上一次的網路狀態
和本次輸入
,更新網路狀態為
,並根據需要輸出結果
。迴圈神經網路的前向傳播的數學表達如下:
其結構和應用情形如下。
1. 一(輸入)對多(輸出):影象標註,即輸入一幅影象,輸出關於這幅影象的描述。
圖 1. 迴圈神經網路之一對多2. 多對一:情感分析。
圖 2. 迴圈神經網路之多對一 ###### 3. 多對多:機器翻譯。 圖 3. 迴圈神經網路之多對多 ###### 4. 多對多:視訊分類。 圖 4. 迴圈神經網路之多對多二、迴圈神經網路的反向傳播
迴圈神經網路的反向傳播過程有幾種不同的方式,視輸入序列的長度而定。
- 利用全序列計算損失函式,計算梯度,然後進行反向傳播。
- 將整個序列劃分為小段,對每一小段計算前向與反向傳播的結果。每小段輸入時都重置網路狀態。
- 將整個序列劃分為小段,但針對每小段處理時,不重置網路狀態,而沿用上一小段產生的狀態。
三、影象標註
-
由卷積網路生成影象特徵向量,用作迴圈卷積網路的狀態初始值。然後使用起始識別符號
<START>
作為第一個字詞,啟動網路,每次生成一個用於描述影象的詞(從事先給定的相簿中選取),並將該詞替代起始識別符號,作為迴圈網路層的輸入。 -
使用注意力模型的影象標註:使用卷積神經網路產生一組與影象相關的特徵向量,每一個可能與影象的某部分相關。迴圈神經網路每一次輸出,除了輸出用於描述影象的單詞外,還會輸出在那組特徵向量上的概率分佈,依據概率分佈對影象的那組特徵進行加權,所得結果作為下一步的輸入。
四、迴圈神經網路的改進:長短時記憶網路
考慮迴圈神經網路的反向傳播過程。對於隱藏狀態求導,由於每一層的梯度流都會引入一個係數矩陣 的相乘操作,因此很容易出現梯度爆炸或梯度消失的現象。
- 對於梯度爆炸,可採用梯度截斷方法,即當梯度超過一定門限後,強制使得梯度不在增大。
- 對於梯度消失,則需要改進迴圈神經網路的結構——即引入門控制單元的長短時記憶網路。
長短時記憶網路的一個單元模組中包含四個控制門,由之來控制單元狀態 和網路狀態 :
- f(oget)-gate: 遺忘門,控制著是否消除本次單元狀態 的影響。
- i(nput)-gate: 輸入門,標識著本次輸入。
- g(ate)-gate: 門(原諒這個奇怪的命名,課程的講授者也不清楚這個字元具體的指代),控制著本次輸入的影響程度。
- o(utput)-gate: 輸出門,標識著輸出。
該網路前向傳播的數學表達為:
對單元狀態求導時,只會包含一個與f-gate的輸出的逐元素的相乘操作,不會引入矩陣相乘操作,會極大緩解梯度消失的現象。
圖 6. 對單元狀態求導的梯度流圖示