來自硅谷工程師的Google TensorFlow教程:開始訓(xùn)練你的第一個(gè)RNN吧》,有讀者反饋希望了解更多關(guān)于RNN的相關(guān)內(nèi)容。因此,在接下來的幾周中,科技行者為大家準(zhǔn)備了一套R(shí)NN系列的入門教程,供大家參考。
4.建立基于門控循環(huán)單元(GRU)或者長(zhǎng)短時(shí)記憶(LSTM)的RNN模型
那么今天,我們將先對(duì)RNN做一個(gè)基本介紹。
在這一教程里,我們將會(huì)建立一個(gè)基于RNN的語言模型。語言模型的應(yīng)用有雙重目的:第一,可以根據(jù)句子在現(xiàn)實(shí)中出現(xiàn)的可能性和概率對(duì)任意句子進(jìn)行評(píng)分。這給了我們語法和語義上的度量,在機(jī)器翻譯系統(tǒng)中,這類模型非常常見。第二,一個(gè)語言模型可以生成新文本。例如,Andrej Karpathy的這篇博文(http://karpathy.github.io/2015/05/21/rnn-effectiveness/)就展示了RNN模型的作用和有效性,它可以訓(xùn)練莎士比亞的詩集,從而生成類似莎士比亞詩集的文本。
在開始本次教程前,需要您對(duì)神經(jīng)網(wǎng)絡(luò)(NNs)的基本概念有了一定的了解。神經(jīng)網(wǎng)絡(luò)是是一種應(yīng)用類似于大腦神經(jīng)突觸聯(lián)接的結(jié)構(gòu)進(jìn)行信息處理的數(shù)學(xué)模型。
-1-
何為RNN?
RNN的本質(zhì)概念是利用時(shí)序信息,在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中,假設(shè)所有的輸入(以及輸出)都各自獨(dú)立。但是,對(duì)于很多任務(wù)而言,這非常局限。舉個(gè)例子,假如你想根據(jù)一句沒說完的話,預(yù)測(cè)下一個(gè)單詞,最好的辦法就是聯(lián)系上下文的信息。而RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))之所以是“循環(huán)”,是因?yàn)樗鼈儗?duì)序列的每個(gè)元素執(zhí)行相同的任務(wù),而每次的結(jié)果都獨(dú)立于之前的計(jì)算。
另一種思考RNN的方式是,它擁有“記憶”模塊,可以獲取已經(jīng)計(jì)算過的信息。理論上講,RNN可以利用任意長(zhǎng)度的序列信息,但只可以利用有限的前幾步的信息。
下面便是一個(gè)典型的RNN模型:
上圖顯示的是RNN模型全部展開時(shí)的情況。“展開”指的是用網(wǎng)絡(luò)描述出所有序列。
例如,如果序列中的句子有5個(gè)單詞,那么,橫向展開網(wǎng)絡(luò)后將有五層神經(jīng)網(wǎng)絡(luò),一層對(duì)應(yīng)一個(gè)單詞。
下面解釋一下其中的計(jì)算公式:
需要注意的有幾點(diǎn):
-2-
RNN有何用處?
在眾多自然語言處理的任務(wù)中,RNN已經(jīng)取得了巨大成功。這里,需要指出的是RNN中最常用的類型是長(zhǎng)短時(shí)記憶(LSTMs)模型,相比較于原始的RNN,LSTM可以存儲(chǔ)更長(zhǎng)的時(shí)序信息。并且,本教程中LSTM在本質(zhì)上和我們所要開發(fā)的RNN是一致的,只不過LSTM計(jì)算隱藏狀態(tài)的方式有所不同。在下一個(gè)教程中,我們將會(huì)更詳細(xì)地講解LSTM。
接下來,我們主要介紹一下在自然語言處理中應(yīng)用RNN的例子:
2.1 語言建模和文本生成
通過訓(xùn)練RNN模型,我們可以基于給出的一個(gè)單詞序列,預(yù)測(cè)下一個(gè)單詞。這對(duì)于語言建模和文本生成而言是非常有價(jià)值的。
同時(shí),語言模型可以用于評(píng)估一個(gè)句子出現(xiàn)的可能性,這對(duì)機(jī)器翻譯而言也是非常重要的(因?yàn)楦吒怕实木渥油ǔJ钦_的)。
能夠預(yù)測(cè)下一個(gè)單詞出現(xiàn)的概率,那是因?yàn)槲覀兯玫降难苌P湍軌蚋鶕?jù)輸出的可能性來生成新文本。而根據(jù)我們的訓(xùn)練數(shù)據(jù),模型還可以得到所有類型的文本。在語言建模中,我們的輸入屬于典型的單詞序列(例如利用one-hot載體進(jìn)行編碼),而在訓(xùn)練該神經(jīng)網(wǎng)絡(luò)時(shí),我們希望t時(shí)刻的輸出是精確的,因此,我們會(huì)設(shè)定。
下面是關(guān)于語言建模和文本生成的研究論文:
Recurrent neural network based language model
《基于循環(huán)神經(jīng)網(wǎng)絡(luò)的語言模型》
Extensions of Recurrent neural network based language model
《基于循環(huán)神經(jīng)網(wǎng)絡(luò)拓展的語言模型》
Generating Text with Recurrent Neural Networks
《利用循環(huán)神經(jīng)網(wǎng)絡(luò)生成文本》
2.2 機(jī)器翻譯
機(jī)器翻譯類似于語言建模,我們首先輸入源語(例如德語),需要輸出是目標(biāo)語(例如英語)。關(guān)鍵區(qū)別是,在機(jī)器翻譯中,翻譯的第一個(gè)字可能會(huì)需要所有已輸入句子的信息,所以只有看到全部輸入之后才能輸出。
▲ 上圖是用于機(jī)器翻譯的RNN模型
圖片來源:http://cs224d.stanford.edu/lectures/CS224d-Lecture8.pdf
下面是關(guān)于機(jī)器翻譯的研究論文:
A Recursive Recurrent Neural Network for Statistical Machine Translation
《用于統(tǒng)計(jì)類機(jī)器翻譯的遞歸型循環(huán)神經(jīng)網(wǎng)絡(luò)》
Sequence to Sequence Learning with Neural Networks
《利用神經(jīng)網(wǎng)絡(luò)進(jìn)行序列至序列的學(xué)習(xí)》
Joint Language and Translation Modeling with Recurrent Neural Networks
《利用循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行語言和翻譯的建?!?br />
2.3 語音識(shí)別
根據(jù)從聲音中得到的一系列聲波信號(hào),并以此作為輸入,可以預(yù)測(cè)出一系列語音片段及其可能性。
下面是關(guān)于語音識(shí)別的研究論文:
Towards End-to-End Speech Recognition with Recurrent Neural Networks
《利用循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行端對(duì)端的語音識(shí)別》
2.4 生成圖片的文字描述
和CNN(卷積神經(jīng)網(wǎng)絡(luò))一樣,RNN也被應(yīng)用于生成描述未被標(biāo)簽的圖片模型。并且,兩者結(jié)合的模型組合甚至可以依據(jù)圖片特征排列生成文字,以及圖片中特征的對(duì)應(yīng)位置。如下圖:
▲用于生成圖像描述的深度視覺 - 語義示例
來源:http://cs.stanford.edu/people/karpathy/deepimagesent/
2.5 訓(xùn)練RNN模型
訓(xùn)練RNN模型與訓(xùn)練傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)類似。我們同樣采用反向傳播算法,但也有不同。因?yàn)樵赗NN中,橫向展開的每一層都是共享權(quán)重的,每一個(gè)輸出的梯度(gradient)不僅僅依賴于當(dāng)下這個(gè)時(shí)間點(diǎn),還依賴于過去的時(shí)間點(diǎn)。舉個(gè)例子,想要計(jì)算時(shí)間點(diǎn)t=4的梯度,我們需要反向傳播3個(gè)時(shí)間點(diǎn),并把梯度相加。這個(gè)算法就叫做BPTT(Backpropagation Through Time)?,F(xiàn)在只需要知道,BPTT算法本身是有局限性的,它不能長(zhǎng)期記憶,還會(huì)引起梯度消失和梯度爆炸問題,LSTM就是用來解決這個(gè)問題的。
2.6 RNN模型的拓展
多年以來,為了克服傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)(vanilla RNN)的弱點(diǎn),研究人員已經(jīng)開發(fā)出更多統(tǒng)計(jì)型的循環(huán)神經(jīng)網(wǎng)絡(luò)。之后的部分,我們將更細(xì)致地對(duì)此進(jìn)行講解,但是,我希望這部分概要有助于大致了解一下模型分類。下面是一些典型的模型:
雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(Bidirectional RNN)的理念是,時(shí)間t時(shí)的輸出不僅僅取決于過去的記憶,也同樣取決于后面發(fā)生的事情。例如,某一序列中,想要預(yù)測(cè)一個(gè)單詞,會(huì)聯(lián)系前文和后文。雙向循環(huán)神經(jīng)網(wǎng)絡(luò)便是如此簡(jiǎn)單。僅僅是兩套循環(huán)神經(jīng)網(wǎng)絡(luò)前后交疊在一起而已。輸出的計(jì)算結(jié)果便基于這兩套循環(huán)神經(jīng)網(wǎng)絡(luò)的隱藏狀態(tài)。如下圖:
深度(雙向)(Deep (Bidirectional) RNN)循環(huán)神經(jīng)網(wǎng)絡(luò)類似于雙向循環(huán)神經(jīng)網(wǎng)絡(luò),只不過是每個(gè)時(shí)長(zhǎng)內(nèi)都有多層。實(shí)際上,這一點(diǎn)意味著它有更強(qiáng)的學(xué)習(xí)能力(但是相應(yīng)地,也需要大量訓(xùn)練數(shù)據(jù))。
LSTM網(wǎng)絡(luò):近來,LSTM非常流行。本質(zhì)上,LSTM與RNN的基礎(chǔ)架構(gòu)并無不同,但是,LSTM在計(jì)算隱藏狀態(tài)時(shí)會(huì)采用不同的函數(shù)。LSTM中的記憶被稱為“細(xì)胞”,而可以把這些“細(xì)胞”視作黑匣子,記憶之前狀態(tài)為的輸入和當(dāng)前為x_t的輸入。本質(zhì)上,這些“細(xì)胞”將決定將保留或剔除相關(guān)記憶,“細(xì)胞”可以整合之前的狀態(tài)、當(dāng)前的記憶和輸入。而結(jié)果證明,對(duì)于長(zhǎng)期的記憶來說,這些單元的類型非常高效。
-3-
總結(jié)
希望通過第一篇教程,你已經(jīng)對(duì)RNN的定義和作用有了一個(gè)基本的了解。下周,我們將介紹如何利用Python和Theano建立起第一個(gè)基于RNN的語言模型。
好文章,需要你的鼓勵(lì)
騰訊ARC實(shí)驗(yàn)室推出AudioStory系統(tǒng),首次實(shí)現(xiàn)AI根據(jù)復(fù)雜指令創(chuàng)作完整長(zhǎng)篇音頻故事。該系統(tǒng)結(jié)合大語言模型的敘事推理能力與音頻生成技術(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)大語言模型人性化對(duì)話問題。該研究創(chuàng)建了包含20萬高質(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)域帶來了效率和精度的雙重突破。