展會信息港展會大全

人工智能的記憶
來源:互聯(lián)網(wǎng)   發(fā)布日期:2024-09-06 13:52:41   瀏覽:1748次  

導(dǎo)讀:撰文丨張?zhí)烊?他不是第一個賦予神經(jīng)網(wǎng)絡(luò)記憶的人,但他發(fā)明的長短期記憶網(wǎng)絡(luò)(LSTM),使得神經(jīng)網(wǎng)絡(luò)有了較長而切實有用的記憶,LSTM早就被Google、蘋果、Amazon、Facebook,用于實現(xiàn)語音識別和翻譯等等功能,如今,LSTM已經(jīng)成為最具商業(yè)化的AI成就之一 長短...

撰文丨張?zhí)烊?/strong>

他不是第一個賦予神經(jīng)網(wǎng)絡(luò)“記憶”的人,但他發(fā)明的長短期記憶網(wǎng)絡(luò)(LSTM),使得神經(jīng)網(wǎng)絡(luò)有了較長而切實有用的記憶,LSTM早就被Google、蘋果、Amazon、Facebook……,用于實現(xiàn)語音識別和翻譯等等功能,如今,LSTM已經(jīng)成為最具商業(yè)化的AI成就之一……

“長短期記憶”-LSTM之父

于爾根施密德胡伯(Jürgen Schmidhuber,1963年1月17日)是德國計算機科學(xué)家,他在德國慕尼黑工業(yè)大學(xué)完成了本科學(xué)業(yè)。2004年至2009年,他在瑞士盧加諾的瑞士意大利語區(qū)大學(xué)擔(dān)任人工智能教授。2021年10月1日,施密德胡伯正式加入阿卜杜拉國王科技大學(xué),擔(dān)任人工智能研究院院長。1991年開始,施密德胡伯指導(dǎo)他一位學(xué)生塞普霍赫賴特的博士論文,研究了傳統(tǒng)記憶型循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)存在的一些問題,這項研究導(dǎo)致他們在1997年,共同發(fā)表了一篇關(guān)于一種新型循環(huán)神經(jīng)網(wǎng)絡(luò)的論文[1],他們將此類型稱之為長短期記憶網(wǎng)絡(luò)(LSTM)。長短期記憶網(wǎng)絡(luò)當(dāng)時并沒有很受到業(yè)界的重視,有關(guān)LSTM的第一篇論文被會議拒絕,被麻省理工學(xué)院退稿。不過在隨后的多年中,長短期記憶網(wǎng)絡(luò)被人們廣泛采用,因為它解決了當(dāng)時RNN循環(huán)神經(jīng)網(wǎng)絡(luò)的幾個短板。LSTM這種神經(jīng)網(wǎng)絡(luò)架構(gòu),后來成為2010年代研究和商業(yè)應(yīng)用中各種自然語言處理任務(wù)的主導(dǎo)技術(shù),盡管其主導(dǎo)地位后來又被具更強大功能的Transformer所取代,但仍然在AI技術(shù)中發(fā)揮著重要作用。施密德胡伯除了這個主要貢獻(xiàn)之外,還在GPU上實現(xiàn)了卷積神經(jīng)網(wǎng)絡(luò)(CNN)的顯著加速,使其比CPU上的等效實現(xiàn)快了60倍。他也在元學(xué)習(xí)、生成對抗網(wǎng)絡(luò)等方面作出貢獻(xiàn)[2]。

圖1:施密德胡伯和LSTM

2018年,谷歌大腦研究科學(xué)家David Ha與施密德胡伯一起提出“世界模型”,這種可以讓人工智能在“夢境”中對外部環(huán)境的未來狀態(tài)進(jìn)行預(yù)測的新方法,再次吸引了人們的注意。雖然施密德胡伯對AI作出卓越貢獻(xiàn),但比起通常人們心目中的“深度神經(jīng)網(wǎng)絡(luò)三巨頭”,也是2018年圖靈獎三位得主:辛頓、楊立昆、本吉奧來說,他的知名度差很多,好像不怎么受人待見。有業(yè)界人士認(rèn)為,是施密德胡伯自己的對抗性格導(dǎo)致他的重大成就被低估,而施密德胡伯本人呢,則一直對很多事都憤憤不平,認(rèn)為他和其他研究人員在深度學(xué)習(xí)領(lǐng)域的貢獻(xiàn)沒有得到充分認(rèn)可。施密德胡伯與前述三位圖靈獎得主都不對勁,在2015年還寫了一篇“嚴(yán)厲而尖刻”的文章,稱他們?nèi)舜罅恳脤Ψ轿恼拢?ldquo;未能贊揚該領(lǐng)域的先驅(qū)者”等等。之后,楊立昆否認(rèn)這一指責(zé)而使雙方產(chǎn)生了更多的爭論。不過,施密德胡伯也許有些性格上的缺點,但無論如何,他仍然算是一名人工智能的先驅(qū),被稱為LSTM之父。

傳統(tǒng)RNN循環(huán)神經(jīng)網(wǎng)絡(luò)

長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)是一類改進(jìn)了的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network或RNN)。因此,我們首先簡單介紹改進(jìn)之前的RNN,或稱它們?yōu)?ldquo;傳統(tǒng)的”循環(huán)神經(jīng)網(wǎng)絡(luò)。人類有記憶,神經(jīng)網(wǎng)絡(luò)當(dāng)然也需要記憶。不過,我們通常所指的前饋神經(jīng)網(wǎng)絡(luò)難以模擬記憶功能。前饋神經(jīng)網(wǎng)絡(luò)(圖2a)是應(yīng)用最廣泛、發(fā)展最迅速的人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),在深度學(xué)習(xí)時代的各個應(yīng)用領(lǐng)域,都發(fā)揮了重要作用。2001年,本吉奧等人將概率統(tǒng)計方法引入神經(jīng)網(wǎng)絡(luò),提出了第一個神經(jīng)網(wǎng)絡(luò)的語言模型。該模型使用前饋神經(jīng)網(wǎng)絡(luò)進(jìn)行語言建模,用n個單詞的向量作為輸入,通過隱藏層可以預(yù)測下一個單詞可能的概率分布。這一工作為神經(jīng)網(wǎng)絡(luò)在自然語言處理(NLP)領(lǐng)域的應(yīng)用奠定了基矗

圖2:前饋神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的信息流

自然語言處理(NLP)旨在讓計算機能夠理解和生成人類語言。語言是一種時間序列數(shù)據(jù),是按照時間先后排列成的一個集合。人工神經(jīng)網(wǎng)絡(luò)在處理如語言這類時間序列時,一個主要作用,是要了解每個輸入項(詞匯)的后期影響和預(yù)測未來可能出現(xiàn)的(詞匯)。循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)就是對人類記憶能力進(jìn)行最簡單模擬的神經(jīng)網(wǎng)絡(luò),見圖2b。隨著深度學(xué)習(xí)的發(fā)展,RNN開始在NLP領(lǐng)域嶄露頭角。從圖2可見,前饋網(wǎng)絡(luò)中各神經(jīng)元分層排列,每個神經(jīng)元只與前一層的神經(jīng)元相連,接收前一層的輸出,并輸出給下一層,各層間沒有反潰也就是說,前饋網(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ù)序列中前后項之間的關(guān)系。圖2a和圖2b說明了前饋神經(jīng)網(wǎng)絡(luò)和RNN之間的信息流的差異。在前饋神經(jīng)網(wǎng)絡(luò)中,信息流從來不會觸及一個節(jié)點兩次,說明他們對以前收到的輸入是沒有記憶的,因此也不容易預(yù)測接下來會發(fā)生什么。就是說,前饋網(wǎng)絡(luò)只考慮當(dāng)前的輸入,因此沒有時間順序的概念,而循環(huán)神經(jīng)網(wǎng)絡(luò)的狀態(tài),不僅受輸入狀態(tài)的影響,還受前一時刻狀態(tài)的影響。因此,循環(huán)神經(jīng)網(wǎng)絡(luò)具有一定的記憶能力,會對前面的信息進(jìn)行記憶并應(yīng)用于當(dāng)前輸出的計算中。它們是具有內(nèi)部存儲器的算法,因而能在連續(xù)數(shù)據(jù)中產(chǎn)生預(yù)測結(jié)果。以下例子可以解釋RNN的記憶概念:假設(shè)你有一個前饋神經(jīng)網(wǎng)絡(luò),你給它逐字輸入一句話“蛋糕糖很甜”,當(dāng)它處理了前面3個字之后,它已經(jīng)把它們忘記了,因此,在處理“很”字時,它很難預(yù)測到接下來出現(xiàn)的是“甜”字,而有記憶的RNN則極有可能作出準(zhǔn)確的預(yù)測。為了更好地解釋RNN是如何工作的,我們將RNN畫成如圖3所示(輸入輸出)從下向上的樣子。并且,將RNN的工作過程按時間順序展開成圖3(等號右邊)的序列。展開的RNN序列中,信息逐步地從一個時間步傳遞到下一個時間步。因此,RNN也可以被看作是一個網(wǎng)絡(luò)序列,例如圖3中等號之后的5個神經(jīng)網(wǎng)絡(luò),按時間順序串在一起。

圖3:RNN網(wǎng)絡(luò)按其輸入展開成時間序列

由圖3可見,RNN在每個時間點都有兩個輸入,現(xiàn)在的和上一次的。即使是這“一次記憶”,也讓RNN可做其他算法無法做的“預(yù)測”,例如看見“糖”和“很”兩個字,基本可以預(yù)測下一個字是“甜”!有了圖3的展開也容易理解:RNN網(wǎng)絡(luò)可以和前饋網(wǎng)絡(luò)類似地利用“深度學(xué)習(xí)”及通過梯度下降和反向傳播來調(diào)整權(quán)重參數(shù),對逐個網(wǎng)絡(luò)層進(jìn)行訓(xùn)練。只是,這兒的所有概念都是相對于“時間步”而言的。

RNN的短板

從以上對傳統(tǒng)RNN的描述,也不難看出它的弱點:記憶延續(xù)的時間太短了!例如上述例子中,只能記住上一步的。這個缺點,用AI的術(shù)語來說,叫做“長期依賴問題”。就是說,傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)很難處理長距離的依賴關(guān)系,因為它們只具有“短期記憶”。比如,給RNN輸入一段較長的話:“去年我到重慶,學(xué)會了做川菜,特別喜歡吃重慶的辣子雞和水煮牛,此外,我還在那兒學(xué)會了中文,跳中國舞唱國語歌,在那兒生活了半年,高興極了,因此我今天在美國餐館吃到這個菜,一點都不覺得【__】。”,很難預(yù)測【__】里面的詞是什么?我們(人)一看就知道應(yīng)該是“辣”!但RNN難以預(yù)測,因為相關(guān)的信息隔得太遠(yuǎn)了。換言之,RNN難以分析輸入數(shù)據(jù)與長時間步以后的信息關(guān)聯(lián),也無法靠“學(xué)習(xí)”來增強預(yù)測的能力。在理論上,通過調(diào)整參數(shù),RNN是可以學(xué)習(xí)到時間久遠(yuǎn)的信息的。但是,實踐中的結(jié)論是,RNN無法學(xué)習(xí)到久遠(yuǎn)之前的信息,長期記憶的學(xué)習(xí)過程對RNN失效。為什么學(xué)都學(xué)不會呢?因為序列過長時,循環(huán)神經(jīng)網(wǎng)絡(luò)會出現(xiàn)“梯度消失”或者“梯度爆炸”的問題。對此我們簡單地理解一下。循環(huán)神經(jīng)網(wǎng)絡(luò)使用與前饋網(wǎng)絡(luò)同樣的方法進(jìn)行“學(xué)習(xí)”,以此來調(diào)節(jié)網(wǎng)絡(luò)的權(quán)重參數(shù)w。機器學(xué)習(xí)的過程中,用反向傳播來計算目標(biāo)函數(shù)對w的梯度。簡單而言,信息每傳遞一個時間步,信息的狀態(tài)成為原來的W倍。那么,傳遞了n個時間步之后,信息狀態(tài)是原來的Wn倍。一般來說,abs(W)<1,因此,當(dāng)n很大時,Wn是非常小的一個數(shù)。這容易理解也基本符合人腦的事實。因為信息對后續(xù)狀態(tài)的影響總是越來越小,最后幾乎被遺忘。但人腦不同的是,同樣的信息的反復(fù)刺激(學(xué)習(xí))可以起作用。但RNN訓(xùn)練失效,因為非常小的Wn使得梯度值太小并且模型停止學(xué)習(xí)。這叫做“梯度消失”。當(dāng)算法賦予權(quán)重非常重要的值時,也會產(chǎn)生“梯度爆炸”,但這種情況較少。總的來說,RNN的梯度消失比梯度爆炸更難以解決。

長短期記憶LSTM

解決長期依賴問題有很多方法,其中霍赫賴特和施密德胡伯提出的長短時記憶網(wǎng)絡(luò)(LSTM)[3]是比較常用的一個。其實,長短時記憶網(wǎng)絡(luò)的思路挺簡單的。也就仍然是類比人類的記憶方式吧,我們經(jīng)常聽說有些人的長期記憶好,有些人短期記憶好,就是說,從生物學(xué)的角度看,人腦有長期和短期兩種記憶類型。如前所述,傳統(tǒng)RNN已經(jīng)有了短期記憶的功能,那么,我們就再給他增加一個長期記憶的功能,問題不就解決了嗎?那我們就首先重溫一下傳統(tǒng)RNN的短期記憶功能:將圖3中RNN展開后的網(wǎng)絡(luò)結(jié)構(gòu)畫詳細(xì)一點,顯示于圖4a中。傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)的隱藏層只有一個狀態(tài)h,在網(wǎng)絡(luò)的每個時間步直接將它存起來,然后輸入到下一個時間步,這就是短期記憶,F(xiàn)在,LSTM的想法是再增加一個長期記憶狀態(tài)c,并且,用一定的方式來控制c,讓它保存較長時期的記憶。新增加的狀態(tài)c,稱為細(xì)胞單元(cell state)或記憶單元,見圖4b。

圖4:傳統(tǒng)RNN與LSTM的結(jié)構(gòu)比較

LSTM網(wǎng)絡(luò)中,不僅引入了一個記憶單元c,還引進(jìn)了3個門電路來控制它,如圖4b。圖4b的左圖是3個門電路開關(guān)與記憶單元關(guān)系的邏輯示意圖,右圖則展示了LSTM更為詳細(xì)的結(jié)構(gòu)。LSTM的第一個門叫做“遺忘門”:人腦除了有長期記憶之外,也有遺忘的功能。人并不需要記住所有經(jīng)歷過的,而是只保留重要的信息,這樣才能減輕大腦的壓力。有記憶就有遺忘,遺忘是記憶中的特殊功能。遺忘門的作用就是決定我們要從原來的記憶單元Ct1中,丟棄(忘記)什么信息,保留什么信息。遺忘門通過Sigmoid激活函數(shù),輸出一個在0到1之間的數(shù)值給記憶單元狀態(tài)Ct1。1表示全保留,0表示全忘記,也有0、1間的中間值。第二個是輸入門,它決定是否將當(dāng)前的即時輸入信息,作為長久記憶送到Ct中。最后是輸出門,它決定是否將當(dāng)前Ct中的信息,輸出到下一級網(wǎng)絡(luò)。因此,從傳統(tǒng)的RNN到LSTM,保持了類似的循環(huán)結(jié)構(gòu),不過每一個“時間步”神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)元件從1個增加到了4個,包括一個記憶單元和3個控制門。LSTM使RNN能夠長時間記住他們的輸入,解決了梯度消失的問題。這是因為LSTM將他們的信息包含在了內(nèi)存(記憶單元C)中,這很像計算機的內(nèi)存,因為LSTM可以從內(nèi)存讀娶寫入和刪除信息,三個控制門可以控制這些操作,AI的網(wǎng)絡(luò)比普通計算機優(yōu)越的是,它還具有學(xué)習(xí)的能力。

圖5:門控循環(huán)單元(GRU)

圖4b中顯示的,是最典型的LSTM結(jié)構(gòu),實際應(yīng)用中有很多改進(jìn),因而具有多種LSTM的變種。例如2014年由Kyunghyun Cho 等人提出的門控循環(huán)單元[4](Gated Recurrent Unit,縮寫為GRU),如圖5所示。GRU將遺忘門和輸入門結(jié)合起來,成為“更新門”。同時把記憶單元狀態(tài)和隱藏狀態(tài)合并,研究發(fā)現(xiàn),GRU在復(fù)音音樂建模、語音信號建模和自然語言處理等某些任務(wù)上的表現(xiàn)與LSTM 相似,但這樣簡化之后,參數(shù)比LSTM少,因此比標(biāo)準(zhǔn)LSTM更簡單,也更受歡迎。

[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)

來源:知識分子

贊助本站

人工智能實驗室

相關(guān)熱詞: 人工智能 記憶

相關(guān)內(nèi)容
AiLab云推薦
推薦內(nèi)容

熱門欄目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能實驗室 版權(quán)所有    關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 公司動態(tài) | 免責(zé)聲明 | 隱私條款 | 工作機會 | 展會港