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