譯自原文:Understanding LSTM Networks
循環(huán)神經(jīng)網(wǎng)絡(luò)
人類(lèi)針對(duì)每個(gè)問(wèn)題的思考,一般不會(huì)是完全的從頭開(kāi)始思考豌汇。正如當(dāng)你閱讀這篇譯文的時(shí)候幢炸,你會(huì)根據(jù)已經(jīng)閱讀過(guò)的內(nèi)容來(lái)對(duì)后面的內(nèi)容進(jìn)行理解,你不會(huì)把之前的東西都丟掉從頭進(jìn)行思考拒贱,你對(duì)內(nèi)容的理解是貫穿的宛徊。
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)做不到這一點(diǎn),而這似乎是一個(gè)主要的缺點(diǎn)柜思。 例如岩调,假設(shè)您想對(duì)電影中的每個(gè)事件進(jìn)行分類(lèi)。我們無(wú)法想象傳統(tǒng)神經(jīng)網(wǎng)絡(luò)如何能夠利用前面的場(chǎng)景去干預(yù)后面的預(yù)測(cè)赡盘。
幸好循環(huán)神經(jīng)網(wǎng)絡(luò)解決了這個(gè)問(wèn)題号枕, 它們是具有循環(huán)的網(wǎng)絡(luò),允許信息持續(xù)存在陨享,示意圖如下葱淳。
在上圖中,一組神經(jīng)網(wǎng)絡(luò) A接收某些輸入xt抛姑,并輸出一個(gè)值ht赞厕。 循環(huán)允許信息從網(wǎng)絡(luò)的一個(gè)步驟傳遞到下一個(gè)。
這些循環(huán)使得循環(huán)神經(jīng)網(wǎng)絡(luò)看起來(lái)很神秘定硝。 然而皿桑,如果你再多考慮一下,你就會(huì)發(fā)現(xiàn)其實(shí)它和傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)并不是完全不同。 一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)可以被認(rèn)為是同一個(gè)網(wǎng)絡(luò)的多個(gè)副本诲侮,每一個(gè)都傳遞一個(gè)消息給后繼者镀虐。 我們考慮一下如果將循環(huán)展開(kāi)會(huì)發(fā)生什么:(示意如下)
這種鏈狀特征揭示了循環(huán)神經(jīng)網(wǎng)絡(luò)與序列和列表密切相關(guān)。 它們是用于此類(lèi)數(shù)據(jù)的自然神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)沟绪。
他們肯定是有用的刮便! 在過(guò)去的幾年里,RNN應(yīng)在語(yǔ)音識(shí)別绽慈、語(yǔ)言建模恨旱、翻譯,圖像字幕等各種問(wèn)題上取得了巨大成功坝疼。在Andrej Karpathy的這篇博文——RNN的難以理解的有效性(The Unreasonable Effectiveness of Recurrent Neural Networks)中討論了RNN取得的驚人成果搜贤,他們真的很神奇
這些成功的案例的共同點(diǎn)就是都是用了LSTM,這是一種非常特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)裙士,對(duì)于許多任務(wù)來(lái)說(shuō)入客,它們比基準(zhǔn)版本好的多。 幾乎所有令人興奮的結(jié)果都是基于循環(huán)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的腿椎,這篇文章將探討這些LSTM,帶你解開(kāi)LSTM的神秘面紗夭咬。
長(zhǎng)依賴(lài)存在的問(wèn)題
RNN顯著的魅力是將以前的信息連接到當(dāng)前任務(wù)的這種思路啃炸,例如使用先前的視頻幀可以有助于對(duì)當(dāng)前幀的理解。 如果RNN可以做到這一點(diǎn)卓舵,這將非常有用南用。 但他可以嗎?這要看情況掏湾。
有時(shí)裹虫,為了處理當(dāng)前的任務(wù),我們只需要查看最近的信息融击。 例如筑公,考慮一種語(yǔ)言模型,該模型根據(jù)前面的詞語(yǔ)來(lái)預(yù)測(cè)下一個(gè)單詞尊浪。 如果我們?cè)噲D預(yù)測(cè)““the clouds are in the sky”的最后一個(gè)單詞匣屡,我們不需要任何其他的語(yǔ)境信息——下一個(gè)單詞顯然是sky。 在相關(guān)信息和需要該信息的距離較近的時(shí)候拇涤,RNN能夠?qū)W會(huì)去利用歷史信息捣作。
但也有需要更多上下文的情況。 考慮嘗試預(yù)測(cè)文本中的最后一個(gè)單詞“I grew up in France… I speak fluent French.”鹅士。最近的信息表明券躁,下一個(gè)單詞可能是一種語(yǔ)言的名稱(chēng),但如果我們想縮范圍確定那種語(yǔ)言,我們需要從前面獲取法國(guó)的背景也拜。 相關(guān)信息和需要該信息的地方的距離變得非常大的情況是很可能的旭贬。
不幸的是,隨著距離的增加搪泳,RNN無(wú)法有效的利用歷史信息稀轨。
在理論上,RNN絕對(duì)有能力處理這樣的“長(zhǎng)依賴(lài)”問(wèn)題岸军。人們可以仔細(xì)挑選參數(shù)來(lái)解決這種形式的問(wèn)題奋刽。 可悲的是,在實(shí)踐中艰赞,RNN似乎無(wú)法學(xué)習(xí)到這些特征佣谐。Hochreiter和Bengio,曾經(jīng)深入的研究過(guò)這個(gè)問(wèn)題方妖,他們發(fā)現(xiàn)一些根本性的原因狭魂,能夠解釋RNN為什么不work。
謝天謝地党觅,LSTM沒(méi)有這個(gè)問(wèn)題雌澄!
LSTM Networks
長(zhǎng)短記憶神經(jīng)網(wǎng)絡(luò)——通常稱(chēng)作LSTM,是一種特殊的RNN杯瞻,能夠?qū)W習(xí)長(zhǎng)的依賴(lài)關(guān)系镐牺。 他們由Hochreiter&Schmidhuber引入,并被許多人進(jìn)行了改進(jìn)和普及魁莉。他們?cè)诟鞣N各樣的問(wèn)題上工作的非常好睬涧,現(xiàn)在被廣泛使用。
LSTM是為了避免長(zhǎng)依賴(lài)問(wèn)題而精心設(shè)計(jì)的旗唁。 記住較長(zhǎng)的歷史信息實(shí)際上是他們的默認(rèn)行為畦浓,而不是他們努力學(xué)習(xí)的東西。
所有循環(huán)神經(jīng)網(wǎng)絡(luò)都具有神經(jīng)網(wǎng)絡(luò)的重復(fù)模塊鏈的形式检疫。 在標(biāo)準(zhǔn)的RNN中讶请,該重復(fù)模塊將具有非常簡(jiǎn)單的結(jié)構(gòu),例如單個(gè)tanh層电谣。
LSTM也擁有這種鏈狀結(jié)構(gòu)秽梅,但是重復(fù)模塊則擁有不同的結(jié)構(gòu)。與神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)單的一層相比剿牺,LSTM擁有四層企垦,這四層以特殊的方式進(jìn)行交互。
不要過(guò)早擔(dān)心細(xì)節(jié)問(wèn)題晒来, 稍后我們將一步一步地剖析LSTM钞诡。 現(xiàn)在,讓我們先熟悉一下我們將要使用的符號(hào)。
在上圖中荧降,每一行都帶有一個(gè)向量接箫,該向量從一個(gè)節(jié)點(diǎn)輸出到其他節(jié)點(diǎn)的輸入。 粉紅色圓圈表示點(diǎn)向運(yùn)算朵诫,如向量加法辛友、點(diǎn)乘,而黃色框是學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)層剪返。 線的合并表示連接废累,而線的交叉表示其內(nèi)容正在復(fù)制,副本將轉(zhuǎn)到不同的位置脱盲。
LSTM背后的核心理念
LSTM的關(guān)鍵是細(xì)胞狀態(tài)邑滨,表示細(xì)胞狀態(tài)的這條線水平的穿過(guò)圖的頂部。
細(xì)胞的狀態(tài)類(lèi)似于輸送帶钱反,細(xì)胞的狀態(tài)在整個(gè)鏈上運(yùn)行掖看,只有一些小的線性操作作用其上,信息很容易保持不變的流過(guò)整個(gè)鏈面哥。
LSTM確實(shí)具有刪除或添加信息到細(xì)胞狀態(tài)的能力哎壳,這個(gè)能力是由被稱(chēng)為門(mén)(Gate)的結(jié)構(gòu)所賦予的。
門(mén)(Gate)是一種可選地讓信息通過(guò)的方式幢竹。 它由一個(gè)Sigmoid神經(jīng)網(wǎng)絡(luò)層和一個(gè)點(diǎn)乘法運(yùn)算組成耳峦。
Sigmoid神經(jīng)網(wǎng)絡(luò)層輸出0和1之間的數(shù)字,這個(gè)數(shù)字描述每個(gè)組件有多少信息可以通過(guò)焕毫, 0表示不通過(guò)任何信息,1表示全部通過(guò)
LSTM有三個(gè)門(mén)驶乾,用于保護(hù)和控制細(xì)胞的狀態(tài)邑飒。
一步步的拆解LSTM
LSTM的第一步是決定我們要從細(xì)胞狀態(tài)中丟棄什么信息。 該決定由被稱(chēng)為“忘記門(mén)”的Sigmoid層實(shí)現(xiàn)级乐。它查看ht-1(前一個(gè)輸出)和xt(當(dāng)前輸入)疙咸,并為單元格狀態(tài)Ct-1(上一個(gè)狀態(tài))中的每個(gè)數(shù)字輸出0和1之間的數(shù)字。1代表完全保留风科,而0代表徹底刪除撒轮。
讓我們回到語(yǔ)言模型的例子,試圖根據(jù)以前的語(yǔ)料來(lái)預(yù)測(cè)下一個(gè)單詞贼穆。 在這樣的問(wèn)題中题山,細(xì)胞狀態(tài)可能包括當(dāng)前主題的性別,從而決定使用正確的代詞故痊。 當(dāng)我們看到一個(gè)新主題時(shí)顶瞳,我們想要忘記舊主題的性別。
下一步是決定我們要在細(xì)胞狀態(tài)中存儲(chǔ)什么信息。 這部分分為兩步慨菱。 首先焰络,稱(chēng)為“輸入門(mén)層”的Sigmoid層決定了我們將更新哪些值。 接下來(lái)一個(gè)tanh層創(chuàng)建候選向量Ct,該向量將會(huì)被加到細(xì)胞的狀態(tài)中符喝。 在下一步中闪彼,我們將結(jié)合這兩個(gè)向量來(lái)創(chuàng)建更新值。
在我們的語(yǔ)言模型的例子中协饲,我們希望將新主題的性別添加到單元格狀態(tài)畏腕,以替換我們忘記的舊對(duì)象。
現(xiàn)在是時(shí)候去更新上一個(gè)狀態(tài)值Ct?1了囱稽,將其更新為Ct郊尝。簽名的步驟以及決定了應(yīng)該做什么,我們只需實(shí)際執(zhí)行即可战惊。
我們將上一個(gè)狀態(tài)值乘以ft流昏,以此表達(dá)期待忘記的部分。之后我們將得到的值加上 it?C? t吞获。這個(gè)得到的是新的候選值况凉, 按照我們決定更新每個(gè)狀態(tài)值的多少來(lái)衡量.
在語(yǔ)言模型的例子中,對(duì)應(yīng)著實(shí)際刪除關(guān)于舊主題性別的信息各拷,并添加新信息刁绒,正如在之前的步驟中描述的那樣。
最后烤黍,我們需要決定我們要輸出什么知市。 此輸出將基于我們的細(xì)胞狀態(tài),但將是一個(gè)過(guò)濾版本速蕊。 首先嫂丙,我們運(yùn)行一個(gè)sigmoid層,它決定了我們要輸出的細(xì)胞狀態(tài)的哪些部分规哲。 然后跟啤,我們將單元格狀態(tài)通過(guò)tanh(將值規(guī)范化到-1和1之間),并將其乘以Sigmoid門(mén)的輸出唉锌,至此我們只輸出了我們決定的那些部分隅肥。
對(duì)于語(yǔ)言模型的例子,由于只看到一個(gè)主題袄简,考慮到后面可能出現(xiàn)的詞腥放,它可能需要輸出與動(dòng)詞相關(guān)的信息。 例如痘番,它可能會(huì)輸出主題是單數(shù)還是復(fù)數(shù)捉片,以便我們知道動(dòng)詞應(yīng)該如何組合在一起平痰。
LSTM的變種
到目前為止,所描述的是一個(gè)很正常的LSTM伍纫。 但并不是所有的LSTM都與上述相同宗雇。 事實(shí)上,似乎幾乎每一篇涉及LSTM的論文都使用了一個(gè)略有不同的版本莹规,差異很小赔蒲,但有一些值得一看。
一個(gè)比較流行的LSTM變種是由Gers & Schmidhuber (2000)提出的良漱,添加“peephole connections”舞虱。這意味著,我們?cè)试Sgate層去看細(xì)胞的狀態(tài)母市。
上面的圖中所有的Sigmoid層都增加了窺視矾兜,但許多論文實(shí)現(xiàn)不是針對(duì)所有都增加窺探,而是有針對(duì)性的增加患久。
另一種變化是使用耦合的忘記和輸入門(mén)椅寺,而不是單獨(dú)決定要忘記什么、添加什么蒋失,這個(gè)決定需要一起做返帕。 只有當(dāng)需要輸入某些信息的時(shí)候,我們才會(huì)忘記這個(gè)位置的歷史信息篙挽。只有當(dāng)我們忘記一些歷史信息的時(shí)候荆萤,我們才在狀態(tài)中添加新的信息。
LSTM的一個(gè)稍微更顯著的變化是由Cho介紹的門(mén)控循環(huán)單元(或GRU)铣卡。 它將忘記和輸入門(mén)組合成一個(gè)單一的“更新門(mén)”链韭。它還將單元格狀態(tài)和隱藏狀態(tài)合并,并進(jìn)行了一些其他更改煮落。 所得到的模型比標(biāo)準(zhǔn)LSTM模型更簡(jiǎn)單梧油,并且越來(lái)越受歡迎。
這些只是最顯著的LSTM變體中的幾個(gè), 還有很多其他的州邢,比如Depth Gated RNNs,還有一些完全不同的處理長(zhǎng)期依賴(lài)的方法褪子,例如Clockwork量淌。哪些變體最好、差異的重要性等嫌褪, Greff做一個(gè)很好的變體的比較呀枢,發(fā)現(xiàn)他們都差不多。 Jozefowicz測(cè)試了大量的RNN架構(gòu)笼痛,發(fā)現(xiàn)一些RNN結(jié)構(gòu)在某些任務(wù)上要比LSTM更好裙秋。
結(jié)論
此前琅拌,我提到人們通過(guò)RNN實(shí)現(xiàn)了顯著的成果。 基本上所有這些都是使用LSTM實(shí)現(xiàn)的摘刑。 對(duì)于大多數(shù)任務(wù)而言LSTM很有效进宝。
一般介紹LSTM的文章大部分會(huì)寫(xiě)一大組方程式,這使得LSTM看起來(lái)很?chē)樔恕?希望通過(guò)這篇文章的逐步講解枷恕,幫助讀者更好的理解LSTM党晋。
LSTM是我們使用RNN的一個(gè)巨大進(jìn)步。 很自然的想法:更大的進(jìn)步嗎徐块? 研究人員的共同觀點(diǎn)是——有未玻,那就是注意力模型。這個(gè)想法是讓RNN的每一步挑選信息的過(guò)程都參照上層的主題信息胡控,關(guān)于Attention模型后面我會(huì)再進(jìn)行詳盡的描述扳剿,這里不再討論。
希望通過(guò)本文讓想了解和使用LSTM的人能夠了解其工作原理昼激,能更好的使用庇绽,不被大量的數(shù)學(xué)公式和推導(dǎo)所阻礙。