有一定神經(jīng)網(wǎng)絡(luò)基礎(chǔ)的建議直接閱讀原文即可,該篇說明主要翻譯來自該文章,目的是為LSTM-DSSM模型的理解做簡易說明。
原文地址:https://colah.github.io/posts/2015-08-Understanding-LSTMs/
RNN(Recurrent Neural Networks)的兩點(diǎn)在于他有l(wèi)oops,他的結(jié)構(gòu)如下:

首先,對(duì)一些字母進(jìn)行說明,x是輸入,h是輸出。該結(jié)構(gòu)是一個(gè)x對(duì)應(yīng)一個(gè)h,當(dāng)然還有多x,對(duì)應(yīng)一個(gè)h,應(yīng)結(jié)合具體需求場景進(jìn)行神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)造。
當(dāng)x的序列增加時(shí),RNN會(huì)逐漸喪失學(xué)習(xí)到遠(yuǎn)距離信息的能力,因?yàn)樵谟?xùn)練神經(jīng)網(wǎng)絡(luò)參數(shù)的時(shí)候,使用的是BP算法,用到求導(dǎo)的鏈?zhǔn)椒▌t,這就導(dǎo)致梯度被表示為連乘的形式,以至于梯度消失(小于1的數(shù)連乘趨于0),所以RNN學(xué)不到遠(yuǎn)距離的信息。
因此,LSTM(Long Short Term Memory Networks)應(yīng)運(yùn)而生。LSTM具有使得信息通過與否的能力,這個(gè)能力是通過gate的操作來控制。gate由一個(gè)sigmoid層和矩陣逐點(diǎn)乘法,這兩個(gè)操作所組成。因?yàn)閟igmoid的取值范圍在[0,1]之間,也就可以表示信息傳遞的多少。具體圖示如下圖所示:

下面來逐步解析LSTM的結(jié)構(gòu),在LSTM中主要包括以下幾步:
第一要判斷是否拋棄信息(cell state),那么就有結(jié)構(gòu)稱為:foget gate layer(ft),由一個(gè)sigmoid層組成,它利用了ht-1和xt的信息。

接著,要決定要存儲(chǔ)什么新的信息,這由兩部分組成。首先是一個(gè)sigmoid層,稱為input gate layer,用來決定我們更新哪部分信息。然后,是一個(gè)tanh層,它用來創(chuàng)造新的候選值Ct,可以用來加到狀態(tài)中。具體結(jié)構(gòu)如下:

這時(shí),就用新的狀態(tài)值Ct來代替舊的狀態(tài)值Ct-1,C代表一個(gè)記憶多少。
然后,將舊的狀態(tài)和新的狀態(tài)結(jié)合成為新的候選值,取決于想忘記多少,以及想更新多少。

最后,要決定需要輸出什么,先構(gòu)造一個(gè)sigmoid層來決定要輸出哪部分狀態(tài),然后將該狀態(tài)過濾一個(gè)tanh層,并和決定要輸出的部分相乘。結(jié)構(gòu)如下所示:

以上就是基本的LSTM的內(nèi)部結(jié)構(gòu),結(jié)合一些節(jié)點(diǎn)的意義,會(huì)方便理解和記憶。
完整的結(jié)構(gòu)如下:

關(guān)于LSTM的變種,主要有以下三個(gè):
① Gers & Schmidhuber等人,在此基礎(chǔ)上增加了peephole connection。即使得gate layer “看守”cell state,就是給每一層增加了一個(gè)sigmoid層。

② 直接將需要記憶的part設(shè)為1-ft,那么結(jié)構(gòu)就變?yōu)槿缦滤荆?/p>

③ 增加GRU(Gated Rucurrent Unit),他將forget gate和input gate結(jié)合成為一個(gè)update gate。并把cell state 和hidden state合并,并做一些改變,這樣就比普通的LSTM更加簡單一些,具體結(jié)構(gòu)如下:
