來自硅谷工程師的Google TensorFlow教程:開始訓練你的第一個RNN吧》,有讀者反饋希望了解更多關于RNN的相關內容。因此,在接下來的幾周中,科技行者為大家準備了一套RNN系列的入門教程,供大家參考。
4.建立基于門控循環(huán)單元(GRU)或者長短時記憶(LSTM)的RNN模型
那么今天,我們將先對RNN做一個基本介紹。
在這一教程里,我們將會建立一個基于RNN的語言模型。語言模型的應用有雙重目的:第一,可以根據句子在現(xiàn)實中出現(xiàn)的可能性和概率對任意句子進行評分。這給了我們語法和語義上的度量,在機器翻譯系統(tǒng)中,這類模型非常常見。第二,一個語言模型可以生成新文本。例如,Andrej Karpathy的這篇博文(http://karpathy.github.io/2015/05/21/rnn-effectiveness/)就展示了RNN模型的作用和有效性,它可以訓練莎士比亞的詩集,從而生成類似莎士比亞詩集的文本。
在開始本次教程前,需要您對神經網絡(NNs)的基本概念有了一定的了解。神經網絡是是一種應用類似于大腦神經突觸聯(lián)接的結構進行信息處理的數(shù)學模型。
-1-
何為RNN?
RNN的本質概念是利用時序信息,在傳統(tǒng)神經網絡中,假設所有的輸入(以及輸出)都各自獨立。但是,對于很多任務而言,這非常局限。舉個例子,假如你想根據一句沒說完的話,預測下一個單詞,最好的辦法就是聯(lián)系上下文的信息。而RNN(循環(huán)神經網絡)之所以是“循環(huán)”,是因為它們對序列的每個元素執(zhí)行相同的任務,而每次的結果都獨立于之前的計算。
另一種思考RNN的方式是,它擁有“記憶”模塊,可以獲取已經計算過的信息。理論上講,RNN可以利用任意長度的序列信息,但只可以利用有限的前幾步的信息。
下面便是一個典型的RNN模型:
上圖顯示的是RNN模型全部展開時的情況。“展開”指的是用網絡描述出所有序列。
例如,如果序列中的句子有5個單詞,那么,橫向展開網絡后將有五層神經網絡,一層對應一個單詞。
下面解釋一下其中的計算公式:
需要注意的有幾點:
-2-
RNN有何用處?
在眾多自然語言處理的任務中,RNN已經取得了巨大成功。這里,需要指出的是RNN中最常用的類型是長短時記憶(LSTMs)模型,相比較于原始的RNN,LSTM可以存儲更長的時序信息。并且,本教程中LSTM在本質上和我們所要開發(fā)的RNN是一致的,只不過LSTM計算隱藏狀態(tài)的方式有所不同。在下一個教程中,我們將會更詳細地講解LSTM。
接下來,我們主要介紹一下在自然語言處理中應用RNN的例子:
2.1 語言建模和文本生成
通過訓練RNN模型,我們可以基于給出的一個單詞序列,預測下一個單詞。這對于語言建模和文本生成而言是非常有價值的。
同時,語言模型可以用于評估一個句子出現(xiàn)的可能性,這對機器翻譯而言也是非常重要的(因為高概率的句子通常是正確的)。
能夠預測下一個單詞出現(xiàn)的概率,那是因為我們所得到的衍生模型能夠根據輸出的可能性來生成新文本。而根據我們的訓練數(shù)據,模型還可以得到所有類型的文本。在語言建模中,我們的輸入屬于典型的單詞序列(例如利用one-hot載體進行編碼),而在訓練該神經網絡時,我們希望t時刻的輸出是精確的,因此,我們會設定。
下面是關于語言建模和文本生成的研究論文:
Recurrent neural network based language model
《基于循環(huán)神經網絡的語言模型》
Extensions of Recurrent neural network based language model
《基于循環(huán)神經網絡拓展的語言模型》
Generating Text with Recurrent Neural Networks
《利用循環(huán)神經網絡生成文本》
2.2 機器翻譯
機器翻譯類似于語言建模,我們首先輸入源語(例如德語),需要輸出是目標語(例如英語)。關鍵區(qū)別是,在機器翻譯中,翻譯的第一個字可能會需要所有已輸入句子的信息,所以只有看到全部輸入之后才能輸出。
▲ 上圖是用于機器翻譯的RNN模型
圖片來源:http://cs224d.stanford.edu/lectures/CS224d-Lecture8.pdf
下面是關于機器翻譯的研究論文:
A Recursive Recurrent Neural Network for Statistical Machine Translation
《用于統(tǒng)計類機器翻譯的遞歸型循環(huán)神經網絡》
Sequence to Sequence Learning with Neural Networks
《利用神經網絡進行序列至序列的學習》
Joint Language and Translation Modeling with Recurrent Neural Networks
《利用循環(huán)神經網絡進行語言和翻譯的建?!?br />
2.3 語音識別
根據從聲音中得到的一系列聲波信號,并以此作為輸入,可以預測出一系列語音片段及其可能性。
下面是關于語音識別的研究論文:
Towards End-to-End Speech Recognition with Recurrent Neural Networks
《利用循環(huán)神經網絡進行端對端的語音識別》
2.4 生成圖片的文字描述
和CNN(卷積神經網絡)一樣,RNN也被應用于生成描述未被標簽的圖片模型。并且,兩者結合的模型組合甚至可以依據圖片特征排列生成文字,以及圖片中特征的對應位置。如下圖:
▲用于生成圖像描述的深度視覺 - 語義示例
來源:http://cs.stanford.edu/people/karpathy/deepimagesent/
2.5 訓練RNN模型
訓練RNN模型與訓練傳統(tǒng)的神經網絡類似。我們同樣采用反向傳播算法,但也有不同。因為在RNN中,橫向展開的每一層都是共享權重的,每一個輸出的梯度(gradient)不僅僅依賴于當下這個時間點,還依賴于過去的時間點。舉個例子,想要計算時間點t=4的梯度,我們需要反向傳播3個時間點,并把梯度相加。這個算法就叫做BPTT(Backpropagation Through Time)?,F(xiàn)在只需要知道,BPTT算法本身是有局限性的,它不能長期記憶,還會引起梯度消失和梯度爆炸問題,LSTM就是用來解決這個問題的。
2.6 RNN模型的拓展
多年以來,為了克服傳統(tǒng)循環(huán)神經網絡(vanilla RNN)的弱點,研究人員已經開發(fā)出更多統(tǒng)計型的循環(huán)神經網絡。之后的部分,我們將更細致地對此進行講解,但是,我希望這部分概要有助于大致了解一下模型分類。下面是一些典型的模型:
雙向循環(huán)神經網絡(Bidirectional RNN)的理念是,時間t時的輸出不僅僅取決于過去的記憶,也同樣取決于后面發(fā)生的事情。例如,某一序列中,想要預測一個單詞,會聯(lián)系前文和后文。雙向循環(huán)神經網絡便是如此簡單。僅僅是兩套循環(huán)神經網絡前后交疊在一起而已。輸出的計算結果便基于這兩套循環(huán)神經網絡的隱藏狀態(tài)。如下圖:
深度(雙向)(Deep (Bidirectional) RNN)循環(huán)神經網絡類似于雙向循環(huán)神經網絡,只不過是每個時長內都有多層。實際上,這一點意味著它有更強的學習能力(但是相應地,也需要大量訓練數(shù)據)。
LSTM網絡:近來,LSTM非常流行。本質上,LSTM與RNN的基礎架構并無不同,但是,LSTM在計算隱藏狀態(tài)時會采用不同的函數(shù)。LSTM中的記憶被稱為“細胞”,而可以把這些“細胞”視作黑匣子,記憶之前狀態(tài)為的輸入和當前為x_t的輸入。本質上,這些“細胞”將決定將保留或剔除相關記憶,“細胞”可以整合之前的狀態(tài)、當前的記憶和輸入。而結果證明,對于長期的記憶來說,這些單元的類型非常高效。
-3-
總結
希望通過第一篇教程,你已經對RNN的定義和作用有了一個基本的了解。下周,我們將介紹如何利用Python和Theano建立起第一個基于RNN的語言模型。
好文章,需要你的鼓勵
浙江大學團隊提出動態(tài)專家搜索方法,讓AI能根據不同問題靈活調整內部專家配置。該方法在數(shù)學、編程等任務上顯著提升推理準確率,且不增加計算成本。研究發(fā)現(xiàn)不同類型問題偏愛不同專家配置,為AI推理優(yōu)化開辟新路徑。
清華大學研究團隊提出SIRI方法,通過"壓縮-擴張"交替訓練策略,成功解決了大型推理模型"話多且準確率低"的問題。實驗顯示,該方法在數(shù)學競賽題上將模型準確率提升43.2%的同時,輸出長度減少46.9%,真正實現(xiàn)了效率與性能的雙重優(yōu)化,為AI模型訓練提供了新思路。
南洋理工大學與騰訊聯(lián)合研究團隊開發(fā)出Rolling Forcing技術,實現(xiàn)AI視頻實時流式生成的重大突破。該技術通過滾動窗口聯(lián)合去噪、注意力錨點機制和高效訓練算法三項創(chuàng)新,解決了長視頻生成中的錯誤累積問題,可在單GPU上以16fps速度生成多分鐘高質量視頻,延遲僅0.76秒,質量漂移指標從傳統(tǒng)方法的1.66降至0.01,為交互式媒體和內容創(chuàng)作開辟新可能。
華中科技大學研究團隊發(fā)現(xiàn),通過讓AI模型學習解決幾何問題,能夠顯著提升其空間理解能力。他們構建了包含約30000個幾何題目的Euclid30K數(shù)據集,使用強化學習方法訓練多個AI模型。實驗結果顯示,幾何訓練在四個空間智能測試基準上都帶來顯著提升,其中最佳模型達到49.6%準確率,超越此前最好成績。這項研究揭示了基礎幾何知識對培養(yǎng)AI空間智能的重要價值。