LSTM理論知識講解

結構

1. RNN與LSTM的對比

RNN:
在這裏插入圖片描述
LSTM:
在這裏插入圖片描述
其中的notation:
在這裏插入圖片描述
這裏要注意:上圖中四個黃框,每一個都是普通的神經網絡,激活函數就是框上面所標註的。

通過對比可以看出,RNN的一個cell中只有一個神經網絡,而LSTM的一個cell中有4個神經網絡,故一個LSTM cell的參數是一個RNN cell參數的四倍。
在這裏插入圖片描述
從上圖也可以看出,原來的一個RNN cell只需要存儲一個隱藏層狀態h,而一個LSTM cell需要存儲兩個狀態c和h。
在這裏插入圖片描述
LSTM比RNN多了一個細胞狀態,就是最上面一條線(也就是c),像一個傳送帶,信息可以不加改變的流動。即Ct-2可能和Ct+1存儲的信息可能非常相似,所以LSTM可以解決RNN長依賴的問題。

2. LSTM信息的流動

在這裏插入圖片描述
一個LSTM cell有3個門,分別叫做遺忘門(f門),輸入門(i門)和輸出門(o門)。要注意的是輸出門的輸出ot並不是LSTM cell最終的輸出,LSTM cell最終的輸出是ht和ct。
這三個門就是上圖中三個標着σ{\sigma}的黃色的框。sigmoid層輸出0-1的值,表示讓多少信息通過,1表示讓所有的信息都通過。

LSTM的輸入: Ct1C_{t-1}ht1h_{t-1}xtx_{t}
LSTM的輸出: hth_{t}CtC_{t}

ftf_{t} = σ{\sigma}(WfW_{f} \cdot [ht1h_{t-1}, xt1x_{t-1}] + bfb_{f})
iti_{t} = σ{\sigma}(WiW_{i} \cdot [ht1h_{t-1}, xt1x_{t-1}] + bib_{i})
Ct~\tilde{C_{t}} = tanhtanh(WCW_{C} \cdot [ht1h_{t-1}, xt1x_{t-1}] + bCb_{C})
CtC_{t} = ftf_{t} \ast Ct1C_{t-1} + iti_{t} \ast Ct~\tilde{C_{t}}
oto_{t} = σ{\sigma}(WoW_{o} \cdot [ht1h_{t-1}, xt1x_{t-1}] + bob_{o})
hth_{t} = oto_{t} \ast tanhtanh(CtC_{t})

注意上面公式中的\ast是對應元素乘,而不是矩陣的乘法

忘記門:扔掉信息(細胞狀態)

在這裏插入圖片描述

第一步是決定從細胞狀態裏扔掉什麼信息(也就是保留多少信息)。將上一步細胞狀態中的信息選擇性的遺忘 。
實現方式:通過sigmoid層實現的“忘記門”。以上一步的ht1h_{t-1}和這一步的xtx_{t}作爲輸入,然後爲Ct1C_{t-1}裏的每個數字輸出一個0-1間的值,記爲ftf_{t},表示保留多少信息(1代表完全保留,0表示完全捨棄)
例子:讓我們回到語言模型的例子中來基於已經看到的預測下一個詞。在這個問題中,細胞狀態可能包含當前主語的類別,因此正確的代詞可以被選擇出來。當我們看到新的主語,我們希望忘記舊的主語。
例如,他今天有事,所以我… 當處理到‘’我‘’的時候選擇性的忘記前面的’他’,或者說減小這個詞對後面詞的作用。

輸入層門:存儲信息(細胞狀態)

在這裏插入圖片描述

第二步是決定在細胞狀態裏存什麼。將新的信息選擇性的記錄到細胞狀態中。 實現方式:包含兩部分,

  1. sigmoid層(輸入門層)決定我們要更新什麼值,這個概率表示爲 iti_{t}
  2. tanh層創建一個候選值向量Ct~\tilde{C_{t}},將會被增加到細胞狀態中。 我們將會在下一步把這兩個結合起來更新細胞狀態。

例子:在我們語言模型的例子中,我們希望增加新的主語的類別到細胞狀態中,來替代舊的需要忘記的主語。 例如:他今天有事,所以我…
當處理到‘’我‘’這個詞的時候,就會把主語我更新到細胞中去。

更新細胞狀態(細胞狀態)

在這裏插入圖片描述
注意上面公式中的\ast是對應元素乘,而不是矩陣的乘法

更新舊的細胞狀態 實現方式: ftf_{t} 表示忘記上一次的信息Ct1C_{t-1}的程度,iti_{t}
表示要將候選值Ct~\tilde{C_{t}}加入的程度, 這一步我們真正實現了移除哪些舊的信息(比如一句話中上一句的主語),增加哪些新信息,最後得到了本細胞的狀態 CtC_{t}

輸出層門:輸出(隱藏狀態)

在這裏插入圖片描述

最後,我們要決定作出什麼樣的預測。 實現方式:

  1. 我們通過sigmoid層(輸出層門)來決定輸出的本細胞狀態 CtC_{t} 的哪些部分;
  2. 然後我們將細胞狀態通過tanh層(使值在-1~1之間),然後與sigmoid層的輸出相乘得到最終的輸出 hth_{t}

所以我們只輸出我們想輸出的部分。 例子:在語言模型的例子中,因爲它就看到了一個 代詞,可能需要輸出與一個 動詞相關的信息。例如,可能輸出是否代詞是單數還是複數,這樣如果是動詞的話,我們也知道動詞需要進行的詞形變化。
例如:上面的例子,當處理到‘’我‘’這個詞的時候,可以預測下一個詞,是動詞的可能性較大,而且是第一人稱。 會把前面的信息保存到隱層中去。

LSTM的各個變量

在這裏插入圖片描述
⊙ 是element-wise乘,即按元素乘

介紹下各個變量的維度,LSTM cell的輸出 hth_{t} 的維度是黃框裏隱藏層神經元的個數,記爲d,即矩陣WfW_{f} , WiW_{i}, WcW_{c}, WoW_{o}的行數。t 時刻LSTM cell的輸入xtx_{t}的維度記爲 n,最終的輸入是ht1h_{t-1}xtx_{t}的聯合,即[ht1h_{t-1}, xtx_{t}] ,其維度是d+nd+n,所有矩陣(包括WfW_{f} , WiW_{i}, WcW_{c}, WoW_{o})的維度都是[dddd+nn],所有的向量包括(bfb_{f} , bib_{i}, bcb_{c}, bob_{o}, ftf_{t}, iti_{t}, oto_{t}, hth_{t}, ht1h_{t-1}, Ct1C_{t-1}, CtC_{t}Ct~\tilde{C_{t}})維度都是dd。(爲了表示、更新方便,我們將bias放到矩陣裏)
WfW_{f}舉例:
在這裏插入圖片描述
同理:
在這裏插入圖片描述
合併爲一個矩陣就是:
在這裏插入圖片描述
轉載自:https://blog.csdn.net/wjc1182511338/article/details/79285503 , 個別地方有補充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章