av天堂久久天堂色综合,最近中文字幕mv免费高清在线,在线a级毛片免费视频,av动漫,中文字幕精品亚洲无线码一区

微信掃一掃,關(guān)注公眾號

  • 科技行者

  • 算力行者

見證連接與計算的「力量」

首頁 來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹

來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹

2017-11-08 12:19
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2017-11-08 12:19 ? CNET科技行者

來自硅谷工程師的Google TensorFlow教程:開始訓練你的第一個RNN吧》,有讀者反饋希望了解更多關(guān)于RNN的相關(guān)內(nèi)容。因此,在接下來的幾周中,科技行者為大家準備了一套RNN系列的入門教程,供大家參考。

4.建立基于門控循環(huán)單元(GRU)或者長短時記憶(LSTM)的RNN模型

那么今天,我們將先對RNN做一個基本介紹。

在這一教程里,我們將會建立一個基于RNN的語言模型。語言模型的應用有雙重目的:第一,可以根據(jù)句子在現(xiàn)實中出現(xiàn)的可能性和概率對任意句子進行評分。這給了我們語法和語義上的度量,在機器翻譯系統(tǒng)中,這類模型非常常見。第二,一個語言模型可以生成新文本。例如,Andrej Karpathy的這篇博文(http://karpathy.github.io/2015/05/21/rnn-effectiveness/)就展示了RNN模型的作用和有效性,它可以訓練莎士比亞的詩集,從而生成類似莎士比亞詩集的文本。

在開始本次教程前,需要您對神經(jīng)網(wǎng)絡(NNs)的基本概念有了一定的了解。神經(jīng)網(wǎng)絡是是一種應用類似于大腦神經(jīng)突觸聯(lián)接的結(jié)構(gòu)進行信息處理的數(shù)學模型。

-1-

何為RNN?

RNN的本質(zhì)概念是利用時序信息,在傳統(tǒng)神經(jīng)網(wǎng)絡中,假設所有的輸入(以及輸出)都各自獨立。但是,對于很多任務而言,這非常局限。舉個例子,假如你想根據(jù)一句沒說完的話,預測下一個單詞,最好的辦法就是聯(lián)系上下文的信息。而RNN(循環(huán)神經(jīng)網(wǎng)絡)之所以是“循環(huán)”,是因為它們對序列的每個元素執(zhí)行相同的任務,而每次的結(jié)果都獨立于之前的計算。

另一種思考RNN的方式是,它擁有“記憶”模塊,可以獲取已經(jīng)計算過的信息。理論上講,RNN可以利用任意長度的序列信息,但只可以利用有限的前幾步的信息。

下面便是一個典型的RNN模型:

來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹

上圖顯示的是RNN模型全部展開時的情況。“展開”指的是用網(wǎng)絡描述出所有序列。

例如,如果序列中的句子有5個單詞,那么,橫向展開網(wǎng)絡后將有五層神經(jīng)網(wǎng)絡,一層對應一個單詞。

下面解釋一下其中的計算公式:

  • 來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹是在時刻t時的輸入。例如,來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹對應于一個句子的第二個詞的實數(shù)向量
  • 來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹是在時刻t時的隱藏狀態(tài),類似于網(wǎng)絡的“大腦”,也就是“記憶模塊”的值
  • 來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹的運算是基于以前隱藏狀態(tài)來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹和當前的輸入來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹決定的,公式為:.其中,通常是非線性的,例如,tanh or ReLU函數(shù)。在計算第一個隱藏狀態(tài)時,初始值通常設為0.
  • 來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹是時刻t時的輸出結(jié)果。如,預推測句子中的下一個詞,那么在這里的輸出就可以表示為一個詞典序列,值為每一個詞的概率。公式為來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹

需要注意的有幾點:

  • 你可以將隱藏狀態(tài)作為神經(jīng)網(wǎng)絡的記憶單元。記錄了前面步驟的信息。在時刻t時的輸出結(jié)果僅僅計算了時間t時的記憶信息。但如前面說的,實際操作中會有些復雜,因為不能從以前的時段中捕捉到太多信息。
  • 傳統(tǒng)DNN(深度神經(jīng)網(wǎng)絡)模型一般在不同層采用不同參數(shù)權(quán)重,與之不同,RNN在各層的參數(shù)是一樣的(如上述的U、V、W等)。這意味著這個模型對于每一步的作用是一致的,只是輸入不同。這樣的方式大幅降低了需要學習的參數(shù)總數(shù),減少了很多計算量。
  • 在上面的圖片中顯示,不同的時間節(jié)點會產(chǎn)生不同的結(jié)構(gòu)輸出。但是,不同任務中,有一些輸出則是多余的。例如,在情感分析里,我們只關(guān)心這個句子最終表達的情緒,而不是每一個單詞表達的情緒。同樣的,也不是必須得在每一個時間點都有輸入。

-2-
RNN
有何用處?

在眾多自然語言處理的任務中,RNN已經(jīng)取得了巨大成功。這里,需要指出的是RNN中最常用的類型是長短時記憶(LSTMs)模型,相比較于原始的RNN,LSTM可以存儲更長的時序信息。并且,本教程中LSTM在本質(zhì)上和我們所要開發(fā)的RNN是一致的,只不過LSTM計算隱藏狀態(tài)的方式有所不同。在下一個教程中,我們將會更詳細地講解LSTM。

接下來,我們主要介紹一下在自然語言處理中應用RNN的例子:

2.1 語言建模和文本生成

通過訓練RNN模型,我們可以基于給出的一個單詞序列,預測下一個單詞。這對于語言建模和文本生成而言是非常有價值的。

同時,語言模型可以用于評估一個句子出現(xiàn)的可能性,這對機器翻譯而言也是非常重要的(因為高概率的句子通常是正確的)。

能夠預測下一個單詞出現(xiàn)的概率,那是因為我們所得到的衍生模型能夠根據(jù)輸出的可能性來生成新文本。而根據(jù)我們的訓練數(shù)據(jù),模型還可以得到所有類型的文本。在語言建模中,我們的輸入屬于典型的單詞序列(例如利用one-hot載體進行編碼),而在訓練該神經(jīng)網(wǎng)絡時,我們希望t時刻的輸出是精確的,因此,我們會設定。

下面是關(guān)于語言建模和文本生成的研究論文:

Recurrent neural network based language model
《基于循環(huán)神經(jīng)網(wǎng)絡的語言模型》

Extensions of Recurrent neural network based language model
《基于循環(huán)神經(jīng)網(wǎng)絡拓展的語言模型》

Generating Text with Recurrent Neural Networks
《利用循環(huán)神經(jīng)網(wǎng)絡生成文本》

2.2 機器翻譯

機器翻譯類似于語言建模,我們首先輸入源語(例如德語),需要輸出是目標語(例如英語)。關(guān)鍵區(qū)別是,在機器翻譯中,翻譯的第一個字可能會需要所有已輸入句子的信息,所以只有看到全部輸入之后才能輸出。

來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹

▲ 上圖是用于機器翻譯的RNN模型

圖片來源:http://cs224d.stanford.edu/lectures/CS224d-Lecture8.pdf

下面是關(guān)于機器翻譯的研究論文:

A Recursive Recurrent Neural Network for Statistical Machine Translation

《用于統(tǒng)計類機器翻譯的遞歸型循環(huán)神經(jīng)網(wǎng)絡》

Sequence to Sequence Learning with Neural Networks

《利用神經(jīng)網(wǎng)絡進行序列至序列的學習》
Joint Language and Translation Modeling with Recurrent Neural Networks

《利用循環(huán)神經(jīng)網(wǎng)絡進行語言和翻譯的建?!?br />
2.3 語音識別

根據(jù)從聲音中得到的一系列聲波信號,并以此作為輸入,可以預測出一系列語音片段及其可能性。

下面是關(guān)于語音識別的研究論文:

Towards End-to-End Speech Recognition with Recurrent Neural Networks

《利用循環(huán)神經(jīng)網(wǎng)絡進行端對端的語音識別》

2.4 生成圖片的文字描述

和CNN(卷積神經(jīng)網(wǎng)絡)一樣,RNN也被應用于生成描述未被標簽的圖片模型。并且,兩者結(jié)合的模型組合甚至可以依據(jù)圖片特征排列生成文字,以及圖片中特征的對應位置。如下圖:

來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹

▲用于生成圖像描述的深度視覺 - 語義示例

來源:http://cs.stanford.edu/people/karpathy/deepimagesent/

2.5 訓練RNN模型

訓練RNN模型與訓練傳統(tǒng)的神經(jīng)網(wǎng)絡類似。我們同樣采用反向傳播算法,但也有不同。因為在RNN中,橫向展開的每一層都是共享權(quán)重的,每一個輸出的梯度(gradient)不僅僅依賴于當下這個時間點,還依賴于過去的時間點。舉個例子,想要計算時間點t=4的梯度,我們需要反向傳播3個時間點,并把梯度相加。這個算法就叫做BPTT(Backpropagation Through Time)?,F(xiàn)在只需要知道,BPTT算法本身是有局限性的,它不能長期記憶,還會引起梯度消失和梯度爆炸問題,LSTM就是用來解決這個問題的。

2.6 RNN模型的拓展

多年以來,為了克服傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(vanilla RNN)的弱點,研究人員已經(jīng)開發(fā)出更多統(tǒng)計型的循環(huán)神經(jīng)網(wǎng)絡。之后的部分,我們將更細致地對此進行講解,但是,我希望這部分概要有助于大致了解一下模型分類。下面是一些典型的模型:

雙向循環(huán)神經(jīng)網(wǎng)絡(Bidirectional RNN的理念是,時間t時的輸出不僅僅取決于過去的記憶,也同樣取決于后面發(fā)生的事情。例如,某一序列中,想要預測一個單詞,會聯(lián)系前文和后文。雙向循環(huán)神經(jīng)網(wǎng)絡便是如此簡單。僅僅是兩套循環(huán)神經(jīng)網(wǎng)絡前后交疊在一起而已。輸出的計算結(jié)果便基于這兩套循環(huán)神經(jīng)網(wǎng)絡的隱藏狀態(tài)。如下圖:

來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹

深度(雙向)(Deep (Bidirectional) RNN循環(huán)神經(jīng)網(wǎng)絡類似于雙向循環(huán)神經(jīng)網(wǎng)絡,只不過是每個時長內(nèi)都有多層。實際上,這一點意味著它有更強的學習能力(但是相應地,也需要大量訓練數(shù)據(jù))。

來自谷歌大腦工程師的RNN系列教程 | RNN的基本介紹

LSTM網(wǎng)絡:近來,LSTM非常流行。本質(zhì)上,LSTM與RNN的基礎架構(gòu)并無不同,但是,LSTM在計算隱藏狀態(tài)時會采用不同的函數(shù)。LSTM中的記憶被稱為“細胞”,而可以把這些“細胞”視作黑匣子,記憶之前狀態(tài)為的輸入和當前為x_t的輸入。本質(zhì)上,這些“細胞”將決定將保留或剔除相關(guān)記憶,“細胞”可以整合之前的狀態(tài)、當前的記憶和輸入。而結(jié)果證明,對于長期的記憶來說,這些單元的類型非常高效。

-3-

總結(jié)

希望通過第一篇教程,你已經(jīng)對RNN的定義和作用有了一個基本的了解。下周,我們將介紹如何利用Python和Theano建立起第一個基于RNN的語言模型

相關(guān)研究論文獲取方式:關(guān)注科技行者公眾號(itechwalker),并打開對話界面,回復關(guān)鍵字“RNN論文”,即可獲得下載地址。

| 來源:WILDML;作者:Denny Britz;編譯:科技行者

分享至
0贊

好文章,需要你的鼓勵

推薦文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-