0
雷鋒網按:本文為雷鋒字幕組編譯的技術博客,原文名 Understanding RNNs using the game of Chinese whispers ,作者 Eniola Alese。
翻譯 | 陳濤 整理 | 吳璇
循環(huán)神經網絡(RNN)是人工神經網絡中非常流行的一個版本,其可以很好地處理序列數(shù)據類型。該數(shù)據類型指的是將一組數(shù)據點以特定順序排列,從而使相關的數(shù)據點一個挨著一個,具體的例子有:股票市場價格、音頻和視頻數(shù)據、DNA 序列、傳感器數(shù)據、自然語言文本等等。
為了直觀地了解 RNN 是如何工作的,假設我們正在玩一個很受歡迎的兒童游戲——中文傳話。該游戲的目的是最后一個人能準確預測出句子中所漏掉的詞語,比如「The brown dog has four _____」。
中文傳話游戲
玩家們需要排成一隊,并且根據句子中詞語的排列,每個人都會得到其中的一個詞語,比如玩家 1 得到詞語「the」,玩家 2 得到詞語「brown」,玩家 3 得到詞語「dog」,以此類推。首先,隊伍中的第一個人把他聽到的詞語悄悄地告訴隊伍中站在他身后的玩家。然后這個玩家將這個詞語和自己的詞語一起悄悄地告訴他身后的人。接下來,整個隊伍不斷重復這個過程直到最后一個玩家。最后的玩家需要預測出所漏掉的詞語,并大聲地把這個消息告訴整個集體。
顯而易見的是,最后一個玩家可以準確地猜出漏掉的詞語是「legs」。這是因為前一個玩家告訴了他這個句子的前面部分:「The brown dog has four」,所以他能夠通過該語境推導出這個詞語。
上文說明了 RNN 的基本原理。通過提取序列之前的信息,并結合序列當前的輸入,該網絡能夠預測出序列的下一個輸出。
RNN 的展開
由上文可知,RNN 能夠通過對整個序列重復同樣的過程,從而做出預測。左下圖顯示了循環(huán)網絡的基本結構。它同時接收序列數(shù)據輸入向量(x)和隱藏狀態(tài)信息(a),然后使用二者去預測序列數(shù)據的輸出。
為了正確地將系統(tǒng)工作方式可視化,我們通常把 RNN 展開成與序列數(shù)據長度一致的一連串重復的單元或稱之為時間步(如右上圖所示)。比如我們需要處理的序列是一個有三個詞語的句子時,那么其將被展開成有三個時間步的 RNN 網絡,每一個時間步處理一個詞語。
RNN 的設計架構
序列數(shù)據的輸入和輸出有各種各樣的形式和長度。比如在情感分析任務中,輸入通常是一串文本,而期望的輸出是一個整數(shù)(1-5 的評分范圍)或是單個文本(好的、壞的,積極的、消極的、中性的)。然而在語音文本任務中,輸入則是聲波中的一串聲音信號,其輸出則是一串對應的文本。
正是由于這些差異,當需要處理序列任務時,我們會針對性地設計 RNN 的輸入和輸出結構。一些常見的架構類型如下:
1. 多對多架構(同樣的序列長度)
這是最基本的 RNN 結構,在每個時間步中輸入序列的數(shù)量與輸出序列的數(shù)量是一致的。一個使用該架構的應用實例是文本生成器:根據句子中前面的詞語,預測下一個最有可能的詞語。
采用多對多 RNN 架構的文本生成器
如上圖所示,文本生成器的輸入是一串詞語,輸出則是由預測得到的下一個詞所組成的一串詞語:「brown dog has four legs」。
2. 多對多架構(不同序列長度)
當需要處理輸入和輸出序列的數(shù)量不一致時,我們便可采用多對多架構的另一種版本。而機器翻譯任務就是這樣的一個應用實例:輸入是原文的一串詞語(比如法文),而輸出是譯文的一串詞語(比如英文)。這個架構有兩個不同的模塊:編碼器和解碼器。前者接受輸入的句子,將其映射成內部狀態(tài)表征,然后將其傳給后者,以供其生成輸出的句子。
采用多對多 RNN 架構的機器翻譯
在此架構中,當編碼器將全部的輸入序列處理完后,解碼器才開始對輸出的序列進行預測。這與前面提到的相同序列長度架構完全不同,在那個架構中,其每收到一個輸入序列對象后,馬上開始對每一個輸出序列對象進行預測。
3. 多對一架構
在此架構中,RNN 在每個時間步都有一串輸入,但只有在最后一個時間步輸出一個單一值。情感分析任務正是此情景下的應用實例:任務的目的是對輸入的語句進行分類,判斷其是否有正面或負面的情感。
采用多對一 RNN 架構的情感分析任務
在上圖的情感分析任務中,RNN 并不是在每個時間步都有輸出,而是在讀完整串詞語后,僅在最后一個時間步輸出一個單一值:「positive」。
4. 一對多架構
此處的 RNN 在第一個時間步接受一個單一值,然后在剩余的時間步中輸出一串值。基于此架構的應用通常會取得每個時間步的預測輸出,并把它傳遞給下一層,作為該層的輸入值。一個應用實例是圖像標注:RNN 接受一幅圖像作為輸入,然后輸出描述圖像中所發(fā)生事情的一串詞語。
采用一對多架構的圖像標注
上圖顯示了輸入是一個女性跑步的表情符號,而輸出則是預測得到的一串詞語:「woman in blue vest running」。
結論
在這篇文章中,我們簡單介紹了循環(huán)網絡以及其不同類型的架構,包括相應的應用實例。
來源:https://medium.com/learn-love-ai/introduction-to-recurrent-neural-networks-rnns-43238d037a5c
雷鋒網雷鋒網
雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。