RNN和LSTM深度理解

本文為《Understanding LSTM Networks》翻譯

循環(huán)神經(jīng)網(wǎng)絡(luò)

人類不會(huì)一直從頭開始思考。當(dāng)你看這篇文章的時(shí)候,你實(shí)際上是根據(jù)上一個(gè)詞來理解這一個(gè)詞的。你不會(huì)每時(shí)每刻從頭開始理解一句話,因?yàn)槟愕乃伎季哂谐志眯浴?/p>

傳統(tǒng)神經(jīng)網(wǎng)絡(luò)做不了這些東西。但是循環(huán)神經(jīng)網(wǎng)絡(luò)可以做到,它可以使信息持久化。

循環(huán)神經(jīng)網(wǎng)絡(luò)有個(gè)循環(huán)


這是RNN的一個(gè)塊,A。輸入xt輸出ht。

RNN可以被想象成一個(gè)網(wǎng)絡(luò)的多個(gè)復(fù)制,每一個(gè)網(wǎng)絡(luò)都可以把信息傳遞給下個(gè)繼承者。當(dāng)我們把上圖展開的話,會(huì)發(fā)生什么?

展開的RNN

通過這個(gè)鏈?zhǔn)降慕Y(jié)構(gòu)可以看到,RNN對(duì)于那種一系列的或者是列表的數(shù)據(jù)聯(lián)系緊密。

RNN中最成功的當(dāng)屬LSTMs,一種特殊的RNN結(jié)構(gòu),它在很多方面的作用遠(yuǎn)遠(yuǎn)大于RNN,絕大部分的RNN成果都是基于LSTM的。

長(zhǎng)期依賴的問題


RNN其中的一個(gè)亮點(diǎn)就是它可以將當(dāng)前的任務(wù)和之前的依據(jù)信息連接起來,就像看電影時(shí),將現(xiàn)在的場(chǎng)景和之前的情節(jié)連接起來了一樣。如果RNN可以做這種事情的話,它會(huì)非常實(shí)用。但是RNN可以嗎?這視情況而定。

有時(shí)候,我們僅僅需要獲取最近的一些信息來完成我們當(dāng)前的任務(wù)。例如,根據(jù)上一個(gè)詞來預(yù)測(cè)下一個(gè)詞是什么。比如我說了一句“茍”,我們不需要知道什么更深層次的信息,就可以猜想出來接下來的話。“茍”被稱為預(yù)測(cè)所需要的依賴(Dependencies)。在這種情況下,處理的相關(guān)信息間隔就比較短,所需空間也比較少,RNNs可以學(xué)會(huì)使用之前的信息。


RNNs使用之前的信息

但是有時(shí)候我們需要更多的信息。你試著預(yù)測(cè)一下女朋友說“你決定吧”的下一句會(huì)是什么。這就比較難了,你需要根據(jù)之前的對(duì)話來猜想,女朋友到底是生氣了,故意說“你決定吧”還是僅僅因?yàn)槟銈兂鋈コ燥?,女朋友讓你決定吃什么。在這種情況下,預(yù)測(cè)出女朋友下一句話所依賴的信息(也就是你和你女朋友之前的對(duì)話)可能間隔非常非常大,甚至可能是因?yàn)橐粋€(gè)月前你們決定吃什么時(shí)鬧的矛盾。

在這種情況下,隨著間隔的增大,RNN需要存儲(chǔ)的信息也越來越多,能力也隨之捉襟見肘。


所依據(jù)信息和當(dāng)前任務(wù)間隔非常大時(shí)出現(xiàn)的情況

理論上,RNNs可以存下來你和你女朋友發(fā)生的所有的事情,然后來分析女朋友說的“你決定吧”下一句可能是什么。但我們也知道這不太可能。

但LSTM可以解決這個(gè)問題。

LSTM網(wǎng)絡(luò)

LSTMs全稱為長(zhǎng)短時(shí)記憶網(wǎng)絡(luò),是RNN的一種類型,可以解決長(zhǎng)期依賴的問題。它解決了很多問題,直到現(xiàn)在也在被廣泛使用。

LSTM就是被設(shè)計(jì)用來解決長(zhǎng)期依賴問題的。記住很久前的信息對(duì)它來說只是基本操作,根本不需要用力。

所有的循環(huán)神經(jīng)網(wǎng)絡(luò)都有一個(gè)重復(fù)的神經(jīng)網(wǎng)絡(luò)的鏈?zhǔn)侥P?。在?biāo)準(zhǔn)的RNNs中,這個(gè)重復(fù)的神經(jīng)網(wǎng)絡(luò)模型有著非常簡(jiǎn)單的結(jié)構(gòu),例如只有單個(gè)tanh層。


標(biāo)準(zhǔn)RNNs中不斷重復(fù)的神經(jīng)網(wǎng)絡(luò)模型只有單個(gè)tanh層

LSTM也有相似的鏈?zhǔn)浇Y(jié)構(gòu),但是單個(gè)神經(jīng)元模型有著不同的結(jié)構(gòu)。它不是單個(gè)tanh層,它有4個(gè)交互的層。


LSTM單個(gè)神經(jīng)元有 4個(gè)交互的層

別害怕,雖然它現(xiàn)在看起來復(fù)雜,但是我們會(huì)一步一步給你講解這張圖代表的是什么意思。首先我們先解釋一下標(biāo)記的含義。


依次是神經(jīng)網(wǎng)絡(luò)層、點(diǎn)態(tài)操作、向量轉(zhuǎn)換、合并、復(fù)制

黃塊就是神經(jīng)網(wǎng)絡(luò)層,粉球球就是點(diǎn)態(tài),點(diǎn)態(tài)的大概意思就是向量相加之后生成的那個(gè)向量,別的符號(hào)都很簡(jiǎn)單就不說了。

LSTMs的核心思想

LSTMs的關(guān)鍵就是cell state(這個(gè)不知道怎么翻譯,細(xì)胞狀態(tài)?),下面這張圖的水平線展示了什么叫做cell state。

cell state像個(gè)傳送帶,它穿過整個(gè)鏈,只有很少的線性交互。


LSTM可以輕松地添加或者移走信息,從cell state上,這個(gè)操作是由gates結(jié)構(gòu)仔細(xì)地控制著的。

gates是控制信息通過的方式,是由sigmoid神經(jīng)網(wǎng)絡(luò)層和一個(gè)點(diǎn)態(tài)乘法操作組成的。

sigmoid層輸出0到1之間的一個(gè)數(shù)字,這個(gè)數(shù)字代表著每個(gè)部分可以通過多少。0代表著沒人能通過,1代表著全都通過。

一個(gè)LSTM有3個(gè)這樣的gates,來保護(hù)和控制cell state。

LSTM詳細(xì)工作原理

LSTM的第一步就是決定什么信息能從cell state里通過。這個(gè)是由一個(gè)被稱作“遺忘門”的sigmoid層決定的。它像底下圖里Ct-1的那個(gè)ht?1和xt,輸出一個(gè)0到1之間的數(shù)字。1代表著完全保留這個(gè),0代表著完全扔掉這個(gè)。

再回到我們預(yù)測(cè)下一句的語言模型來。針對(duì)這種問題,cell state也許包含了上個(gè)月你女朋友和你約會(huì)的細(xì)節(jié),所以正確答案也許能被選出來。然后你和你女朋友分手,交了下一個(gè)女朋友,它也許會(huì)忘記曾經(jīng)你們的那次約會(huì)。


下一步就是決定我們應(yīng)該把什么信息存儲(chǔ)在cell state里面。這分成了兩部分。第一步,有一個(gè)被稱作“輸入門”的sigmoid層決定了哪些值我們應(yīng)當(dāng)更新。接下來,一個(gè)tanh層創(chuàng)建了一個(gè)候選值C~t,這個(gè)候選值可能被添加到state里。第二部,我們會(huì)合并這兩個(gè)值來更新state。

在語言模型的那個(gè)例子里,就是我們想要添加新女朋友的信息到cell state里,來替換你想要忘記的前女友。


現(xiàn)在是時(shí)候更新舊的cell state了,Ct-1,把它換成新的cell state Ct!上面講的那些已經(jīng)說了如何去做,現(xiàn)在我們來實(shí)際完成它。

我們將舊狀態(tài)Ct-1乘上ft,忘記那些我們?cè)鐟?yīng)該忘記的東西。緊接著,加上it乘以Ct。這是個(gè)新的候選值,它的值取決于我們對(duì)state值想要更新多少。

在語言模型的那個(gè)例子里,這里就是我們要忘記前女友,添加新女友的地方,正如我們前一步?jīng)Q定的那樣。


最后,我們需要決定我們要輸出什么。這個(gè)輸出取決于現(xiàn)在的cell state,但是將會(huì)是被過濾后的版本。首先,我們運(yùn)行一個(gè)sigmoid層,這個(gè)層決定了cell state的哪個(gè)部分我們要輸出出去。然后,我們讓cell state通過tanh(用來將輸出值保證在-1到1之間),再之后,將這兩個(gè)數(shù)字相乘。這樣的話,我們只輸出了我們想要輸出的那一部分。

在語言模型的那個(gè)例子里,這就像新女友也說了一句“你決定吧”之后,你可以根據(jù)前女友的經(jīng)驗(yàn)和現(xiàn)在的經(jīng)歷共同決定到底要說什么,也就是輸出什么。

這就是全部的LSTMs。

LSTM的變種

之前介紹的都是最初的LSTM。但是不是所有的LSTM跟上面介紹的那些一樣。事實(shí)上,目前幾乎所有論文所談?wù)摰降腖STM都跟最初的LSTM有些不一樣。我們來講講那些不同。

其中一個(gè)流行的LSTM變種,加入了“貓眼連接”。這意味著我們讓gete層盯著cell state。

上面的這個(gè)圖就是在所有的gates上面加了個(gè)貓眼。但是許多論文都是一些加一些不加。

另一個(gè)變種使用了相互連接的遺忘和輸入層。之前的LSTM是分開決定什么應(yīng)該被遺忘,什么應(yīng)當(dāng)被輸入,而這個(gè)變種讓他們一起被決定。我們只在替換的情況下,才會(huì)遺忘。我們也只是在忘掉什么的時(shí)候才向state輸入新值。


一個(gè)最牛逼的LSTM變種就是門循環(huán)單元(Gated Recurrent Unit)被稱作GRU。它將遺忘門和輸入門結(jié)合而成了一個(gè)更新門。它還合并了cell state和hidden state,和另外一些小改變。最終的模型比LSTM更簡(jiǎn)單,也更流行。


這只是其中一些的介紹,還有一些其他的,比如Depth Gated RNNs等。還有一些完全不同的實(shí)現(xiàn),像Clockword RNNs。

哪個(gè)變種是最好的?這些改進(jìn)真的更好嗎?有人做了變種的對(duì)比,發(fā)現(xiàn)都差不多。還有人測(cè)試了上萬個(gè)RNN結(jié)構(gòu),發(fā)現(xiàn)的確有些結(jié)構(gòu)在特定的任務(wù)上稍強(qiáng)一點(diǎn)。和

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN) 人們的每次思考并不都是從零開始的。比如說你在閱讀這篇文章時(shí),你基于對(duì)前面的文字的理解來理解...
    云時(shí)之間閱讀 4,274評(píng)論 0 21
  • 注意:本文為學(xué)習(xí)筆記,大量直接復(fù)制于參考文章中的原文字及圖片,本篇文章大部分為翻譯于Understanding L...
    我叫膽小我喜歡小心閱讀 1,538評(píng)論 0 3
  • 新軌跡
    平心看世界閱讀 186評(píng)論 0 0
  • 層層疊疊的棉云密布于蒼茫的天際。 藏青色的云,方陣似的涌來,其威風(fēng)凜然猶似天兵天將于此操練,欲...
    俞歡歡閱讀 544評(píng)論 3 5
  • “ 我不是說得好聽,我只是站在正義和道德的一方。我做人的方式一直都是行善積德,因?yàn)槲抑涝谶@個(gè)世界上不止只有我一...
    方正5樓閱讀 319評(píng)論 1 1

友情鏈接更多精彩內(nèi)容