LSTM學(xué)習(xí)筆記

本文公式顯示效果不太好,可移步至LSTM學(xué)習(xí)筆記

Long Short-Term Memory(LSTM) 是一種循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)盹沈。跟所有RNN一樣龄章,在網(wǎng)絡(luò)單元足夠多的條件下,LSTM可以計(jì)算傳統(tǒng)計(jì)算機(jī)所能計(jì)算的任何東西乞封。

Like most RNNs, an LSTM network is universal in the sense that given enough network units it can compute anything a conventional computer can compute. 維基百科

RNN

傳統(tǒng)前饋神經(jīng)網(wǎng)絡(luò)(feedforward neural networks)如下圖所示:

前饋神經(jīng)網(wǎng)絡(luò)只從輸入節(jié)點(diǎn)接受信息做裙,它只能對(duì)輸入空間進(jìn)行操作,對(duì)不同時(shí)間序列的輸入沒有“記憶”肃晚。在前饋神經(jīng)網(wǎng)絡(luò)中锚贱,信息只能從輸入層流向隱藏層,再流向輸出層关串。這種網(wǎng)絡(luò)無法解決帶有時(shí)序性的問題拧廊,比如預(yù)測(cè)句子中的下一個(gè)單詞,這種情況下晋修,往往需要使用到前面已知的單詞吧碾。假設(shè)要預(yù)測(cè)這樣一句話:百度是一家____公司。顯然墓卦,受到前面的詞語“百度”的影響倦春,橫線中填入“互聯(lián)網(wǎng)”的概率遠(yuǎn)大于“金融”,即使單從語法上考慮趴拧,填入“金融”也是正確的溅漾。

RNN與前饋神經(jīng)網(wǎng)絡(luò)最大的不同是,它不僅能對(duì)輸入空間進(jìn)行操作著榴,還能對(duì)內(nèi)部狀態(tài)空間進(jìn)行操作,它的結(jié)構(gòu)如下:


可以看到屁倔,RNN的隱藏層多了一條連向自己的邊脑又。因此,它的輸入不僅包括輸入層的數(shù)據(jù),還包括了來自上一時(shí)刻的隱藏層的輸出问麸。

RNN可以采用BPTT(Back-Propagation Through Time)算法進(jìn)行學(xué)習(xí)往衷。BPTT和BP算法類似,都是基于梯度的訓(xùn)練方法严卖。首先席舍,將RNN按時(shí)間序列展開,如下圖:


圖中表示的是時(shí)間步長(zhǎng)數(shù)為3的RNN的展開哮笆。一般的来颤,時(shí)間步長(zhǎng)為T的RNN展開后將含有T個(gè)隱藏層,T可以是任意的稠肘。當(dāng)T為1時(shí)福铅,RNN退化為一個(gè)普通的前饋神經(jīng)網(wǎng)絡(luò)。將RNN展開之后项阴,就可以使用與訓(xùn)練帶BP的前饋神經(jīng)網(wǎng)絡(luò)類似的方法進(jìn)行訓(xùn)練滑黔。有一點(diǎn)需要注意的是,在展開的RNN中环揽,每一層隱藏層實(shí)際上是相同的(只是在不同時(shí)刻的副本)略荡,也就是說,它們最后得到的參數(shù)必須是一致的歉胶。在訓(xùn)練過程中撞芍,不同時(shí)刻的隱藏層的參數(shù)可能會(huì)不一致,最后可以將它們的平均數(shù)作為模型的參數(shù)跨扮。

關(guān)于RNN的內(nèi)容序无,具體的可以參考“A guide to recurrent neural networks and backpropagation”。

LSTM

梯度消失與避免

在實(shí)際應(yīng)用中衡创,上述RNN模型存在著梯度消失和梯度爆炸的問題帝嗡。根據(jù)鏈?zhǔn)椒▌t,輸出誤差對(duì)于輸入層的偏導(dǎo)等于各層偏導(dǎo)的乘積(關(guān)于前饋神經(jīng)網(wǎng)絡(luò)的誤差傳播參考“一文弄懂神經(jīng)網(wǎng)絡(luò)中的反向傳播法——BackPropagation”)璃氢。
假設(shè)使用的是平均平方誤差哟玷,則在時(shí)刻t,輸出層k的誤差信號(hào)表示為(以下推導(dǎo)來自“Long Short-Term Memory”一也,本文采用與論文一致的表示方法):

其中,


是表示非輸入單元巢寡,fi是可微函數(shù),


表示當(dāng)前網(wǎng)絡(luò)單元的輸入椰苟,wij是單元j和i的之間權(quán)重抑月。非輸出單元j的反向誤差信號(hào)為:

對(duì)于時(shí)間步長(zhǎng)為q的RNN網(wǎng)絡(luò),在t-q時(shí)刻的的誤差可以通過以下遞歸函數(shù)來求解:


令lq = v舆蝴,l0 = u谦絮,上式可以進(jìn)一步寫成:

由于梯度最終以乘積的形式得出题诵,若乘式中的每一項(xiàng)(或大部分)都大于1,


則將導(dǎo)致梯度爆炸层皱;若每一項(xiàng)都小于1性锭,


則隨著乘法次數(shù)的增加,梯度會(huì)消失叫胖。
梯度消失和梯度爆炸都會(huì)嚴(yán)重影響學(xué)習(xí)的過程草冈。

為了避免梯度消失和梯度爆炸,一個(gè)簡(jiǎn)單的做法是強(qiáng)制讓流過每個(gè)神經(jīng)元的誤差都為1瓮增,即

簡(jiǎn)單推導(dǎo)可以知道怎棱,f是一個(gè)線性函數(shù)。這樣就保證了誤差將以參數(shù)的形式在網(wǎng)絡(luò)中流動(dòng)钉赁,不會(huì)出現(xiàn)梯度爆炸或者梯度消失的問題蹄殃,把這樣的結(jié)構(gòu)稱為CEC(constant error carousel)。但是這種做法存在著權(quán)重沖突的問題你踩。

權(quán)重沖突問題與解決

前面說到诅岩,RNN的隱藏層同時(shí)接受外界信息和上一時(shí)刻隱藏層的輸出作為輸入,回到前面將RNN展開成深層網(wǎng)絡(luò)的情況带膜。隱藏層在每一個(gè)時(shí)刻t的輸出都通過權(quán)重向量U影響著下一個(gè)時(shí)刻t+1的隱藏層吩谦。而實(shí)際上,對(duì)于不同的時(shí)刻t, t+1, ..., t+k膝藕,圖中隱藏層的權(quán)重向量V和U是相同的式廷。雖然在展開圖中它們看起來像是不同層次的節(jié)點(diǎn),但實(shí)際上芭挽,它們都是同一個(gè)實(shí)體滑废。

這就產(chǎn)生一個(gè)問題,在某一個(gè)時(shí)刻t袜爪,隱藏層可能需要使得權(quán)重向量U整體有一個(gè)較大的值蠕趁,即t-1時(shí)刻隱藏層的輸出對(duì)t時(shí)刻很重要;而在時(shí)刻t+k辛馆,隱藏層可能需要使權(quán)重U有一個(gè)較小的值俺陋,也就是說此時(shí)隱藏層不想受到t+k-1時(shí)刻的計(jì)算結(jié)果的影響£几荩考慮現(xiàn)實(shí)的例子腊状,假如要預(yù)測(cè)以下句子中動(dòng)詞的形式,括號(hào)中為需要預(yù)測(cè)的詞:I may (go) home and (get) my book, but that (depends)苔可。句子中g(shù)o和get的形式受到may的影響缴挖,而depends的形態(tài)由that決定,而與may無關(guān)硕蛹。因此預(yù)測(cè)過程中醇疼,當(dāng)讀入and時(shí)硕并,may的影響還在法焰,因此應(yīng)該增大權(quán)重U的值秧荆,而在讀入that的時(shí)候,應(yīng)該同時(shí)減小來自上一時(shí)刻的隱藏層輸出的影響埃仪,即減小權(quán)重U的乙濒,這就與前面產(chǎn)生了沖突。

為了解決這種沖突卵蛉,Sepp Hochreiter和Jürgen Schmidhuber早在1997年就在論文“Long Short-Term Memory”提出了LSTM颁股,下面的部分圖以及公式來自該論文。為了使隱藏層的輸出對(duì)下一個(gè)時(shí)刻的影響變得可控傻丝,LSTM引入了輸入門甘有,輸出門的概念。LSTM的基本單元稱為記憶元件(memory cell)葡缰,它是在CEC的基礎(chǔ)上擴(kuò)展而成的亏掀,如下圖:

圖中,3表示輸入門(input gate)泛释;6表示輸出門(output gate)滤愕;4是CEC單元,可以看到它有一條到自己的權(quán)值為1的邊怜校。之后间影,又有人將LSTM進(jìn)一步擴(kuò)展,引入了遺忘門茄茁,如下圖(圖片內(nèi)容出自“Understanding LSTM Networks”):

為了方便表示魂贬,把上一個(gè)圖稱為lstm-1,這個(gè)圖稱為lstm-2裙顽。lstm-2中與lstm-1編號(hào)相同的單元分別一一對(duì)應(yīng)付燥,可以看到,lstm-2比lstm-1多了單元8锦庸,它就是所謂的遺忘門机蔗。lstm-2中元素的含義如下:

表示一個(gè)門,它由一個(gè)網(wǎng)絡(luò)層和一個(gè)乘法單元構(gòu)成甘萧。

在上面的圖例中萝嘁,每一條黑線表示信息(向量)的傳遞,從一個(gè)節(jié)點(diǎn)的輸出到其他節(jié)點(diǎn)的輸入扬卷。粉色的圈代表 pointwise 的操作牙言,諸如向量的和,而黃色的矩形表示學(xué)習(xí)到的神經(jīng)網(wǎng)絡(luò)層怪得。合在一起的線表示向量的連接咱枉,分開的線表示內(nèi)容被復(fù)制卑硫,然后分發(fā)到不同的位置。

LSTM的信息傳播

輸入信息前向傳播

(以下圖片內(nèi)容出自“Understanding LSTM Networks”)
首先蚕断,記憶元件(memory cell)接受上一個(gè)時(shí)刻的輸出(ht-1)以及這個(gè)時(shí)刻的外界信息(xt)作為輸入欢伏,將它們合并成一個(gè)長(zhǎng)向量,經(jīng)過??變換成為ft亿乳。

接著硝拧,前面說到的兩個(gè)輸入合并成的向量又分別進(jìn)行了??變換和tanh變換,成為it和?t進(jìn)入輸入門葛假。其中it的值用于決定是否要接受輸入信息(即?t)障陶。

之后,根據(jù)ft的值決定是否保留上一時(shí)刻隱藏層CEC的輸出(Ct-1)聊训,再將經(jīng)過it縮放之后的輸入?t累加到CEC(Ct-1)中抱究,成為Ct

最后在輸出門中带斑,由Ot決定是否將經(jīng)過tanh變換的Ct輸出鼓寺,作為下一時(shí)刻輸入的一部分。

Sepp Hochreiter和Jürgen Schmidhuber的論文中還提到一種稱為記憶元件塊(memory cell block)的部件遏暴。由S個(gè)共享相同的輸入門侄刽、輸出門(論文中的LSTM并沒有記憶門)的記憶元件所構(gòu)成的結(jié)構(gòu)稱為“大小為S的記憶元件塊”。當(dāng)S = 1時(shí)朋凉,該結(jié)構(gòu)就是普通的記憶元件州丹。

誤差的反向傳播

首先,規(guī)定下標(biāo)的表示如下:

  • k:輸出單元
  • i:隱藏單元
  • Cj:第j個(gè)記憶元件塊
  • Cjv:第j個(gè)記憶元件塊Cj中的第v個(gè)單元
  • l, m, u:任意的網(wǎng)絡(luò)單元
  • t:給定輸入序列所有的時(shí)間步長(zhǎng)

在t時(shí)刻杂彭,LSTM的平方誤差計(jì)算如下:


其中墓毒,tk(t)是輸出單元k在t時(shí)刻的輸出目標(biāo)。
在學(xué)習(xí)率為??的條件下亲怠,wlm基于梯度的更新如下:

將單元l在t時(shí)刻的誤差(error)定義為:


使用標(biāo)準(zhǔn)的方向誤差傳播算法(backdrop)就可以計(jì)算出輸出單元(output unit所计,l = k)、隱藏單元(hidden unit团秽,l = i)主胧、輸出門單元(output gate unit,l = outj)的權(quán)重更新:

對(duì)于所有可能的單元l习勤,時(shí)刻t對(duì)權(quán)重wlm所貢獻(xiàn)的更新為:

eoutj(t)的計(jì)算式子中踪栋,括號(hào)內(nèi)的h函數(shù)一開始把我卡住了,但是看回記憶元件的結(jié)構(gòu)圖:

可以發(fā)現(xiàn)輸出門的計(jì)算公式為:gateout = h*youtj图毕,其中youtj是netoutj的函數(shù)夷都,h與netoutj無關(guān),根據(jù)求導(dǎo)法則予颤,h被保留了下來囤官,gateout' = h*(youtj)'冬阳,于是得到上式。

剩下的對(duì)輸入門單元(l = inj)和記憶元件單元<l = Cjv的更新與常規(guī)的單元會(huì)有些差別党饮。定義內(nèi)部狀態(tài)SCjv的誤差為:

雖然上式乍看之下形式有些復(fù)雜肝陪,但仔細(xì)分析可以發(fā)現(xiàn),這與求輸出門的梯度的情況是類似的劫谅,由于youtj是與SCj無關(guān)的項(xiàng)见坑,所以在求導(dǎo)過程中被保留了下來嚷掠。

由以上推導(dǎo)可以得到捏检,當(dāng)l = inj或者l = Cjv,v = 1, ..., Sj時(shí)的誤差:

中間狀態(tài)單元SCjv對(duì)于輸入netinj單元的權(quán)重winj的偏導(dǎo)可以計(jì)算如下:

因此不皆,時(shí)刻t對(duì)winjm更新的貢獻(xiàn)為:

類似地贯城,可以得到SCjv對(duì)于netCjv的權(quán)重wCjv的偏導(dǎo)為:

因此,時(shí)刻t對(duì)wCjv更新的貢獻(xiàn)為:

以上就是反向傳播算法所需要使用到的等式霹娄。在更新權(quán)重的過程中能犯,每個(gè)權(quán)重總的更新值是所有時(shí)刻t對(duì)w權(quán)重更新的貢獻(xiàn)之和。

LSTM參數(shù)更新的計(jì)算復(fù)雜度

LSTM每次更新的計(jì)算復(fù)雜度為:


其中犬耻,K表示輸出單元的數(shù)量踩晶,C表示記憶元件塊的數(shù)量,S>0表示記憶元件塊的大小枕磁,H是隱藏單元的數(shù)量渡蜻,I是與記憶元件、門單元和隱藏單元直接相連(forward-connected)的單元的數(shù)量计济,而

是權(quán)重的數(shù)量茸苇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市沦寂,隨后出現(xiàn)的幾起案子学密,更是在濱河造成了極大的恐慌,老刑警劉巖传藏,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腻暮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡毯侦,警方通過查閱死者的電腦和手機(jī)哭靖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叫惊,“玉大人款青,你說我怎么就攤上這事』粽” “怎么了抡草?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵饰及,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我康震,道長(zhǎng)燎含,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任腿短,我火速辦了婚禮屏箍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘橘忱。我一直安慰自己赴魁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布钝诚。 她就那樣靜靜地躺著颖御,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凝颇。 梳的紋絲不亂的頭發(fā)上潘拱,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音拧略,去河邊找鬼芦岂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛垫蛆,可吹牛的內(nèi)容都是我干的禽最。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼月褥,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼弛随!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宁赤,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤舀透,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后决左,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體愕够,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年佛猛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惑芭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡继找,死狀恐怖遂跟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤幻锁,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布凯亮,位于F島的核電站,受9級(jí)特大地震影響哄尔,放射性物質(zhì)發(fā)生泄漏假消。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一岭接、第九天 我趴在偏房一處隱蔽的房頂上張望富拗。 院中可真熱鬧,春花似錦鸣戴、人聲如沸啃沪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谅阿。三九已至,卻和暖如春酬滤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寓涨。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工盯串, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人戒良。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓体捏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親糯崎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子几缭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容