撰文丨張?zhí)烊?/strong>
他不是第一個(gè)賦予神經(jīng)網(wǎng)絡(luò)“記憶”的人,但他發(fā)明的長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM),使得神經(jīng)網(wǎng)絡(luò)有了較長(zhǎng)而切實(shí)有用的記憶,LSTM早就被Google、蘋(píng)果、Amazon、Facebook……,用于實(shí)現(xiàn)語(yǔ)音識(shí)別和翻譯等等功能,如今,LSTM已經(jīng)成為最具商業(yè)化的AI成就之一……
“長(zhǎng)短期記憶”-LSTM之父
于爾根施密德胡伯(Jürgen Schmidhuber,1963年1月17日)是德國(guó)計(jì)算機(jī)科學(xué)家,他在德國(guó)慕尼黑工業(yè)大學(xué)完成了本科學(xué)業(yè)。2004年至2009年,他在瑞士盧加諾的瑞士意大利語(yǔ)區(qū)大學(xué)擔(dān)任人工智能教授。2021年10月1日,施密德胡伯正式加入阿卜杜拉國(guó)王科技大學(xué),擔(dān)任人工智能研究院院長(zhǎng)。1991年開(kāi)始,施密德胡伯指導(dǎo)他一位學(xué)生塞普霍赫賴(lài)特的博士論文,研究了傳統(tǒng)記憶型循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)存在的一些問(wèn)題,這項(xiàng)研究導(dǎo)致他們?cè)?997年,共同發(fā)表了一篇關(guān)于一種新型循環(huán)神經(jīng)網(wǎng)絡(luò)的論文[1],他們將此類(lèi)型稱(chēng)之為長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)。長(zhǎng)短期記憶網(wǎng)絡(luò)當(dāng)時(shí)并沒(méi)有很受到業(yè)界的重視,有關(guān)LSTM的第一篇論文被會(huì)議拒絕,被麻省理工學(xué)院退稿。不過(guò)在隨后的多年中,長(zhǎng)短期記憶網(wǎng)絡(luò)被人們廣泛采用,因?yàn)樗鉀Q了當(dāng)時(shí)RNN循環(huán)神經(jīng)網(wǎng)絡(luò)的幾個(gè)短板。LSTM這種神經(jīng)網(wǎng)絡(luò)架構(gòu),后來(lái)成為2010年代研究和商業(yè)應(yīng)用中各種自然語(yǔ)言處理任務(wù)的主導(dǎo)技術(shù),盡管其主導(dǎo)地位后來(lái)又被具更強(qiáng)大功能的Transformer所取代,但仍然在AI技術(shù)中發(fā)揮著重要作用。施密德胡伯除了這個(gè)主要貢獻(xiàn)之外,還在GPU上實(shí)現(xiàn)了卷積神經(jīng)網(wǎng)絡(luò)(CNN)的顯著加速,使其比CPU上的等效實(shí)現(xiàn)快了60倍。他也在元學(xué)習(xí)、生成對(duì)抗網(wǎng)絡(luò)等方面作出貢獻(xiàn)[2]。
圖1:施密德胡伯和LSTM
2018年,谷歌大腦研究科學(xué)家David Ha與施密德胡伯一起提出“世界模型”,這種可以讓人工智能在“夢(mèng)境”中對(duì)外部環(huán)境的未來(lái)狀態(tài)進(jìn)行預(yù)測(cè)的新方法,再次吸引了人們的注意。雖然施密德胡伯對(duì)AI作出卓越貢獻(xiàn),但比起通常人們心目中的“深度神經(jīng)網(wǎng)絡(luò)三巨頭”,也是2018年圖靈獎(jiǎng)三位得主:辛頓、楊立昆、本吉奧來(lái)說(shuō),他的知名度差很多,好像不怎么受人待見(jiàn)。有業(yè)界人士認(rèn)為,是施密德胡伯自己的對(duì)抗性格導(dǎo)致他的重大成就被低估,而施密德胡伯本人呢,則一直對(duì)很多事都憤憤不平,認(rèn)為他和其他研究人員在深度學(xué)習(xí)領(lǐng)域的貢獻(xiàn)沒(méi)有得到充分認(rèn)可。施密德胡伯與前述三位圖靈獎(jiǎng)得主都不對(duì)勁,在2015年還寫(xiě)了一篇“嚴(yán)厲而尖刻”的文章,稱(chēng)他們?nèi)舜罅恳脤?duì)方文章,“未能贊揚(yáng)該領(lǐng)域的先驅(qū)者”等等。之后,楊立昆否認(rèn)這一指責(zé)而使雙方產(chǎn)生了更多的爭(zhēng)論。不過(guò),施密德胡伯也許有些性格上的缺點(diǎn),但無(wú)論如何,他仍然算是一名人工智能的先驅(qū),被稱(chēng)為L(zhǎng)STM之父。
傳統(tǒng)RNN循環(huán)神經(jīng)網(wǎng)絡(luò)
長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)是一類(lèi)改進(jìn)了的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network或RNN)。因此,我們首先簡(jiǎn)單介紹改進(jìn)之前的RNN,或稱(chēng)它們?yōu)?ldquo;傳統(tǒng)的”循環(huán)神經(jīng)網(wǎng)絡(luò)。人類(lèi)有記憶,神經(jīng)網(wǎng)絡(luò)當(dāng)然也需要記憶。不過(guò),我們通常所指的前饋神經(jīng)網(wǎng)絡(luò)難以模擬記憶功能。前饋神經(jīng)網(wǎng)絡(luò)(圖2a)是應(yīng)用最廣泛、發(fā)展最迅速的人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),在深度學(xué)習(xí)時(shí)代的各個(gè)應(yīng)用領(lǐng)域,都發(fā)揮了重要作用。2001年,本吉奧等人將概率統(tǒng)計(jì)方法引入神經(jīng)網(wǎng)絡(luò),提出了第一個(gè)神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型。該模型使用前饋神經(jīng)網(wǎng)絡(luò)進(jìn)行語(yǔ)言建模,用n個(gè)單詞的向量作為輸入,通過(guò)隱藏層可以預(yù)測(cè)下一個(gè)單詞可能的概率分布。這一工作為神經(jīng)網(wǎng)絡(luò)在自然語(yǔ)言處理(NLP)領(lǐng)域的應(yīng)用奠定了基矗
圖2:前饋神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的信息流
自然語(yǔ)言處理(NLP)旨在讓計(jì)算機(jī)能夠理解和生成人類(lèi)語(yǔ)言。語(yǔ)言是一種時(shí)間序列數(shù)據(jù),是按照時(shí)間先后排列成的一個(gè)集合。人工神經(jīng)網(wǎng)絡(luò)在處理如語(yǔ)言這類(lèi)時(shí)間序列時(shí),一個(gè)主要作用,是要了解每個(gè)輸入項(xiàng)(詞匯)的后期影響和預(yù)測(cè)未來(lái)可能出現(xiàn)的(詞匯)。循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)就是對(duì)人類(lèi)記憶能力進(jìn)行最簡(jiǎn)單模擬的神經(jīng)網(wǎng)絡(luò),見(jiàn)圖2b。隨著深度學(xué)習(xí)的發(fā)展,RNN開(kāi)始在NLP領(lǐng)域嶄露頭角。從圖2可見(jiàn),前饋網(wǎng)絡(luò)中各神經(jīng)元分層排列,每個(gè)神經(jīng)元只與前一層的神經(jīng)元相連,接收前一層的輸出,并輸出給下一層,各層間沒(méi)有反潰也就是說(shuō),前饋網(wǎng)絡(luò)的信息是從輸入到輸出一直“向前走”。而RNN網(wǎng)絡(luò)不同,它與前饋網(wǎng)絡(luò)的區(qū)別是引入了循環(huán)結(jié)構(gòu),它產(chǎn)生輸出,復(fù)制輸出并將其循環(huán)回網(wǎng)絡(luò)。這種反饋的方式使RNN模型有了內(nèi)部記憶,使它能夠更方便地處理數(shù)據(jù)序列中前后項(xiàng)之間的關(guān)系。圖2a和圖2b說(shuō)明了前饋神經(jīng)網(wǎng)絡(luò)和RNN之間的信息流的差異。在前饋神經(jīng)網(wǎng)絡(luò)中,信息流從來(lái)不會(huì)觸及一個(gè)節(jié)點(diǎn)兩次,說(shuō)明他們對(duì)以前收到的輸入是沒(méi)有記憶的,因此也不容易預(yù)測(cè)接下來(lái)會(huì)發(fā)生什么。就是說(shuō),前饋網(wǎng)絡(luò)只考慮當(dāng)前的輸入,因此沒(méi)有時(shí)間順序的概念,而循環(huán)神經(jīng)網(wǎng)絡(luò)的狀態(tài),不僅受輸入狀態(tài)的影響,還受前一時(shí)刻狀態(tài)的影響。因此,循環(huán)神經(jīng)網(wǎng)絡(luò)具有一定的記憶能力,會(huì)對(duì)前面的信息進(jìn)行記憶并應(yīng)用于當(dāng)前輸出的計(jì)算中。它們是具有內(nèi)部存儲(chǔ)器的算法,因而能在連續(xù)數(shù)據(jù)中產(chǎn)生預(yù)測(cè)結(jié)果。以下例子可以解釋RNN的記憶概念:假設(shè)你有一個(gè)前饋神經(jīng)網(wǎng)絡(luò),你給它逐字輸入一句話(huà)“蛋糕糖很甜”,當(dāng)它處理了前面3個(gè)字之后,它已經(jīng)把它們忘記了,因此,在處理“很”字時(shí),它很難預(yù)測(cè)到接下來(lái)出現(xiàn)的是“甜”字,而有記憶的RNN則極有可能作出準(zhǔn)確的預(yù)測(cè)。為了更好地解釋RNN是如何工作的,我們將RNN畫(huà)成如圖3所示(輸入輸出)從下向上的樣子。并且,將RNN的工作過(guò)程按時(shí)間順序展開(kāi)成圖3(等號(hào)右邊)的序列。展開(kāi)的RNN序列中,信息逐步地從一個(gè)時(shí)間步傳遞到下一個(gè)時(shí)間步。因此,RNN也可以被看作是一個(gè)網(wǎng)絡(luò)序列,例如圖3中等號(hào)之后的5個(gè)神經(jīng)網(wǎng)絡(luò),按時(shí)間順序串在一起。
圖3:RNN網(wǎng)絡(luò)按其輸入展開(kāi)成時(shí)間序列
由圖3可見(jiàn),RNN在每個(gè)時(shí)間點(diǎn)都有兩個(gè)輸入,現(xiàn)在的和上一次的。即使是這“一次記憶”,也讓RNN可做其他算法無(wú)法做的“預(yù)測(cè)”,例如看見(jiàn)“糖”和“很”兩個(gè)字,基本可以預(yù)測(cè)下一個(gè)字是“甜”!有了圖3的展開(kāi)也容易理解:RNN網(wǎng)絡(luò)可以和前饋網(wǎng)絡(luò)類(lèi)似地利用“深度學(xué)習(xí)”及通過(guò)梯度下降和反向傳播來(lái)調(diào)整權(quán)重參數(shù),對(duì)逐個(gè)網(wǎng)絡(luò)層進(jìn)行訓(xùn)練。只是,這兒的所有概念都是相對(duì)于“時(shí)間步”而言的。
RNN的短板
從以上對(duì)傳統(tǒng)RNN的描述,也不難看出它的弱點(diǎn):記憶延續(xù)的時(shí)間太短了!例如上述例子中,只能記住上一步的。這個(gè)缺點(diǎn),用AI的術(shù)語(yǔ)來(lái)說(shuō),叫做“長(zhǎng)期依賴(lài)問(wèn)題”。就是說(shuō),傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)很難處理長(zhǎng)距離的依賴(lài)關(guān)系,因?yàn)樗鼈冎痪哂?ldquo;短期記憶”。比如,給RNN輸入一段較長(zhǎng)的話(huà):“去年我到重慶,學(xué)會(huì)了做川菜,特別喜歡吃重慶的辣子雞和水煮牛,此外,我還在那兒學(xué)會(huì)了中文,跳中國(guó)舞唱國(guó)語(yǔ)歌,在那兒生活了半年,高興極了,因此我今天在美國(guó)餐館吃到這個(gè)菜,一點(diǎn)都不覺(jué)得【__】。”,很難預(yù)測(cè)【__】里面的詞是什么?我們(人)一看就知道應(yīng)該是“辣”!但RNN難以預(yù)測(cè),因?yàn)橄嚓P(guān)的信息隔得太遠(yuǎn)了。換言之,RNN難以分析輸入數(shù)據(jù)與長(zhǎng)時(shí)間步以后的信息關(guān)聯(lián),也無(wú)法靠“學(xué)習(xí)”來(lái)增強(qiáng)預(yù)測(cè)的能力。在理論上,通過(guò)調(diào)整參數(shù),RNN是可以學(xué)習(xí)到時(shí)間久遠(yuǎn)的信息的。但是,實(shí)踐中的結(jié)論是,RNN無(wú)法學(xué)習(xí)到久遠(yuǎn)之前的信息,長(zhǎng)期記憶的學(xué)習(xí)過(guò)程對(duì)RNN失效。為什么學(xué)都學(xué)不會(huì)呢?因?yàn)樾蛄羞^(guò)長(zhǎng)時(shí),循環(huán)神經(jīng)網(wǎng)絡(luò)會(huì)出現(xiàn)“梯度消失”或者“梯度爆炸”的問(wèn)題。對(duì)此我們簡(jiǎn)單地理解一下。循環(huán)神經(jīng)網(wǎng)絡(luò)使用與前饋網(wǎng)絡(luò)同樣的方法進(jìn)行“學(xué)習(xí)”,以此來(lái)調(diào)節(jié)網(wǎng)絡(luò)的權(quán)重參數(shù)w。機(jī)器學(xué)習(xí)的過(guò)程中,用反向傳播來(lái)計(jì)算目標(biāo)函數(shù)對(duì)w的梯度。簡(jiǎn)單而言,信息每傳遞一個(gè)時(shí)間步,信息的狀態(tài)成為原來(lái)的W倍。那么,傳遞了n個(gè)時(shí)間步之后,信息狀態(tài)是原來(lái)的Wn倍。一般來(lái)說(shuō),abs(W)<1,因此,當(dāng)n很大時(shí),Wn是非常小的一個(gè)數(shù)。這容易理解也基本符合人腦的事實(shí)。因?yàn)樾畔?duì)后續(xù)狀態(tài)的影響總是越來(lái)越小,最后幾乎被遺忘。但人腦不同的是,同樣的信息的反復(fù)刺激(學(xué)習(xí))可以起作用。但RNN訓(xùn)練失效,因?yàn)榉浅P〉腤n使得梯度值太小并且模型停止學(xué)習(xí)。這叫做“梯度消失”。當(dāng)算法賦予權(quán)重非常重要的值時(shí),也會(huì)產(chǎn)生“梯度爆炸”,但這種情況較少?偟膩(lái)說(shuō),RNN的梯度消失比梯度爆炸更難以解決。
長(zhǎng)短期記憶LSTM
解決長(zhǎng)期依賴(lài)問(wèn)題有很多方法,其中霍赫賴(lài)特和施密德胡伯提出的長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)[3]是比較常用的一個(gè)。其實(shí),長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)的思路挺簡(jiǎn)單的。也就仍然是類(lèi)比人類(lèi)的記憶方式吧,我們經(jīng)常聽(tīng)說(shuō)有些人的長(zhǎng)期記憶好,有些人短期記憶好,就是說(shuō),從生物學(xué)的角度看,人腦有長(zhǎng)期和短期兩種記憶類(lèi)型。如前所述,傳統(tǒng)RNN已經(jīng)有了短期記憶的功能,那么,我們就再給他增加一個(gè)長(zhǎng)期記憶的功能,問(wèn)題不就解決了嗎?那我們就首先重溫一下傳統(tǒng)RNN的短期記憶功能:將圖3中RNN展開(kāi)后的網(wǎng)絡(luò)結(jié)構(gòu)畫(huà)詳細(xì)一點(diǎn),顯示于圖4a中。傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)的隱藏層只有一個(gè)狀態(tài)h,在網(wǎng)絡(luò)的每個(gè)時(shí)間步直接將它存起來(lái),然后輸入到下一個(gè)時(shí)間步,這就是短期記憶,F(xiàn)在,LSTM的想法是再增加一個(gè)長(zhǎng)期記憶狀態(tài)c,并且,用一定的方式來(lái)控制c,讓它保存較長(zhǎng)時(shí)期的記憶。新增加的狀態(tài)c,稱(chēng)為細(xì)胞單元(cell state)或記憶單元,見(jiàn)圖4b。
圖4:傳統(tǒng)RNN與LSTM的結(jié)構(gòu)比較
LSTM網(wǎng)絡(luò)中,不僅引入了一個(gè)記憶單元c,還引進(jìn)了3個(gè)門(mén)電路來(lái)控制它,如圖4b。圖4b的左圖是3個(gè)門(mén)電路開(kāi)關(guān)與記憶單元關(guān)系的邏輯示意圖,右圖則展示了LSTM更為詳細(xì)的結(jié)構(gòu)。LSTM的第一個(gè)門(mén)叫做“遺忘門(mén)”:人腦除了有長(zhǎng)期記憶之外,也有遺忘的功能。人并不需要記住所有經(jīng)歷過(guò)的,而是只保留重要的信息,這樣才能減輕大腦的壓力。有記憶就有遺忘,遺忘是記憶中的特殊功能。遺忘門(mén)的作用就是決定我們要從原來(lái)的記憶單元Ct1中,丟棄(忘記)什么信息,保留什么信息。遺忘門(mén)通過(guò)Sigmoid激活函數(shù),輸出一個(gè)在0到1之間的數(shù)值給記憶單元狀態(tài)Ct1。1表示全保留,0表示全忘記,也有0、1間的中間值。第二個(gè)是輸入門(mén),它決定是否將當(dāng)前的即時(shí)輸入信息,作為長(zhǎng)久記憶送到Ct中。最后是輸出門(mén),它決定是否將當(dāng)前Ct中的信息,輸出到下一級(jí)網(wǎng)絡(luò)。因此,從傳統(tǒng)的RNN到LSTM,保持了類(lèi)似的循環(huán)結(jié)構(gòu),不過(guò)每一個(gè)“時(shí)間步”神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)元件從1個(gè)增加到了4個(gè),包括一個(gè)記憶單元和3個(gè)控制門(mén)。LSTM使RNN能夠長(zhǎng)時(shí)間記住他們的輸入,解決了梯度消失的問(wèn)題。這是因?yàn)長(zhǎng)STM將他們的信息包含在了內(nèi)存(記憶單元C)中,這很像計(jì)算機(jī)的內(nèi)存,因?yàn)長(zhǎng)STM可以從內(nèi)存讀娶寫(xiě)入和刪除信息,三個(gè)控制門(mén)可以控制這些操作,AI的網(wǎng)絡(luò)比普通計(jì)算機(jī)優(yōu)越的是,它還具有學(xué)習(xí)的能力。
圖5:門(mén)控循環(huán)單元(GRU)
圖4b中顯示的,是最典型的LSTM結(jié)構(gòu),實(shí)際應(yīng)用中有很多改進(jìn),因而具有多種LSTM的變種。例如2014年由Kyunghyun Cho 等人提出的門(mén)控循環(huán)單元[4](Gated Recurrent Unit,縮寫(xiě)為GRU),如圖5所示。GRU將遺忘門(mén)和輸入門(mén)結(jié)合起來(lái),成為“更新門(mén)”。同時(shí)把記憶單元狀態(tài)和隱藏狀態(tài)合并,研究發(fā)現(xiàn),GRU在復(fù)音音樂(lè)建模、語(yǔ)音信號(hào)建模和自然語(yǔ)言處理等某些任務(wù)上的表現(xiàn)與LSTM 相似,但這樣簡(jiǎn)化之后,參數(shù)比LSTM少,因此比標(biāo)準(zhǔn)LSTM更簡(jiǎn)單,也更受歡迎。
[1]Sepp Hochreiter; Jürgen Schmidhuber (1997). "Long short-term memory". Neural Computation. 9 (8): 17351780.
[4]Cho, Kyunghyun;van Merrienboer, Bart;Bahdanau, DZmitry;Bougares, Fethi;Schwenk, Holger;Bengio, Yoshua (2014)
來(lái)源:知識(shí)分子