LSTM詳解,你學會了嗎?
LSTM即long short term memory,是RNN神經網絡的改進版本。它與RNN的不同之處就在于,它引入了細胞狀態這樣一種概念,不同于RNN只考慮最近的狀態,LSTM的細胞狀態會決定哪些狀態留下來,哪些狀態被遺忘。這樣即使很久以前的狀態也會對下一步的預測作出影響,很大程度上的彌補了RNN的缺陷。
不同于RNN單一神經網絡層,LSTM有四個神經網絡層,如下圖所示:
首先先熟悉一下上圖中圖標的含義
在上面的圖例中,每一條黑線傳輸著一整個向量,從一個節點的輸出到其他節點的輸入。粉色的圈代表 pointwise 的操作,諸如向量的和,而黃色的矩陣就是學習到的神經網絡層。合在一起的線表示向量的連接,分開的線表示內容被復制,然后分發到不同的位置。
LSTM的細胞狀態指的就是運行在鏈上的狀態C
但細胞狀態C只能記錄信息的狀態,并不能對信息進行篩選或更新,此功能是通過一種叫門的結構來實現的,而門主要是通過一個 sigmoid 的神經層 和一個逐點相乘的操作來實現的。
sigmoid層輸出一個0-1之間的實數,此實數表示讓信息通過的權重。比如0是完全不通過,1是全部通過。
而LSTM正是通過三個這樣的門結構來實現信息的傳遞和篩檢。這三個門分別是輸入門、遺忘門和輸出門。
LSTM---遺忘門
在LSTM中,第一步是決定從細胞狀態中丟棄什么信息,這一步我們通過一個叫做遺忘門的層來完成。該層讀取ht-1和xt,輸出0-1之間的權重給細胞狀態Ct-1。其中ht-1是上一個細胞的輸出,xt是當前細胞的輸入。該遺忘門結構如下圖所示:
LSTM---輸入門
輸入門主要是對信息進行更新,該門包括兩個步驟:首先input gate layer的sigmoid層決定哪些內容需要進行更新,然后tanh層生成用來更新的內容。最后把這兩個狀態結合起來對細胞狀態進行更新。
接下來我們對細胞狀態進行更新,用舊的細胞狀態與ft相乘,確定哪些信息需要丟棄。然后加上it*Ct,對細胞狀態進行更新。
LSTM---輸出門
最終,我們需要確定輸出什么值。這個輸出將會基于我們的細胞狀態,但是也是一個過濾后的版本。首先,我們運行一個 sigmoid 層來確定細胞狀態的哪個部分將輸出出去。接著,我們把細胞狀態通過 tanh 進行處理(得到一個在 -1 到 1 之間的值)并將它和 sigmoid 門的輸出相乘,最終我們僅僅會輸出我們確定輸出的那部分。
其中遺忘門,輸入門和輸出門的權重W和b都是通過誤差反向傳播學習得到的,下一篇將會對權重的學習和更新進行詳細解釋。
本文轉載自????人工智能訓練營????,作者:人工智能訓練營
