白話--長短期記憶(LSTM)的幾個步驟,附代碼!-創(chuàng)新互聯(lián)

1. 什么是LSTM

在你閱讀這篇文章時候,你都是基于自己已經(jīng)擁有的對先前所見詞的理解來推斷當(dāng)前詞的真實含義。我們不會將所有的東西都全部丟棄,然后用空白的大腦進(jìn)行思考。我們的思想擁有持久性。LSTM就是具備了這一特性。

成都創(chuàng)新互聯(lián)公司一直通過網(wǎng)站建設(shè)和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實效"的一站式服務(wù),以成都做網(wǎng)站、成都網(wǎng)站設(shè)計、移動互聯(lián)產(chǎn)品、營銷型網(wǎng)站服務(wù)為核心業(yè)務(wù)。十載網(wǎng)站制作的經(jīng)驗,使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價格便宜而且實用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。

這篇將介紹另?種常?的?控循環(huán)神經(jīng)?絡(luò): ?短期記憶(long short-term memory,LSTM)[1]。 它??控循環(huán)單元的結(jié)構(gòu)稍微復(fù)雜?點,也是為了解決在RNN網(wǎng)絡(luò)中梯度衰減的問題,是GRU的一種擴(kuò)展。

可以先理解GRU的過程,在來理解LSTM會容易許多,鏈接地址: 三步理解—門控循環(huán)單元(GRU)

LSTM 中引?了3個?,即輸??(input gate)、遺忘?(forget gate)和輸出?(output gate),以及與隱藏狀態(tài)形狀相同的記憶細(xì)胞(某些?獻(xiàn)把記憶細(xì)胞當(dāng)成?種特殊的隱藏狀態(tài)),從而記錄額外的信息。

2. 輸??、遺忘?和輸出?

與?控循環(huán)單元中的重置?和更新??樣,?短期記憶的?的輸?均為當(dāng)前時間步輸?Xt與上?時間步隱藏狀態(tài)Ht?1,輸出由激活函數(shù)為sigmoid函數(shù)的全連接層計算得到。如此?來,這3個?元素的值域均為[0, 1]。如下圖所示:

白話--長短期記憶(LSTM)的幾個步驟,附代碼!

具體來說,假設(shè)隱藏單元個數(shù)為 h,給定時間步 t 的小批量輸? 白話--長短期記憶(LSTM)的幾個步驟,附代碼!(樣本數(shù)為n,輸?個數(shù)為d)和上?時間步隱藏狀態(tài) 白話--長短期記憶(LSTM)的幾個步驟,附代碼!。三個門的公式如下:

輸入門: 白話--長短期記憶(LSTM)的幾個步驟,附代碼!)

遺忘問: 白話--長短期記憶(LSTM)的幾個步驟,附代碼!)

輸出門: 白話--長短期記憶(LSTM)的幾個步驟,附代碼!)

3. 候選記憶細(xì)胞

接下來,?短期記憶需要計算候選記憶細(xì)胞 白話--長短期記憶(LSTM)的幾個步驟,附代碼!。它的計算與上?介紹的3個?類似,但使?了值域在[?1, 1]的tanh函數(shù)作為激活函數(shù),如下圖所示:

白話--長短期記憶(LSTM)的幾個步驟,附代碼!

具體來說,時間步t的候選記憶細(xì)胞計算如下:

白話--長短期記憶(LSTM)的幾個步驟,附代碼!)

4. 記憶細(xì)胞

我們可以通過元素值域在[0, 1]的輸??、遺忘?和輸出?來控制隱藏狀態(tài)中信息的流動,這?般也是通過使?按元素乘法(符號為⊙)來實現(xiàn)的。當(dāng)前時間步記憶細(xì)胞 白話--長短期記憶(LSTM)的幾個步驟,附代碼!的計算組合了上?時間步記憶細(xì)胞和當(dāng)前時間步候選記憶細(xì)胞的信息,并通過遺忘?和輸??來控制信息的流動:

白話--長短期記憶(LSTM)的幾個步驟,附代碼!

如下圖所?,遺忘?控制上?時間步的記憶細(xì)胞Ct?1中的信息是否傳遞到當(dāng)前時間步,而輸??則控制當(dāng)前時間步的輸?Xt通過候選記憶細(xì)胞C?t如何流?當(dāng)前時間步的記憶細(xì)胞。如果遺忘??直近似1且輸???直近似0,過去的記憶細(xì)胞將?直通過時間保存并傳遞?當(dāng)前時間步。這個設(shè)計可以應(yīng)對循環(huán)神經(jīng)?絡(luò)中的梯度衰減問題,并更好地捕捉時間序列中時間步距離較?的依賴關(guān)系。

白話--長短期記憶(LSTM)的幾個步驟,附代碼!

5. 隱藏狀態(tài)

有了記憶細(xì)胞以后,接下來我們還可以通過輸出?來控制從記憶細(xì)胞到隱藏狀態(tài)Ht的信
息的流動:

白話--長短期記憶(LSTM)的幾個步驟,附代碼!)

這?的tanh函數(shù)確保隱藏狀態(tài)元素值在-1到1之間。需要注意的是,當(dāng)輸出?近似1時,記憶細(xì)胞信息將傳遞到隱藏狀態(tài)供輸出層使?;當(dāng)輸出?近似0時,記憶細(xì)胞信息只??保留。 下圖展?了?短期記憶中隱藏狀態(tài)的全部計算:

白話--長短期記憶(LSTM)的幾個步驟,附代碼!

6. LSTM與GRU的區(qū)別

LSTM與GRU二者結(jié)構(gòu)十分相似, 不同在于

  1. 新的記憶都是根據(jù)之前狀態(tài)及輸入進(jìn)行計算,但是GRU中有一個重置門控制之前狀態(tài)的進(jìn)入量,而在LSTM里沒有類似門;
  2. 產(chǎn)生新的狀態(tài)方式不同,LSTM有兩個不同的門,分別是遺忘門(forget gate)和輸入門(input gate),而GRU只有一種更新門(update gate);
  3. LSTM對新產(chǎn)生的狀態(tài)可以通過輸出門(output gate)進(jìn)行調(diào)節(jié),而GRU對輸出無任何調(diào)節(jié)。
  4. GRU的優(yōu)點是這是個更加簡單的模型,所以更容易創(chuàng)建一個更大的網(wǎng)絡(luò),而且它只有兩個門,在計算性上也運行得更快,然后它可以擴(kuò)大模型的規(guī)模。
  5. LSTM更加強大和靈活,因為它有三個門而不是兩個。

7. LSTM可以使用別的激活函數(shù)嗎?

關(guān)于激活函數(shù)的選取,在LSTM中,遺忘門、輸入門和輸出門使用Sigmoid函數(shù)作為激活函數(shù);在生成候選記憶時,使用雙曲正切函數(shù)Tanh作為激活函數(shù)。

值得注意的是,這兩個激活函數(shù)都是飽和的,也就是說在輸入達(dá)到一定值的情況下,輸出就不會發(fā)生明顯變化了。如果是用非飽和的激活函數(shù),例如ReLU,那么將難以實現(xiàn)門控的效果。

Sigmoid函數(shù)的輸出在0~1之間,符合門控的物理定義。且當(dāng)輸入較大或較小時,其輸出會非常接近1或0,從而保證該門開或關(guān)。在生成候選記憶時,使用Tanh函數(shù),是因為其輸出在?1~1之間,這與大多數(shù)場景下特征分布是0中心的吻合。此外,Tanh函數(shù)在輸入為0附近相比Sigmoid函數(shù)有更大的梯度,通常使模型收斂更快。

激活函數(shù)的選擇也不是一成不變的,但要選擇合理的激活函數(shù)。

8. 代碼實現(xiàn)

MIST數(shù)據(jù)分類—TensorFlow實現(xiàn)LSTM

【 機器學(xué)習(xí)通俗易懂系列文章 】

白話--長短期記憶(LSTM)的幾個步驟,附代碼!

9. 參考文獻(xiàn)

《動手學(xué)—深度學(xué)習(xí)》


作者: @mantchs

GitHub: https://github.com/NLP-LOVE/ML-NLP

歡迎大家加入討論!共同完善此項目!群號:【541954936】 白話--長短期記憶(LSTM)的幾個步驟,附代碼!

分享標(biāo)題:白話--長短期記憶(LSTM)的幾個步驟,附代碼!-創(chuàng)新互聯(lián)
本文鏈接:http://bm7419.com/article42/dpccec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、軟件開發(fā)、服務(wù)器托管、響應(yīng)式網(wǎng)站標(biāo)簽優(yōu)化、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)