LSTM的结构
RNN和LSTM
簡(jiǎn)略表示RNN層:長(zhǎng)方形節(jié)點(diǎn)中包含了矩陣乘積、偏置的和、tanh函數(shù)的變換。將下面這個(gè)公式表示成一個(gè)tanh節(jié)點(diǎn)。
LSTM:Long Short-Term Memory(長(zhǎng)短期記憶),長(zhǎng)時(shí)間維持短期記憶。
LSTM與RNN的接口(輸入輸出)如下圖,不同地方在于,LSTM還有路徑c 。c稱為記憶單元。
記憶單元在LSTM層內(nèi)部結(jié)束工作,不向其他層輸出。記憶單元僅在LSTM層內(nèi)部接收和傳遞數(shù)據(jù)。
ct存儲(chǔ)了時(shí)刻t時(shí)LSTM的記憶(保存了從過(guò)去到時(shí)刻t的所有必要信息)。
LSTM層結(jié)構(gòu)
LSTM層基于記憶單元ct計(jì)算隱藏狀態(tài)ht。
記憶單元ct基于3個(gè)輸入經(jīng)過(guò)某種計(jì)算算出。隱藏狀態(tài)ht要用更新后的ct計(jì)算,對(duì)ct的各個(gè)元素應(yīng)用tanh函數(shù),這表明,記憶單元ct和隱藏狀態(tài)ht的元素個(gè)數(shù)相同。
Gate
Gate是門的意思。水管閥門的作用就是阻止或者釋放水流(數(shù)據(jù)),Gate用于控制數(shù)據(jù)的流動(dòng)。
LSTM中的閥門,可以控制閥門打開(kāi)的程度(開(kāi)合程度)來(lái)控制水的流量。門的開(kāi)合程度由0.0 ~ 1.0的實(shí)數(shù)表示(1.0全開(kāi))。門的開(kāi)合程度也是自動(dòng)從數(shù)據(jù)中學(xué)習(xí)到的(有權(quán)重參數(shù)用于控制門的開(kāi)合程度,這些權(quán)重參數(shù)通過(guò)學(xué)習(xí)被更新)。sigmoid函數(shù)用于求門的開(kāi)合程度。
輸出門
之前的隱藏狀態(tài)ht對(duì)記憶單元ct僅用了tanh函數(shù),如果給tanh(ct)加上門,這個(gè)門,管理下個(gè)隱藏狀態(tài)ht的輸出,稱為輸出門(output gate)。
輸出門的開(kāi)合程度根據(jù)輸入xt和上個(gè)狀態(tài)ht-1求出,公式如下。在使用的權(quán)重參數(shù)和偏置的上標(biāo)上添加了output的首字母o,公式還用了sigmoid函數(shù),公式的結(jié)果就是輸出門的輸出o。
ht可由o和tanh(ct)的乘積計(jì)算出來(lái)。這個(gè)乘積是對(duì)應(yīng)元素的乘積,也稱為阿達(dá)瑪乘積。也就是說(shuō),對(duì)tanh(ct)的各個(gè)元素,調(diào)整它們作為下一時(shí)刻的隱藏狀態(tài)的重要程度。添加輸出門的LSTM層就像下面這樣。
tanh輸出-1.0 ~ 1.0的實(shí)數(shù),數(shù)值表示被編碼的信息的強(qiáng)弱程度,sigmoid函數(shù)的輸出是0.0 ~ 1.0的實(shí)數(shù),表示數(shù)據(jù)流出的比例。
通常,門使用sigmoid函數(shù)作為激活函數(shù);包含實(shí)質(zhì)信息的數(shù)據(jù)使用tanh函數(shù)作為激活函數(shù)。
遺忘門
接下來(lái)要告訴記憶單元需要忘記什么,也就是在記憶單元ct-1上添加一個(gè)遺忘門。
遺忘門開(kāi)合程度根據(jù)輸入xt和上個(gè)狀態(tài)ht-1求出,公式如下。
添加了遺忘門的如下圖右側(cè)。
在記憶單元中添加新的信息
遺忘門從上一時(shí)刻的記憶單元中刪除了應(yīng)該忘記的東西,還需要向記憶單元添加一些應(yīng)當(dāng)記住的新信息,也就是要添加新的tanh節(jié)點(diǎn)。
tanh節(jié)點(diǎn)計(jì)算出的結(jié)果加到上一時(shí)刻的記憶單元上,從而在記憶單元中添加新的信息。
tanh節(jié)點(diǎn)作用就是把新信息添加到記憶單元中。tanh節(jié)點(diǎn)的計(jì)算公式如下,公式的結(jié)果g是向記憶單元添加的新信息。將g加到ct-1上,形成新的記憶。
輸入門
給上面的g新添加一個(gè)輸入門,輸入門用來(lái)判斷新增信息的各個(gè)元素的價(jià)值有多大。
之前直接加上新信息,沒(méi)有對(duì)要添加的信息進(jìn)行取舍。給g加上輸入門,會(huì)添加加權(quán)后的新信息。
下面的公式結(jié)果i表示輸出。sigma符號(hào)表示輸入門。i和g對(duì)應(yīng)元素的乘積將被添加到記憶單元中。
記憶單元的反向傳播
通過(guò)觀察記憶單元c的反向傳播,可以知道為什么LSTM結(jié)構(gòu)不會(huì)引起梯度消失。
僅關(guān)注記憶單元,它的反向傳播流過(guò)+和×節(jié)點(diǎn)。
+節(jié)點(diǎn)將上游傳來(lái)的梯度原樣流出,所以梯度沒(méi)有變化。
×節(jié)點(diǎn)是對(duì)應(yīng)元素的乘積(阿達(dá)瑪積),這里反向傳播,進(jìn)行的是對(duì)應(yīng)元素的乘積計(jì)算,而不是矩陣乘積運(yùn)算,所以不會(huì)像RNN一樣,由于重復(fù)進(jìn)行多次矩陣乘積運(yùn)算,導(dǎo)致梯度消失或梯度爆炸。
×節(jié)點(diǎn)的計(jì)算由遺忘門控制,遺忘門認(rèn)為應(yīng)該忘記的記憶單元的元素,梯度會(huì)變小,遺忘門認(rèn)為不該忘記的記憶單元的元素,梯度向過(guò)去流動(dòng)時(shí)不會(huì)變小。所以,應(yīng)該長(zhǎng)期記住的信息能在不發(fā)生梯度消失的情況下傳播。因此,記憶單元能夠保存(學(xué)習(xí))長(zhǎng)期的依賴關(guān)系。
總結(jié)
- 上一篇: 实现CBOW模型类
- 下一篇: 二元相图软件_Materials Stu