4.建立基于門控循環(huán)單元(GRU)或者長(zhǎng)短時(shí)記憶(LSTM)的RNN模型
http://neuralnetworksanddeeplearning.com/chap2.html
先來(lái)快速回憶一下RNN的基本方程。注意,為了和要引用的文獻(xiàn)保持一致,這里我們把o改成了。
同樣,將損失函數(shù)定義為交叉熵?fù)p失函數(shù),如下所示:
在這里,y_t是表示的是時(shí)間步t上的正確標(biāo)簽,是我們的預(yù)測(cè)。通常我們會(huì)將一個(gè)完整的句子序列視作一個(gè)訓(xùn)練樣本,因此總誤差即為各時(shí)間步(單詞)的誤差之和。
▲RNN反向傳播
別忘了,我們的目的是要計(jì)算誤差對(duì)應(yīng)的參數(shù)U、V和W的梯度,然后借助SDG算法來(lái)更新參數(shù)。當(dāng)然,我們統(tǒng)計(jì)的不只是誤差,還包括訓(xùn)練樣本在每時(shí)間步的梯度:
▲RNN的結(jié)構(gòu)圖
我們借助導(dǎo)數(shù)的鏈?zhǔn)椒▌t來(lái)計(jì)算梯度。從最后一層將誤差向前傳播的思想,即為反向傳播。本文后續(xù)部分將以E3為例繼續(xù)介紹:
由上可知,z_3 =Vs_3,為兩個(gè)矢量的外積。為了讓大家更好理解,這里我省略了幾個(gè)步驟,你可以試著自己計(jì)算這些導(dǎo)數(shù)。我想強(qiáng)調(diào)的是,
的值僅取決于當(dāng)前時(shí)間步的值:
。有了這些值,計(jì)算參數(shù)V的梯度就是簡(jiǎn)單的矩陣相乘了。
但有所不同。我們列出如前文所示的鏈?zhǔn)椒▌t來(lái)解釋原因:
▲鏈?zhǔn)角髮?dǎo)式子1
其中,s_3 = \tanh(Ux_t + Ws_2) 取決于s_2,而s_2則取決于W和s_1,以此類推。因此,如果要推導(dǎo)參數(shù)W,就不能簡(jiǎn)單將s_2視作常量,需要再次應(yīng)用鏈?zhǔn)椒▌t,真正得到的是:
▲鏈?zhǔn)角髮?dǎo)式子2
上面的式子用到了復(fù)合函數(shù)的鏈?zhǔn)角髮?dǎo)法則,將每個(gè)時(shí)間步長(zhǎng)對(duì)梯度的貢獻(xiàn)相加。換言之,由于參數(shù)W時(shí)間步長(zhǎng)應(yīng)用于想要的輸出,因此需從t=3開始通過所有網(wǎng)絡(luò)路徑到t=0進(jìn)行反向傳播梯度:
▲BPTT復(fù)合函數(shù)鏈?zhǔn)角髮?dǎo)
5個(gè)時(shí)間步梯度的遞歸神經(jīng)網(wǎng)絡(luò)展開圖
請(qǐng)注意,這與我們?cè)谏疃壬窠?jīng)網(wǎng)絡(luò)中應(yīng)用的標(biāo)準(zhǔn)反向傳播算法完全一致。主要區(qū)別在于我們對(duì)每時(shí)間步的參數(shù)W的梯度進(jìn)行了求和。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)(RNN)中,我們不在層與層之間共享參數(shù),也就無(wú)需求和。但就我而言,BPTT不過是標(biāo)準(zhǔn)反向傳播在展開RNN上的別稱。好比在反向傳播算法中,可以定義一個(gè)反向傳播的delta矢量,例如:基于z_2 = Ux_2+ Ws_1的。和傳統(tǒng)的反向傳播算法一樣,我們?nèi)匀豢梢远x殘差,然后計(jì)算梯度。
直接實(shí)現(xiàn)BPTT的代碼如下:
該代碼解釋了難以訓(xùn)練RNN的原因:因?yàn)樾蛄校ň渥樱┖荛L(zhǎng),可能由20個(gè)或以上單詞組成,因此需反向傳播多層網(wǎng)絡(luò)。在實(shí)際操作時(shí),許多人會(huì)在反向傳播數(shù)步后進(jìn)行截?cái)喑杀容^長(zhǎng)的步驟,正如上面代碼中的bptt_truncate參數(shù)定義的那樣。
本教程的前面章節(jié)提到過RNN中,相隔數(shù)步的單詞間難以形成長(zhǎng)期依賴的問題。而英文句子的句意通常取決于相隔較遠(yuǎn)的單詞,例如“The man who wore a wig on his head went inside”的語(yǔ)意重心在于一個(gè)人走進(jìn)屋里,而非男人戴著假發(fā)。但普通的RNN難以捕獲此類信息。那么不妨通過分析上面計(jì)算出的梯度來(lái)一探究竟:
別忘了本身為鏈?zhǔn)椒▌t!例如,
。還要注意,我們?cè)趯?duì)向量函數(shù)的向量求導(dǎo),結(jié)果是一個(gè)矩陣(名為雅可比矩陣),所有元素均為逐點(diǎn)的導(dǎo)數(shù)。因此,上述梯度可重寫為:
然而,上述雅克比矩陣中2范數(shù)(可視為絕對(duì)值)的上限是1(此處不做證明)。直觀上,tanh激活函數(shù)將所有的值映射到-1到1這個(gè)區(qū)間,導(dǎo)數(shù)值也小于等于1(sigmoi函數(shù)的導(dǎo)數(shù)值小于等于1/4):
▲tanh及其導(dǎo)數(shù)。圖片源自:http://nn.readthedocs.org/en/rtd/transfer/
可以看到tanh和sigmoid函數(shù)在兩端的導(dǎo)數(shù)均為0,近乎呈直線狀(導(dǎo)數(shù)為0,函數(shù)圖像為直線),此種情況下可稱相應(yīng)的神經(jīng)元已經(jīng)飽和。兩函數(shù)的梯度為0,使前層的其它梯度也趨近于0。由于矩陣元素?cái)?shù)值較小,且矩陣相乘數(shù)次(t - k次)后,梯度值迅速以指數(shù)形式收縮(意思相近于,小數(shù)相乘,數(shù)值收縮,越來(lái)越小),最終在幾個(gè)時(shí)間步長(zhǎng)后完全消失。“較遠(yuǎn)”的時(shí)間步長(zhǎng)貢獻(xiàn)的梯度變?yōu)?,這些時(shí)間段的狀態(tài)不會(huì)對(duì)你的學(xué)習(xí)有所貢獻(xiàn):你最終還是無(wú)法學(xué)習(xí)長(zhǎng)期依賴。梯度消失不僅存在于循環(huán)神經(jīng)網(wǎng)絡(luò),也出現(xiàn)在深度前饋神經(jīng)網(wǎng)絡(luò)中。區(qū)別在于,循環(huán)神經(jīng)網(wǎng)絡(luò)非常深(本例中,深度與句長(zhǎng)相同),因此梯度消失問題更為常見。
不難想象,如果雅克比矩陣的值非常大,參照激活函數(shù)及網(wǎng)絡(luò)參數(shù)可能會(huì)出現(xiàn)梯度爆炸,即所謂的梯度爆炸問題。相較于梯度爆炸,梯度消失問題更受關(guān)注,主要有兩個(gè)原因:其一,梯度爆炸現(xiàn)象明顯,梯度會(huì)變成Nan(而并非數(shù)字),并出現(xiàn)程序崩潰;其二,在預(yù)定義閾值處將梯度截?cái)啵ㄔ斍檎?qǐng)見本文章)是一種解決梯度爆炸問題簡(jiǎn)單有效的方法。而梯度消失問題更為復(fù)雜,因?yàn)槠洮F(xiàn)象不明顯,且解決方案尚不明確。
幸運(yùn)的是,目前有一些方法可解決梯度消失問題。合理初始化矩陣 W可緩解梯度消失現(xiàn)象。還可采用正則化方法。此外,更好的方法是使用 ReLU,而非tanh或sigmoid激活函數(shù)。ReLU函數(shù)的導(dǎo)數(shù)是個(gè)常量,0或1,因此不太可能出現(xiàn)梯度消失現(xiàn)象。
更常用的方法是借助LSTM或GRU架構(gòu)。1997年,首次提出LSTM ,目前該模型在NLP領(lǐng)域的應(yīng)用極其廣泛。GRU則于2014年問世,是LSTM的簡(jiǎn)化版。這些循環(huán)神經(jīng)網(wǎng)絡(luò)旨在解決梯度消失和有效學(xué)習(xí)長(zhǎng)期依賴問題。相關(guān)介紹請(qǐng)見本教程下一部分。
好文章,需要你的鼓勵(lì)
騰訊ARC實(shí)驗(yàn)室推出AudioStory系統(tǒng),首次實(shí)現(xiàn)AI根據(jù)復(fù)雜指令創(chuàng)作完整長(zhǎng)篇音頻故事。該系統(tǒng)結(jié)合大語(yǔ)言模型的敘事推理能力與音頻生成技術(shù),通過交錯(cuò)式推理生成、解耦橋接機(jī)制和漸進(jìn)式訓(xùn)練,能夠?qū)?fù)雜指令分解為連續(xù)音頻場(chǎng)景并保持整體連貫性。在AudioStory-10K基準(zhǔn)測(cè)試中表現(xiàn)優(yōu)異,為AI音頻創(chuàng)作開辟新方向。
Meta與特拉維夫大學(xué)聯(lián)合研發(fā)的VideoJAM技術(shù),通過讓AI同時(shí)學(xué)習(xí)外觀和運(yùn)動(dòng)信息,顯著解決了當(dāng)前視頻生成模型中動(dòng)作不連貫、違反物理定律的核心問題。該技術(shù)僅需添加兩個(gè)線性層就能大幅提升運(yùn)動(dòng)質(zhì)量,在多項(xiàng)測(cè)試中超越包括Sora在內(nèi)的商業(yè)模型,為AI視頻生成的實(shí)用化應(yīng)用奠定了重要基礎(chǔ)。
上海AI實(shí)驗(yàn)室發(fā)布OmniAlign-V研究,首次系統(tǒng)性解決多模態(tài)大語(yǔ)言模型人性化對(duì)話問題。該研究創(chuàng)建了包含20萬(wàn)高質(zhì)量樣本的訓(xùn)練數(shù)據(jù)集和MM-AlignBench評(píng)測(cè)基準(zhǔn),通過創(chuàng)新的數(shù)據(jù)生成和質(zhì)量管控方法,讓AI在保持技術(shù)能力的同時(shí)顯著提升人性化交互水平,為AI價(jià)值觀對(duì)齊提供了可行技術(shù)路徑。
谷歌DeepMind團(tuán)隊(duì)開發(fā)的GraphCast是一個(gè)革命性的AI天氣預(yù)測(cè)模型,能夠在不到一分鐘內(nèi)完成10天全球天氣預(yù)報(bào),準(zhǔn)確性超越傳統(tǒng)方法90%的指標(biāo)。該模型采用圖神經(jīng)網(wǎng)絡(luò)技術(shù),通過學(xué)習(xí)40年歷史數(shù)據(jù)掌握天氣變化規(guī)律,在極端天氣預(yù)測(cè)方面表現(xiàn)卓越,能耗僅為傳統(tǒng)方法的千分之一,為氣象學(xué)領(lǐng)域帶來(lái)了效率和精度的雙重突破。