递归神经网络变形之 (Long Short Term Memory,LSTM)
1、長短期記憶網絡LSTM簡介
在RNN 計算中,講到對于傳統RNN水平方向進行長時刻序列依賴時可能會出現梯度消失或者梯度爆炸的問題。LSTM 特別適合解決這種需要長時間依賴的問題。
LSTM(Long Short Term Memory,長短期記憶網絡)是RNN的一種,大體結構一直,區別在于:
- LSTM 的‘記憶cell’ 是被改造過的,水平方向減少梯度消失與梯度爆炸
- 該記錄的信息會一直傳遞,不該記錄的信息會被截斷掉,部分輸出和輸入被從網絡中刪除
RNN 在語音識別,語言建模,翻譯,圖片描述等問題的應用的成功,都是通過 LSTM 達到的。
2、LSTM工作原理
2.1、傳統的RNN“細胞”結構
所有 RNN 都具有一種重復神經網絡模塊的鏈式的形式。在標準的 RNN 中,這個重復的模塊只有一個非常簡單的結構,例如一個 tanh 層。
2.2、LSTM結構
如下圖展示了LSTM的一個神經元內部的結構。單一神經網絡層,這里是有四個,以一種非常特殊的方式進行交互。
?
圖中使用的各種元素的圖標:
- 每一條黑線傳輸著一整個向量,從一個節點的輸出到其他節點的輸入。合在一起的線表示向量的連接,比如一個十維向量和一個二十維向量合并后形成一個三十維向量;分開的線表示內容被復制,然后分發到不同的位置。
- 粉色的圈代表 pointwise 的操作,諸如向量的加法,減法,乘法,除法,都是矩陣的。
- 黃色的矩陣就是神經網絡層。
2.3、細胞狀態
LSTM關鍵:“細胞狀態” 。細胞狀態類似于傳送帶。直接在整個鏈上運行,只有一些少量的線性交互。信息在上面流傳保持不變很容易。
LSTM怎么控制“細胞狀態”?
- LSTM可以通過gates(“門”)結構來去除或者增加“細胞狀態”的信息
- 包含一個sigmoid神經網絡層次和一個pointwist乘法操作
- Sigmoid層輸出一個0到1之間的概率值,描述每個部分有多少量可以通過,0表示“不允 許任務變量通過”,1表示“運行所有變量通過”
- LSTM中主要有三個“門”結構來控制“細胞狀態”
- ?和??矩陣的shape 是一樣的
忘記門
決定從“細胞狀態”中丟棄什么信息;比如在語言模型中,細胞狀態可能包含了性別信息(“他”或者“她”),當我們看到新的代名詞的時候,可以考慮忘記舊的數據
信息增加門
- 決定放什么新信息到“細胞狀態”中;
- Sigmoid層決定什么值需要更新;?
- Tanh層創建一個新的候選向量;
- 主要是為了狀態更新做準備
經過第一個和第二個“門”后,可以確定傳遞信息的刪除和增加,即可以進行 “細胞狀態”的更新
- 更新為;
- 將舊狀態與相乘,丟失掉確定不要的信息;
- 加上新的候選值得到最終更新后的“細胞狀態”
輸出門
- 首先運行一個sigmoid網絡層來確定細胞狀態的那個部分將輸出
- 使用tanh處理細胞狀態得到一個-1到1之間的值,再將它和sigmoid門的輸出相乘,輸出程序確定輸出的部分。
- 前向傳播和反向傳播可以參看前面的傳播過程寫下來,更新LSTM中的參數。具體的公式可以參看:https://blog.csdn.net/Dark_Scope/article/details/47056361
- 作者的論文:https://arxiv.org/pdf/1402.1128v1.pdf
2.4、 前向傳播和后向傳播
前向傳播
現在我們來總結下LSTM前向傳播算法。LSTM模型有兩個隱藏狀態,模型參數幾乎是RNN的4倍,因為現在多了這些參數。
前向傳播過程在每個序列索引位置的過程為:
1)更新遺忘門輸出:
2)更新輸入門兩部分輸出:
?
3)更新細胞狀態:
4)更新輸出門輸出:
5)更新當前序列索引預測輸出:
整體的過程如下圖所示
可以看到,在t tt時刻,用于計算和。
反向傳播
有了LSTM前向傳播算法,推導反向傳播算法就很容易了, 思路和RNN的反向傳播算法思路一致,也是通過梯度下降法迭代更新我們所有的參數,關鍵點在于計算所有參數基于損失函數的偏導數。
在RNN中,為了反向傳播誤差,我們通過隱藏狀態的梯度一步步向前傳播。在LSTM這里也類似。只不過我們這里有兩個隱藏狀態和。這里我們定義兩個,即:
反向傳播時只使用了,變量僅為幫助我們在某一層計算用,并沒有參與反向傳播,這里要注意。如下圖所示:
因為,我們在輸出層定義的損失函數為對數損失,激活函數為softmax激活函數。因為,與RNN的推導類似,在最后的序列索引位置?的和為:
接著我們由反向推導。
的梯度由本層的輸出梯度誤差決定,與公式(10)類似,即:
而?的反向梯度誤差由前一層?的梯度誤差和本層的從傳回來的梯度誤差兩部分組成,即:
公式(13)的前半部分由公式(4)和公式(9)得到,公式(13)的后半部分由公式(6)和公式(8)得到。
有了和, 計算這一大堆參數的梯度就很容易了,這里只給出?的梯度計算過程,其他的的梯度大家只要照搬就可以了。
公式(13)的由公式(1)、公式(4)和公式(9)得到。
由上面可以得到,只要我們清晰地搞清楚前向傳播過程,且只使用了?進行反向傳播的話,反向傳播的整個過程是比較清晰的。
在這里有必要解釋下為什么反向傳播不使用?,如果與循環神經網絡(RNN)模型的前向反向傳播算法里一樣的話,那么的計算方式就不應該是(12)式了
因為,參與了和的計算,所以在RNN文章里的求梯度方法,?應該是
但是,這里是一個比較復雜的時序模型,如果使用RNN的思路,將的部分也一起反向傳播回來的話,這里的反向梯度根本無法得到閉式解。而只考慮一個的話,也可以做反向梯度優化,進度下降,但是優化起來容易的多,可以理解為這里做了一個近似。
3、另一種理解方式
圖中方框我們稱為記憶單元,其中實線箭頭代表當前時刻的信息傳遞,虛線箭頭表示上一時刻的信息傳遞。從結構圖中我們看出,LSTM模型共增加了三個門:?輸入門、遺忘門和輸出門。進入block的箭頭代表輸入,而出去的箭頭代表輸出。
前向傳播公式
上圖中所有帶h的權重矩陣均代表一種泛指,為LSTM的各種變種做準備,表示任意一條從上一時刻指向當前時刻的邊,本文暫不考慮。與上篇公式類似,a代表匯集計算結果,b代表激活計算結果,?Wil代表輸入數據與輸入門之間的權重矩陣,?Wcl代表上一時刻Cell狀態與輸入門之間的權重矩陣,?WiΦ代表輸入數據與遺忘門之間的權重矩陣,?WcΦ代表上一時刻Cell狀態與遺忘門之間的權重矩陣,?Wiω代表輸入數據與輸出門之間的權重矩陣,?Wcω代表Cell狀態與輸出門之間的權重矩陣,?Wic代表輸入層原有的權重矩陣。?需要注意的是,圖中Cell一欄描述的是從下方輸入到中間Cell輸出的整個傳播過程。
反向傳播
和樸素RNN的推導一樣,有了前向傳播公式,我們就能逐個寫出LSTM網絡中各個參數矩陣的梯度計算公式。首先,由于輸出門不牽扯時間維度,我們可以直接寫出輸出門Wiω和Wcω的迭代公式,如下圖:
遺忘門的權重矩陣?WiΦ也可以直接給出,如下圖:
而對于遺忘門的權重矩陣?WcΦ,由于是和上一時刻Cell狀態做匯集計算,殘差除了來自當前Cell,還來自下一時刻的Cell,因此需要寫出下一時刻Cell傳播至本時刻遺忘門的時間維度前向傳播公式,如下圖:
有了上面的公式,我們就能完整寫出?WcΦ的梯度公式了。如下圖所示(如果對這個時間維度前向公式不理解,可以參考上一篇我對樸素RNN的公式推導過程):
請注意,上圖中L”和前面的L’不一樣,這里只是為了式子簡潔。
推完遺忘門公式,就可以此類推輸入門與Cell的公式。其中輸入門基本與遺忘門的推法一樣,殘差都是來自本時刻和下一時刻Cell。而Cell的殘差則來自三個地方:輸出層、輸出門和下一時刻Cell。其中輸出層和輸出門殘差可直接寫出;而下一時刻Cell的殘差,我們只要寫出對應的時間維度前向傳播公式便可寫出。由于時間關系,這里就不詳細推導遺忘門和Cell的梯度公式了,各位若有興趣可自行繼續推導。
相比于樸素RNN模型,LSTM模型更為復雜,且可調整和變化的地方也更多。比如:增加peephole將Cell狀態連接到每個門,變體模型Gated Recurrent Unit (GRU),以及后面出現的Attention模型等。LSTM模型在語音識別、圖像識別、手寫識別、以及預測疾病、點擊率和股票等眾多領域中都發揮著驚人的效果,是目前最火的神經網絡模型之一。敬請期待下節。
4、LSTM 的變體
我們到目前為止都還在介紹正常的 LSTM。但是不是所有的 LSTM 都長成一個樣子的。實際上,幾乎所有包含 LSTM 的論文都采用了微小的變體。差異非常小,目前為止有上百種,常用的也就幾種。 其中一個流形的 LSTM 變體,就是由 Gers & Schmidhuber (2000) 提出的,
4.1、變種1
- 增加了 “peephole connection”層。
- 讓門層也會接受細胞狀態的輸入。
4.2、變種2
通過耦合忘記門和更新輸入門(第一個和第二個門);也就是不再單獨的考慮忘記什么、增 加什么信息,而是一起進行考慮。
4.3、Gated Recurrent Unit(GRU),2014年提出
- 將忘記門和輸入門合并成為一個單一的更新門
- 同時合并了數據單元狀態和隱藏狀態
- 結構比LSTM的結構更加簡單
4.4、https://arxiv.org/pdf/1402.1128v1.pdf?論文
論文中定義的 LTSM cell 如下圖所示:
圖示
?
所以像論文里指出的,這里實現的 LSTM Cell 含有更多參數,效果更好?
一般的 LSTM 就夠用了,GRU 用的也比較多。
參考
- LSTM Forward and Backward Pass
- Understanding LSTM Networks
- https://arxiv.org/pdf/1402.1128v1.pdf
?
總結
以上是生活随笔為你收集整理的递归神经网络变形之 (Long Short Term Memory,LSTM)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 感谢杨中科老师
- 下一篇: HTML+CSS简单应用实例——购物网站