RNN變種-LSTM

什么是 LSTM?

長(zhǎng)短期記憶網(wǎng)絡(luò)——通常被稱(chēng)為 LSTM,是一種特殊的 RNN,能夠?qū)W習(xí)長(zhǎng)期依賴(lài)性。由 Hochreiter 和 Schmidhuber(1997)提出的,并且在接下來(lái)的工作中被許多人改進(jìn)和推廣。LSTM 在各種各樣的問(wèn)題上表現(xiàn)非常出色,現(xiàn)在被廣泛使用。

LSTM 被明確設(shè)計(jì)用來(lái)避免長(zhǎng)期依賴(lài)性問(wèn)題。長(zhǎng)時(shí)間記住信息實(shí)際上是 LSTM 的默認(rèn)行為,而不是需要努力學(xué)習(xí)的東西

LSTM與標(biāo)準(zhǔn)RNN區(qū)別

所有遞歸神經(jīng)網(wǎng)絡(luò)都具有神經(jīng)網(wǎng)絡(luò)的鏈?zhǔn)街貜?fù)模塊。在標(biāo)準(zhǔn)的 RNN 中,這個(gè)重復(fù)模塊具有非常簡(jiǎn)單的結(jié)構(gòu),例如只有單個(gè) tanh 層。

屏幕截圖 2022-04-18 201450.png

LSTM 也具有這種類(lèi)似的鏈?zhǔn)浇Y(jié)構(gòu),但重復(fù)模塊具有不同的結(jié)構(gòu)。不是一個(gè)單獨(dú)的神經(jīng)網(wǎng)絡(luò)層,而是四個(gè),并且以非常特殊的方式進(jìn)行交互。

屏幕截圖 2022-04-18 201547.png

LSTM單元由內(nèi)部記憶單元,輸入門(mén),輸出門(mén)和遺忘門(mén)組成。該內(nèi)部記憶單元記住任意時(shí)間間隔內(nèi)的值,并且三個(gè)門(mén)控制進(jìn)出單元的信息流。

原始RNN的隱藏層只有一個(gè)狀態(tài),即h,它對(duì)于短期的輸入非常敏感。那么如果我們?cè)僭黾右粋€(gè)狀態(tài),即c,讓它來(lái)保存長(zhǎng)期的狀態(tài),這就是長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)。

屏幕截圖 2022-04-18 204510.png

按時(shí)間維度展開(kāi)

屏幕截圖 2022-04-18 204807.png

可以看出在 t 時(shí)刻,LSTM的輸入有三個(gè):當(dāng)前時(shí)刻網(wǎng)絡(luò)的輸入值 xt 、上一時(shí)刻LSTM的輸出值 ht?1、以及上一時(shí)刻的單元狀態(tài) ct?1;LSTM的輸出有兩個(gè):當(dāng)前時(shí)刻LSTM輸出值 ht 、和當(dāng)前時(shí)刻的單元狀態(tài) xt 。注意 x、h、c 都是向量。

LSTM的傳播過(guò)程

先引入門(mén)的理解

門(mén)的輸出是0到1之間的實(shí)數(shù)向量,用門(mén)向量的輸出向量按元素乘以我們需要控制的那個(gè)向量,當(dāng)門(mén)輸出為0時(shí),任何向量與之相乘都會(huì)得到0向量,這就相當(dāng)完全不能通過(guò);輸出為1時(shí),任何向量與之相乘都不會(huì)有任何改變,這就相當(dāng)于完全通過(guò)。因?yàn)棣遥ㄒ簿褪莝igmoid函數(shù))的值域是(0,1),所以門(mén)的狀態(tài)都是半開(kāi)半閉的。

屏幕截圖 2022-04-18 210532.png
屏幕截圖 2022-04-18 210641.png

遺忘門(mén)有自己的兩個(gè)權(quán)重矩陣W_{f},U_{f},分別對(duì)應(yīng)t時(shí)刻的輸入向量x_{t}和t-1時(shí)刻隱藏層的向量h_{t-1}, 以及一個(gè)偏置向量b_{f}

屏幕截圖 2022-04-18 211927.png

輸入門(mén)也有自己的兩個(gè)權(quán)重矩陣W_{i},U_{i},分別對(duì)應(yīng)t時(shí)刻的輸入向量x_{t}和t-1時(shí)刻隱藏層的向量h_{t-1}, 以及一個(gè)偏置向量b_{i}

屏幕截圖 2022-04-18 212300.png

通過(guò)sigmoid處理過(guò)的向量,得到的都是(0,1)之間的權(quán)重,由遺忘門(mén)得到上一時(shí)刻記憶單元在本層網(wǎng)絡(luò)中的程度大小,再由輸入門(mén)得到輸入x和當(dāng)前狀態(tài)更新到記憶單元的程度大小,根據(jù)這兩個(gè)程度來(lái)得到記憶單元在本層網(wǎng)絡(luò)的狀態(tài),完成對(duì)記憶單元的更新

屏幕截圖 2022-04-18 213211.png

可以形象的這樣理解內(nèi)部記憶單元更新過(guò)程

屏幕截圖 2022-04-18 215220.png

在記憶單元的控制下,用輸入向量和上一層的輸出向量ht-1,得到輸出向量ht

長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)的訓(xùn)練

LSTM的訓(xùn)練算法仍然是反向傳播算法,對(duì)于這個(gè)算法,我們已經(jīng)非常熟悉了。主要有下面三個(gè)步驟:

1、前向計(jì)算每個(gè)神經(jīng)元的輸出值,對(duì)于LSTM來(lái)說(shuō),即 ft、it、ct、ot、ht 五個(gè)向量的值。計(jì)算方法已經(jīng)在面描述過(guò)了。

2、反向計(jì)算每個(gè)神經(jīng)元的誤差項(xiàng)δ值。與循環(huán)神經(jīng)網(wǎng)絡(luò)一樣,LSTM誤差項(xiàng)的反向傳播也是包括兩個(gè)方向:一個(gè)是沿時(shí)間的反向傳播,即從當(dāng)前t時(shí)刻開(kāi)始,計(jì)算每個(gè)時(shí)刻的誤差項(xiàng);一個(gè)是將誤差項(xiàng)向上一層傳播。

3、根據(jù)相應(yīng)的誤差項(xiàng),計(jì)算每個(gè)權(quán)重的梯度。

小結(jié)

LSTM在工作時(shí),

當(dāng)輸入的序列不存在有用信息時(shí),遺忘門(mén)f的值就會(huì)接近1,輸入門(mén)i的值就會(huì)接近0,這樣過(guò)去有用的信息就會(huì)被保存

當(dāng)輸入的序列存在重要信息時(shí),遺忘門(mén)f的值就會(huì)接近0,輸入門(mén)i的值就會(huì)接近1,這樣LSTM遺忘過(guò)去的記憶,記錄重要記憶

可以看出遺忘門(mén),輸入門(mén),輸出門(mén)和內(nèi)部記憶單元共同控制LSTM輸出h的設(shè)計(jì),使得整個(gè)網(wǎng)絡(luò)更好地把握序列信息之間的關(guān)系

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容