初識Recurrent Neural Network

本篇翻譯自Denny Britz(Google Brain Team成員)的RNN系列教程

RNN也就是Recurrent Neural Network,在語音識別,自然語言處理(NLP)等很多領域廣泛應用,人氣很高。這個系列教程包含以下:
1、RNN簡介(本文)
2、使用Python和Theano實現RNN
3、了解方向傳播算法和梯度消失問題
4、實施GRU/LSTM RNN

本文假設你對基本的神經網絡有所了解。

什么是RNN?

RNN是按照時間維度的展開,代表信息在時間維度從前往后的的傳遞和積累,后面的信息的概率建立在前面信息的基礎上,在神經網絡結構上表現為后面的神經網絡的隱藏層的輸入是前面的神經網絡的隱藏層的輸出。

假定所有輸入(輸出)是相互獨立的,那這對于許多任務來說是扎心的。比如你想預測一個句子中的下一個單詞,單詞之間都獨立還預測個DD,跟妹子陌路,還想拉拉小手。另外RNN稱為循環因為它們是對序列的每個元素執行相同的任務,輸出取決于先前的計算。考慮RNN的另一種方法是,它們有一個“記憶”,捕獲到目前為止所計算的信息。在理論上RNN可以以任意長的序列來使用信息,但在實踐中,它們僅限反向幾步。一個典型的RNN:


A recurrent neural network and the unfolding in time of the computation involved in its forward computation. Source: Nature

上圖顯示了RNN正展開成一個完整的網絡。展開意味著我們寫出了完整序列的網絡。例如,如果我們關心的序列是5個字的句子,則網絡將被展開為5層神經網絡,每個單詞一層。RNN中計算的公式如下:

  • Xt是輸入t的時間步長。X1可以是對應于句子的第二個單詞的ont-hot 向量。

  • St是時間t時的隱藏狀態。它是構建網絡的“記憶”。St是基于以前的隱藏狀態和當前步驟的輸入計算的:st = f(Uxt + Wst-1)。該函數F通常是非線性的,如tanh或ReLU。 s-1存在是為了計算第一個隱藏狀態,通常全被初始化為零。

  • Ot是在t時的輸出。例如,如果我們想預測一個句子中的下一個單詞,會輸出一個詞匯概率的向量。
    ot = softmax(Vst)
    這里有幾件事要注意:

  • 你可以將隱藏狀態ST視為網絡的記憶。ST捕獲所有先前time step中的信息。在時間t可以根據時間記憶計算出輸出Ot。如上所述,在實踐中有點復雜,因為ST通常無法從太長的時間捕獲信息。

  • 不同于傳統的深層神經網絡,其在每個層使用不同的參數,RNN 在所有步驟中共享相同的參數(U,V,W)。這反映了我們在每個步驟上執行相同的任務,只用不同的輸入。那這大大減少了我們學習的參數數量。

  • 上述圖表在每個time step都有輸出,但是根據任務,這不是必需的。例如,當預測句子的情緒時,我們可能只關心最終輸出,而不是每個單詞之后的情緒。類似地,我們可能不需要在每個time step都有輸入。RNN的主要特征是它的隱藏狀態并且能捕獲有關序列的一些信息。

RNN可以做什么?

在許多NLPtask中,RNN已經取得了巨大的成功。與此同時也想到了LSTM,是的它的長期依賴性要好于RNN。不用擔心的是LSTM與本教程中將要開發的RNN基本上是一樣的,它們只是具有不同的計算隱藏狀態的方法。我們將在稍后的文章中更詳細地介紹LSTM。以下是NLP中RNN的一些示例應用。

語言建模和生成文本

給定一系列單詞,我們想預測并給出先前任一單詞的概率。語言模型允許我們去衡量句子相似性,這是機器翻譯的重要輸入(因為高概率句子通常是正確的)。在能夠預測下一個單詞時會有一個slider-effect,它會得到一個生成模型,允許我們從輸出概率中抽樣生成新的文本。根據我們的訓練數據,我們可以生成各種各樣的東西。在語言建模中,我們的輸入通常是一系列單詞(例如,編碼為one-hot),我們的輸出是預測單詞的序列。我們構造ot = xt + 1可以在step t中的輸出單詞是實際中我們想要的。

關于語言建模和生成文本的研究論文:

機器翻譯

機器翻譯類似于語言建模,因為我們的輸入是一系列單詞(例如德語),輸出的是一系列的單詞(比如中文)。一個關鍵的區別是,我們的輸出只有在我們看到完整的輸入之后開始,因為翻譯的句子的第一個單詞可能需要從完整輸入序列中才能獲取。


機器翻譯RNN。圖片來源:http://cs224d.stanford.edu/lectures/CS224d-Lecture8.pdf

機器翻譯研究論文

語音識別

給定來自聲波的聲信號的輸入序列,我們可以預測語音段的序列及其概率。

關于語音識別的研究論文:

生成圖像說明

與卷積神經網絡一起,RNN已被用作模型的一部分,以生成未標記圖像的描述。這是非常驚人的,這似乎是有效的。組合模型甚至將生成的單詞與圖像中發現的特征對齊。

Deep Visual-Semantic Alignments for Generating Image Descriptions. Source: http://cs.stanford.edu/people/karpathy/deepimagesent/
Deep Visual-Semantic Alignments for Generating Image Descriptions. Source: http://cs.stanford.edu/people/karpathy/deepimagesent/

如何訓練RNN

看了上面,RNN這么牛逼,那么怎么實現呢,不要著急,其實它類似訓練傳統的神經網絡,我們也使用反向傳播算法,不過是變化了下,由于參數由網絡中的所有time step共享,每個輸出的梯度不僅取決于當前time step的計算,而且還取決于以前的tiem step。例如,計算t = 4的梯度我們需要按照時間序列反向計算3個然后累加起來就是第四個時間的梯度,這稱為基于時間的反向傳播算法(BPTT)。要注意的是:RNNs的當層級比較多時(相距很遠的步驟之間存在依賴關系)由于梯度消失/爆炸問題在訓練上會存在一定的學習困難。當然,在業內也設計了一些類型(如LSTMs)避開這些問題。

RNN擴展

多年來,研究人員開發了更復雜類型的RNN來處理RNN模型的一些缺點。我們將在稍后的文章中更詳細地介紹這些內容,但是我希望本節作為簡概,可以讓讀者熟悉一些模型的分類。

  • 雙向RNNs(Bidirectional RNNs) 是一種當前時刻不僅僅取決于以前時刻同時還取決于未來時刻的RNN變體。舉個例子, 比如我的一段文本不僅僅和前面有關系, 還和后面有一定的關系,要預測序列中缺少的單詞,你要查看左側和右側上下文。雙向RNN非常簡單,你理解兩個堆疊在一起的RNN。然后基于兩個RNN的隱藏狀態來計算輸出。
  • LSTM RNNs(LSTM networks)是近幾年比較火的一種RNN變體, 實際上也是運用最為廣泛的一種形式, 它克服了梯度衰減問題, 這個問題在NN中也同樣存在, LSTM本身也有變體, 至少不下十幾種形式, 但是本質都差不多.

我的
簡書地址
uqlai`blog

擴展閱讀:
循環神經網絡(Recurrent)——介紹

翻譯原文地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379

推薦閱讀更多精彩內容