RNN和LSTM深度理解

本文為《Understanding LSTM Networks》翻譯

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

人類不會一直從頭開始思考。當(dāng)你看這篇文章的時候,你實際上是根據(jù)上一個詞來理解這一個詞的。你不會每時每刻從頭開始理解一句話,因為你的思考具有持久性。

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

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


這是RNN的一個塊,A。輸入xt輸出ht。

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

展開的RNN

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

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

長期依賴的問題


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

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


RNNs使用之前的信息

但是有時候我們需要更多的信息。你試著預(yù)測一下女朋友說“你決定吧”的下一句會是什么。這就比較難了,你需要根據(jù)之前的對話來猜想,女朋友到底是生氣了,故意說“你決定吧”還是僅僅因為你們出去吃飯,女朋友讓你決定吃什么。在這種情況下,預(yù)測出女朋友下一句話所依賴的信息(也就是你和你女朋友之前的對話)可能間隔非常非常大,甚至可能是因為一個月前你們決定吃什么時鬧的矛盾。

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


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

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

但LSTM可以解決這個問題。

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

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

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

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


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

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


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

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


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

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

LSTMs的核心思想

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

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


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

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

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

一個LSTM有3個這樣的gates,來保護和控制cell state。

LSTM詳細工作原理

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

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


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

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


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

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

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


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

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

這就是全部的LSTMs。

LSTM的變種

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

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

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

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


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


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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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