1. RNN神經網絡模型原理
2. RNN神經網絡模型的不同結構
3. RNN神經網絡-LSTM模型結構
1. 前言
之前我們對RNN模型做了總結。由於RNN也有梯度消失的問題,因此很難處理長序列的數據,大牛們對RNN做了改進,得到了RNN的特例LSTM(Long Short-Term Memory),它可以避免常規RNN的梯度消失,因此在工業界得到了廣泛的應用。下面我們就對LSTM模型做一個總結。
2. LSTM模型結構
我們先看下LSTM的整體結構。
由於RNN梯度消失的問題,大牛們對於序列索引位置t的隱藏結構做了改進,可以說通過一些技巧讓隱藏結構復雜了起來,來避免梯度消失的問題,這樣的特殊RNN就是我們的LSTM。由於LSTM有很多的變種,這里我們以最常見的LSTM為例講述。
2.1 細胞狀態
在每個序列索引位置t時刻向前傳播的除了和RNN一樣的隱藏狀態\(h_t\),還多了另一個隱藏狀態,如圖中上面的長橫線。這個隱藏狀態我們一般稱為細胞狀態(Cell State),記為\(C_t\)。如下圖所示:
2.2 LSTM之遺忘門
遺忘門(forget gate)顧名思義,是控制是否遺忘的,在LSTM中即以一定的概率控制是否遺忘上一層的隱藏細胞狀態。遺忘門子結構如下圖所示:
圖中輸入的有上一序列的隱藏狀態\(h_{t-1}\)和本序列數據\(x_t\),通過一個激活函數,一般是sigmoid,得到遺忘門的輸出\(f_t\)。由於sigmoid的輸出\(f_t\)在[0,1]之間,因此這里的輸出\(f_t\)代表了遺忘上一層隱藏細胞狀態的概率。用數學表達式即為:
其中\(W_f,U_f,b_f\)為線性關系的系數和偏倚,和RNN中的類似。\(\sigma\)為sigmoid激活函數。
2.3 LSTM之輸入門
輸入門(input gate)負責處理當前序列位置的輸入,它的子結構如下圖:
從圖中可以看到輸入門由兩部分組成,第一部分使用了sigmoid激活函數,輸出為\(i_t\)第二部分使用了\(tanh\)激活函數,輸出為\(a_t\),兩者的結果后面會相乘再去更新細胞狀態。用數學表達式即為:
其中\(W_i,U_i,b_i,W_a,U_a,b_a\)為線性關系的系數和偏倚,和RNN中的類似。\(\sigma\)為sigmoid激活函數。
2.4 LSTM之細胞狀態更新
在研究LSTM輸出門之前,我們要先看看LSTM之細胞狀態。前面的遺忘門和輸入門的結果都會作用於細胞狀態\(C_t\)。我們來看看從細胞狀態\(C_{t-1}\)如何得到\(C_t\)。如下圖所示:
細胞狀態\(C_t\)由兩部分組成,第一部分是\(C_{t-1}\)和遺忘門輸出\(f_t\)的乘積,第二部分是輸入門的\(i_t\)和\(a_t\)的乘積,即:
2.5 LSTM之輸出門
有了新的隱藏細胞狀態\(C_t\),我們就可以來看輸出門了,子結構如下:
從圖中可以看出,隱藏狀態\(h_t\)的更新由兩部分組成,第一部分是\(o_t\),它由上一序列的隱藏狀態\(h_{t-1}\)和本序列數據\(x_t\),以及激活函數sigmoid得到,第二部分由隱藏狀態\(C_t\)和\(tanh\)激活函數組成, 即:
3. 總結
通過本節的剖析,相信大家對於LSTM的模型結構已經有了解了。當然,有些LSTM的結構和上面的LSTM圖稍有不同,但是原理是完全一樣的。