成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

深度解析LSTM神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)原理

jay_tian / 797人閱讀

摘要:而從數(shù)學(xué)上看的話,更是短時(shí)記憶了,因?yàn)樘荻攘鹘?jīng)的時(shí)候,經(jīng)歷的是的連環(huán)相乘的路徑在輸入輸出門關(guān)閉前,顯然如前邊的數(shù)學(xué)證明中所述,這樣會(huì)發(fā)生梯度爆炸和

引人入勝的開(kāi)篇:

想要搞清楚LSTM中的每個(gè)公式的每個(gè)細(xì)節(jié)為什么是這樣子設(shè)計(jì)嗎?想知道simple RNN是如何一步步的走向了LSTM嗎?覺(jué)得LSTM的工作機(jī)制看不透?恭喜你打開(kāi)了正確的文章!?

前方核彈級(jí)高能預(yù)警!本文信息量非常大,文章長(zhǎng)且思維連貫性強(qiáng),建議預(yù)留20分鐘以上的時(shí)間進(jìn)行閱讀。

前置知識(shí)1:

簡(jiǎn)單的循環(huán)神經(jīng)網(wǎng)絡(luò),即無(wú)隱藏層的循環(huán)神經(jīng)網(wǎng)絡(luò),起名叫“simple RNN”,公式如下:

這種方式即在每個(gè)時(shí)刻做決策的時(shí)候都考慮一下上一個(gè)時(shí)刻的決策結(jié)果。畫(huà)出圖來(lái)就是醬的:

?

(其中圓球里的下半球代表兩向量的內(nèi)積,上半球代表將內(nèi)積結(jié)果激活)

?

雖然通過(guò)這種簡(jiǎn)單反饋確實(shí)可以看出每個(gè)時(shí)間點(diǎn)的決策會(huì)受前一時(shí)間點(diǎn)決策的影響,但是似乎很難讓人信服這竟然能跟記憶扯上邊!

?

想一下,人的日常行為流程是這樣的。比如你在搭積木,那么每個(gè)時(shí)間點(diǎn)你的行為都會(huì)經(jīng)歷下面的子過(guò)程:

1、眼睛看到現(xiàn)在手里的積木。

2、回憶一下目前較高層的積木的場(chǎng)景。

3、結(jié)合1和2的信息來(lái)做出當(dāng)前時(shí)刻積木插到哪里的決策。

?

相信聰明的小伙伴已經(jīng)知道我要表達(dá)的意思啦。第1步手里的積木就是當(dāng)前時(shí)刻的外部輸入X;第2步就是調(diào)用歷史時(shí)刻的信息/記憶;第3步就是融合X和歷史記憶的信息來(lái)推理出決策結(jié)果,即RNN的一步前向過(guò)程的輸出y(t)。

?

有沒(méi)有更加聰明的小伙伴驚奇的注意到第2步!??!我們?cè)诨貞洑v史的時(shí)候,一般不是簡(jiǎn)單的回憶上一個(gè)積木的形狀,而是去回憶一個(gè)更加模糊而宏觀的場(chǎng)景。在這個(gè)例子中,這個(gè)場(chǎng)景就是最近幾次行為所產(chǎn)生出的抽象記憶——即“積木較高層的地形圖”!

?

也就是說(shuō),人們?cè)谧龊芏鄷r(shí)序任務(wù)的時(shí)候,尤其是稍微復(fù)雜的時(shí)序任務(wù)時(shí),潛意識(shí)的做法并不是直接將上個(gè)時(shí)刻的輸出y(t-1)直接連接進(jìn)來(lái),而是連接一個(gè)模糊而抽象的東西進(jìn)來(lái)!這個(gè)東西是什么呢?

當(dāng)然就是神經(jīng)網(wǎng)絡(luò)中的隱結(jié)點(diǎn)h??!也就是說(shuō),人們潛意識(shí)里直接利用的是一段歷史記憶融合后的東西h,而不單單是上一時(shí)間點(diǎn)的輸出。而網(wǎng)絡(luò)的輸出則取自這個(gè)隱結(jié)點(diǎn)。所以更合理的刻畫(huà)人的潛意識(shí)的模型應(yīng)該是這樣的:

(記憶在隱單元中存儲(chǔ)和流動(dòng),輸出取自隱單元)

?

這種加入了隱藏層的循環(huán)神經(jīng)網(wǎng)絡(luò)就是經(jīng)典的RNN神經(jīng)網(wǎng)絡(luò)!即“standard RNN”。

?

RNN從simple到standard的變動(dòng)及其意義對(duì)于本文后續(xù)內(nèi)容非常重要哦。

?

前置知識(shí)2:?

由于在誤差反向傳播時(shí),算出來(lái)的梯度會(huì)隨著往前傳播而發(fā)生指數(shù)級(jí)的衰減或放大!而且這是在數(shù)學(xué)上板上釘釘?shù)氖虑?。因此,RNN的記憶單元是短時(shí)的。

好啦,那我們就借鑒前輩設(shè)計(jì)RNN的經(jīng)驗(yàn),從simple版本開(kāi)始,即無(wú)隱藏層的、簡(jiǎn)單完成輸出到輸入反饋的網(wǎng)絡(luò)結(jié)構(gòu)開(kāi)始,去設(shè)計(jì)一個(gè)全新的、可以解決梯度爆炸消失問(wèn)題從而記住長(zhǎng)距離依賴關(guān)系的神經(jīng)網(wǎng)絡(luò)吧!

?

那么如何讓梯度隨著時(shí)間的流動(dòng)不發(fā)生指數(shù)級(jí)消失或者爆炸呢?

好像想起來(lái)挺難的,但是這個(gè)問(wèn)題可能中學(xué)生會(huì)解答!那就是讓算出來(lái)的梯度恒為1!因?yàn)?的任何次方都是1嘛( ̄? ̄)

?

所以按照這個(gè)搞笑的想法,我們把要設(shè)計(jì)的長(zhǎng)時(shí)記憶單元記為c(以下全部用c指代長(zhǎng)時(shí)記憶單元),那么我們?cè)O(shè)計(jì)出來(lái)的長(zhǎng)時(shí)記憶單元的數(shù)學(xué)模型就是這樣子嘍:

?

c(t) = c(t-1)

?

這樣的話,誤差反向傳播時(shí)的導(dǎo)數(shù)就恒定為1啦~誤差就可以一路無(wú)損耗的向前傳播到網(wǎng)絡(luò)的前端,從而學(xué)習(xí)到遙遠(yuǎn)的前端與網(wǎng)絡(luò)末端的遠(yuǎn)距離依賴關(guān)系。

?

不要急不要急,反正假設(shè)我們的c中存儲(chǔ)了信息,那么c就能把這個(gè)信息一路帶到輸出層沒(méi)問(wèn)題吧?在T時(shí)刻算出來(lái)的梯度信息存儲(chǔ)在c里后,它也能把梯度一路帶到時(shí)刻0而無(wú)任何損耗也沒(méi)問(wèn)題吧?對(duì)吧( ̄? ̄)

?

所以信息的運(yùn)輸問(wèn)題解決了,那么就要解決對(duì)信息進(jìn)行裝箱和卸車的問(wèn)題。

??

先來(lái)看裝箱問(wèn)題,即如何把新信息寫(xiě)入c里面去呢?

?

1、乘進(jìn)去!

2、加進(jìn)去!

?

那么這兩種哪種可行呢?

其實(shí)稍微一想就很容易判斷:乘法操作更多的是作為一種對(duì)信息進(jìn)行某種控制的操作(比如任意數(shù)與0相乘后直接消失,相當(dāng)于關(guān)閉操作;任意數(shù)與大于1的數(shù)相乘后會(huì)被放大規(guī)模等),而加法操作則是新信息疊加舊信息的操作。

?

下面我們深入的討論一下乘性操作和加性操作,這在理解LSTM里至關(guān)重要。當(dāng)然,首先,你要掌握偏導(dǎo)的概念和方法、復(fù)合函數(shù)的求導(dǎo)法則、鏈?zhǔn)角髮?dǎo)法則。有了這三點(diǎn)微積分基礎(chǔ)后才能看懂哦。

(害怕數(shù)學(xué)和基礎(chǔ)不夠的童鞋可以跳過(guò)這里的論乘法和論加法小節(jié)。)

噫?也有指數(shù)項(xiàng)~不過(guò)由于v加了一個(gè)偏置1,導(dǎo)致爆炸的可能性遠(yuǎn)遠(yuǎn)大于消失。不過(guò)通過(guò)做梯度截?cái)啵材芎艽蟪潭鹊木徑馓荻缺ǖ挠绊憽?/p>

嗯~梯度消失的概率小了很多,梯度爆炸也能勉強(qiáng)緩解,看起來(lái)比RNN靠譜多了,畢竟控制好爆炸的前提下,梯度消失的越慢,記憶的距離就越長(zhǎng)嘛。

?

因此,在往長(zhǎng)時(shí)記憶單元添加信息方面,加性規(guī)則要顯著優(yōu)于乘性規(guī)則。也證明了加法更適合做信息疊加,而乘法更適合做控制和scaling。

?

由此,我們就確定應(yīng)用加性規(guī)則啦,至此我們?cè)O(shè)計(jì)的網(wǎng)絡(luò)應(yīng)該是這樣子的:

那么有沒(méi)有辦法讓信息裝箱和運(yùn)輸同時(shí)存在的情況下,讓梯度消失的可能性變的更低,讓梯度爆炸的可能性和程度也更低呢?

你想呀,我們往長(zhǎng)時(shí)記憶單元添加新信息的頻率肯定是很低的,現(xiàn)實(shí)生活中只有很少的時(shí)刻我們可以記很久,大部分時(shí)刻的信息沒(méi)過(guò)幾天就忘了。因此現(xiàn)在這種模型一股腦的試圖永遠(yuǎn)記住每個(gè)時(shí)刻的信息的做法肯定是不合理的,我們應(yīng)該只記憶該記的信息。

?

顯然,對(duì)新信息選擇記或者不記是一個(gè)控制操作,應(yīng)該使用乘性規(guī)則。因此在新信息前加一個(gè)控制閥門,只需要讓公式【3.1】變?yōu)?/p>

?

嗯~由于輸入門只會(huì)在必要的時(shí)候開(kāi)啟,因此大部分情況下公式【4】可以看成

C(t)=C(t-1),也就是我們最理想的狀態(tài)。由此加性操作帶來(lái)的梯度爆炸也大大減輕啦,梯度消失更更更輕了。

?

等等,愛(ài)思考的同學(xué)可能會(huì)注意到一個(gè)問(wèn)題。萬(wàn)一神經(jīng)網(wǎng)絡(luò)讀到一段信息量很大的文本,以致于這時(shí)輸入門欣喜若狂,一直保持大開(kāi)狀態(tài),狼吞虎咽的試圖記住所有這些信息,會(huì)發(fā)生什么呢?

?

顯然就會(huì)導(dǎo)致c的值變的非常大!

要知道,我們的網(wǎng)絡(luò)要輸出的時(shí)候是要把c激活的(參考公式【0.3】),當(dāng)c變的很大時(shí),sigmoid、tanh這些常見(jiàn)的激活函數(shù)的輸出就完全飽和了!比如如圖tanh:

?

當(dāng)c很大時(shí),tanh趨近于1,這時(shí)c變得再大也沒(méi)有什么意義了,因?yàn)轱柡土耍∧X子記不住這么多東西!

?

這種情況怎么辦呢?顯然relu函數(shù)這種正向無(wú)飽和的激活函數(shù)是一種選擇,但是我們總不能將這個(gè)網(wǎng)絡(luò)輸出的激活函數(shù)限定為relu吧?那也設(shè)計(jì)的太失敗啦!

?

那怎么辦呢?

其實(shí)想想我們自己的工作原理就知道啦。我們之所以既可以記住小時(shí)候的事情,也可以記住一年前的事情,也沒(méi)有覺(jué)得腦子不夠用,不就是因?yàn)槲覀?。。。?ài)忘事嘛。所以還需要加一個(gè)門用來(lái)忘事!這個(gè)門就叫做“遺忘門”吧。這樣每個(gè)時(shí)刻到來(lái)的時(shí)候,記憶要先通過(guò)遺忘門忘掉一些事情再考慮要不要接受這個(gè)時(shí)刻的新信息。

?

顯然,遺忘門是用來(lái)控制記憶消失程度的,因此也要用乘性運(yùn)算,即我們?cè)O(shè)計(jì)的網(wǎng)絡(luò)已進(jìn)化成:

?

好啦~解決了如何為我們的長(zhǎng)時(shí)記憶單元可控的添加新信息的問(wèn)題,又貼心的考慮到并優(yōu)雅解決了信息輸入太過(guò)豐富導(dǎo)致輸入控制門“合不攏嘴”的尷尬情況,那么是時(shí)候考慮我們的長(zhǎng)時(shí)記憶單元如何輸出啦~

?

有人說(shuō),輸出有什么好考慮的,當(dāng)前的輸出難道不就僅僅是激活當(dāng)前的記憶嗎?難道不就是最前面說(shuō)的y(t)=f(c(t))?(其中f(·)為激活函數(shù))

?

試想,假如人有1萬(wàn)個(gè)長(zhǎng)時(shí)記憶的腦細(xì)胞,每個(gè)腦細(xì)胞記一件事情,那么我們?cè)谔幚硌矍暗氖虑榈臅r(shí)候是每個(gè)時(shí)刻都把這1萬(wàn)個(gè)腦細(xì)胞里的事情都回憶一遍嗎?顯然不是呀,我們只會(huì)讓其中一部分跟當(dāng)前任務(wù)當(dāng)前時(shí)刻相關(guān)的腦細(xì)胞輸出,即應(yīng)該給我們的長(zhǎng)時(shí)記憶單元添加一個(gè)輸出閥門!也就是說(shuō)應(yīng)該輸出:

?

?

嗯~終于看起來(lái)好像沒(méi)有什么問(wèn)題了。

?

然而,作為偉大的設(shè)計(jì)者,怎么能止步于simple呢!我們要像simple RNN推廣出standard RNN的做法那樣,推廣出我們的standard版本!即加入隱藏層!

?

為什么要加隱藏層已經(jīng)在本文開(kāi)頭提到了,這也是simpleRNN到standardRNN的核心區(qū)別,這也是RNN及其變種可以作為深度學(xué)習(xí)的主角之一的原因。模仿RNN的做法,我們直接用隱藏層單元h來(lái)代替最終輸出y:

?

?

顯然,由于h隨時(shí)都可以被輸出門截?cái)?,所以我們可以很感性的把h理解為短時(shí)記憶單元。

而從數(shù)學(xué)上看的話,更是短時(shí)記憶了,因?yàn)樘荻攘鹘?jīng)h的時(shí)候,經(jīng)歷的是h(t)->c(t)->h(t-1)的連環(huán)相乘的路徑(在輸入輸出門關(guān)閉前),顯然如前邊的數(shù)學(xué)證明中所述,這樣會(huì)發(fā)生梯度爆炸和消失,而梯度消失的時(shí)候就意味著記憶消失了,即h為短時(shí)記憶單元。

同樣的思路可以再證明一下,由于梯度只從c走的時(shí)候,存在一條無(wú)連環(huán)相乘的路徑,可以避免梯度消失。又有遺忘門避免激活函數(shù)和梯度飽和,因此c為長(zhǎng)時(shí)記憶單元。

好啦,我們standard版本的新型網(wǎng)絡(luò)也完成了!有沒(méi)有覺(jué)得信息量超級(jí)大,又亂掉了呢?不要急,貼心的小夕就再帶你總結(jié)一下我們這個(gè)網(wǎng)絡(luò)的前饋過(guò)程:

?

新時(shí)刻t剛剛到來(lái)的時(shí)候,

1、首先長(zhǎng)時(shí)記憶單元c(t-1)通過(guò)遺忘門g_forget去遺忘一些信息。

2、其中g(shù)_forget受當(dāng)前時(shí)刻的外部輸入x(t)、上一時(shí)刻的輸出(短時(shí)記憶)h(t-1)、上一時(shí)刻的長(zhǎng)時(shí)記憶c(t-1)的控制。

3、然后由當(dāng)前時(shí)刻外部輸入x(t)和上一時(shí)刻的短時(shí)記憶h(t-1)計(jì)算出當(dāng)前時(shí)刻的新信息hat c(t)。

4、然后由輸入門g_in控制,將當(dāng)前時(shí)刻的部分新信息hat c(t)寫(xiě)入長(zhǎng)時(shí)記憶單元,產(chǎn)生新的長(zhǎng)時(shí)記憶c(t)。

5、其中g(shù)_in受x(t)、h(t-1)、c(t-1)的控制。

6、激活長(zhǎng)時(shí)記憶單元c(t),準(zhǔn)備上天(輸出)。

7、然后由輸出門g_out把控,將至目前積累下來(lái)的記憶c(t)選出部分相關(guān)的記憶生成這一時(shí)刻我們關(guān)注的記憶h(t),再把這部分記憶進(jìn)行輸出y(t)。

8、其中輸出門g_out受x(t)、h(t-1)和當(dāng)前時(shí)刻的長(zhǎng)時(shí)記憶c(t)的控制。

?

前饋的過(guò)程寫(xiě)完了,梯度反傳的過(guò)程就讓深度學(xué)習(xí)平臺(tái)去自動(dòng)求導(dǎo)來(lái)完成吧~有M傾向的同學(xué)可以嘗試對(duì)上述過(guò)程進(jìn)行手動(dòng)求導(dǎo)。

?

好啦,最后對(duì)全文的設(shè)計(jì)過(guò)程總結(jié)一下:

1、我們?yōu)榱私鉀QRNN中的梯度消失的問(wèn)題,為了讓梯度無(wú)損傳播,想到了c(t)=c(t-1)這個(gè)樸素卻沒(méi)毛病的梯度傳播模型,我們于是稱c為“長(zhǎng)時(shí)記憶單元”。

2、然后為了把新信息平穩(wěn)安全可靠的裝入長(zhǎng)時(shí)記憶單元,我們引入了“輸入門”。

3、然后為了解決新信息裝載次數(shù)過(guò)多帶來(lái)的激活函數(shù)飽和的問(wèn)題,引入了“遺忘門”。

4、然后為了讓網(wǎng)絡(luò)能夠選擇合適的記憶進(jìn)行輸出,我們引入了“輸出門”。

5、然后為了解決記憶被輸出門截?cái)嗪笫沟酶鱾€(gè)門單元受控性降低的問(wèn)題,我們引入了“peephole”連接。

6、然后為了將神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)單反饋結(jié)構(gòu)升級(jí)成模糊歷史記憶的結(jié)構(gòu),引入了隱單元h,并且發(fā)現(xiàn)h中存儲(chǔ)的模糊歷史記憶是短時(shí)的,于是記h為短時(shí)記憶單元。

7、于是該網(wǎng)絡(luò)既具備長(zhǎng)時(shí)記憶,又具備短時(shí)記憶,就干脆起名叫“長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)(Long Short Term Memory Neural Networks,簡(jiǎn)稱LSTM)“啦。

?

參考文獻(xiàn):

1. Hochreiter S, Schmidhuber J. Long Short-Term Memory[J]. Neural Computation, 1997, 9(8): 1735-1780.

2. Gers F A, Schmidhuber J, Cummins F, et al.Learning to Forget: Continual Prediction with LSTM[J]. Neural Computation,2000, 12(10): 2451-2471.

3. Gers F A, Schraudolph N N, Schmidhuber J, etal. Learning precise timing with lstm recurrent networks[J]. Journal of MachineLearning Research, 2003, 3(1): 115-143.

4. A guide to recurrent neural networks and backpropagation. Mikael Bod ?en.

5. http://colah.github.io/posts/2015-08-Understanding-LSTMs/

6. 《Supervised Sequence Labelling with Recurrent Neural Networks》Alex Graves

7. 《Hands on machine learning with sklearn and tf》Aurelien Geron

8. 《Deep learning》Goodfellow et.

聲明:文章收集于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系小編及時(shí)處理,謝謝!

歡迎加入本站公開(kāi)興趣群

商業(yè)智能與數(shù)據(jù)分析群

興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價(jià)值的辦法,實(shí)際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)挖掘工具,報(bào)表系統(tǒng)等全方位知識(shí)

QQ群:81035754

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/4797.html

相關(guān)文章

  • 從圖像到知識(shí):深度神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)圖像理解原理解析

    摘要:本文將詳細(xì)解析深度神經(jīng)網(wǎng)絡(luò)識(shí)別圖形圖像的基本原理。卷積神經(jīng)網(wǎng)絡(luò)與圖像理解卷積神經(jīng)網(wǎng)絡(luò)通常被用來(lái)張量形式的輸入,例如一張彩色圖象對(duì)應(yīng)三個(gè)二維矩陣,分別表示在三個(gè)顏色通道的像素強(qiáng)度。 本文將詳細(xì)解析深度神經(jīng)網(wǎng)絡(luò)識(shí)別圖形圖像的基本原理。針對(duì)卷積神經(jīng)網(wǎng)絡(luò),本文將詳細(xì)探討網(wǎng)絡(luò) 中每一層在圖像識(shí)別中的原理和作用,例如卷積層(convolutional layer),采樣層(pooling layer),...

    UnixAgain 評(píng)論0 收藏0
  • 遞歸藝術(shù) - 深度遞歸網(wǎng)絡(luò)在序列式推薦應(yīng)用

    摘要:因?yàn)樵诿恳粫r(shí)刻對(duì)過(guò)去的記憶信息和當(dāng)前的輸入處理策略都是一致的,這在其他領(lǐng)域如自然語(yǔ)言處理,語(yǔ)音識(shí)別等問(wèn)題不大,但并不適用于個(gè)性化推薦,一個(gè)用戶的聽(tīng)歌點(diǎn)擊序列,有正負(fù)向之分。 在內(nèi)容爆炸性增長(zhǎng)的今天,個(gè)性化推薦發(fā)揮著越來(lái)越重要的作用,如何在海量的數(shù)據(jù)中幫助用戶找到感興趣的物品,成為大數(shù)據(jù)領(lǐng)域極具挑戰(zhàn)性的一項(xiàng)工作;另一方面,深度學(xué)習(xí)已經(jīng)被證明在圖像處理,計(jì)算機(jī)視覺(jué),自然語(yǔ)言處理等領(lǐng)域都取得了不俗...

    ZweiZhao 評(píng)論0 收藏0
  • 深度學(xué)習(xí)

    摘要:深度學(xué)習(xí)在過(guò)去的幾年里取得了許多驚人的成果,均與息息相關(guān)。機(jī)器學(xué)習(xí)進(jìn)階筆記之一安裝與入門是基于進(jìn)行研發(fā)的第二代人工智能學(xué)習(xí)系統(tǒng),被廣泛用于語(yǔ)音識(shí)別或圖像識(shí)別等多項(xiàng)機(jī)器深度學(xué)習(xí)領(lǐng)域。零基礎(chǔ)入門深度學(xué)習(xí)長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)。 多圖|入門必看:萬(wàn)字長(zhǎng)文帶你輕松了解LSTM全貌 作者 | Edwin Chen編譯 | AI100第一次接觸長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)時(shí),我驚呆了。原來(lái),LSTM是神...

    Vultr 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<