用中文傳話遊戲理解 RNN

雷鋒網按:本文為雷鋒字幕組編譯的技術博客,原文名 Understanding RNNs using the game of Chinese whispers ,作者 Eniola Alese。

翻譯 | 陳濤 整理 | 吳璇

循環神經網絡(RNN)是人工神經網絡中非常流行的一個版本,其可以很好地處理序列數據類型。該數據類型指的是將一組數據點以特定順序排列,從而使相關的數據點一個挨著一個,具體的例子有:股票市場價格、音頻和視頻數據、DNA 序列、傳感器數據、自然語言文本等等。

為了直觀地瞭解 RNN 是如何工作的,假設我們正在玩一個很受歡迎的兒童遊戲——中文傳話。該遊戲的目的是最後一個人能準確預測出句子中所漏掉的詞語,比如「The brown dog has four _____」。

用中文传话游戏理解 RNN

中文傳話遊戲

玩家們需要排成一隊,並且根據句子中詞語的排列,每個人都會得到其中的一個詞語,比如玩家 1 得到詞語「the」,玩家 2 得到詞語「brown」,玩家 3 得到詞語「dog」,以此類推。首先,隊伍中的第一個人把他聽到的詞語悄悄地告訴隊伍中站在他身後的玩家。然後這個玩家將這個詞語和自己的詞語一起悄悄地告訴他身後的人。接下來,整個隊伍不斷重複這個過程直到最後一個玩家。最後的玩家需要預測出所漏掉的詞語,並大聲地把這個消息告訴整個集體。

顯而易見的是,最後一個玩家可以準確地猜出漏掉的詞語是「legs」。這是因為前一個玩家告訴了他這個句子的前面部分:「The brown dog has four」,所以他能夠通過該語境推導出這個詞語。

上文說明了 RNN 的基本原理。通過提取序列之前的信息,並結合序列當前的輸入,該網絡能夠預測出序列的下一個輸出。

RNN 的展開

由上文可知,RNN 能夠通過對整個序列重複同樣的過程,從而做出預測。左下圖顯示了循環網絡的基本結構。它同時接收序列數據輸入向量(x)和隱藏狀態信息(a),然後使用二者去預測序列數據的輸出。

用中文传话游戏理解 RNN

為了正確地將系統工作方式可視化,我們通常把 RNN 展開成與序列數據長度一致的一連串重複的單元或稱之為時間步(如右上圖所示)。比如我們需要處理的序列是一個有三個詞語的句子時,那麼其將被展開成有三個時間步的 RNN 網絡,每一個時間步處理一個詞語。

RNN 的設計架構

序列數據的輸入和輸出有各種各樣的形式和長度。比如在情感分析任務中,輸入通常是一串文本,而期望的輸出是一個整數(1-5 的評分範圍)或是單個文本(好的、壞的,積極的、消極的、中性的)。然而在語音文本任務中,輸入則是聲波中的一串聲音信號,其輸出則是一串對應的文本。

正是由於這些差異,當需要處理序列任務時,我們會針對性地設計 RNN 的輸入和輸出結構。一些常見的架構類型如下:

1. 多對多架構(同樣的序列長度)

這是最基本的 RNN 結構,在每個時間步中輸入序列的數量與輸出序列的數量是一致的。一個使用該架構的應用實例是文本生成器:根據句子中前面的詞語,預測下一個最有可能的詞語。

用中文传话游戏理解 RNN

採用多對多 RNN 架構的文本生成器

如上圖所示,文本生成器的輸入是一串詞語,輸出則是由預測得到的下一個詞所組成的一串詞語:「brown dog has four legs」。

2. 多對多架構(不同序列長度)

當需要處理輸入和輸出序列的數量不一致時,我們便可採用多對多架構的另一種版本。而機器翻譯任務就是這樣的一個應用實例:輸入是原文的一串詞語(比如法文),而輸出是譯文的一串詞語(比如英文)。這個架構有兩個不同的模塊:編碼器和解碼器。前者接受輸入的句子,將其映射成內部狀態表徵,然後將其傳給後者,以供其生成輸出的句子。

用中文传话游戏理解 RNN

採用多對多 RNN 架構的機器翻譯

在此架構中,當編碼器將全部的輸入序列處理完後,解碼器才開始對輸出的序列進行預測。這與前面提到的相同序列長度架構完全不同,在那個架構中,其每收到一個輸入序列對象後,馬上開始對每一個輸出序列對象進行預測。

3. 多對一架構

在此架構中,RNN 在每個時間步都有一串輸入,但只有在最後一個時間步輸出一個單一值。情感分析任務正是此情景下的應用實例:任務的目的是對輸入的語句進行分類,判斷其是否有正面或負面的情感。

用中文传话游戏理解 RNN

採用多對一 RNN 架構的情感分析任務

在上圖的情感分析任務中,RNN 並不是在每個時間步都有輸出,而是在讀完整串詞語後,僅在最後一個時間步輸出一個單一值:「positive」。

4. 一對多架構

此處的 RNN 在第一個時間步接受一個單一值,然後在剩餘的時間步中輸出一串值。基於此架構的應用通常會取得每個時間步的預測輸出,並把它傳遞給下一層,作為該層的輸入值。一個應用實例是圖像標註:RNN 接受一幅圖像作為輸入,然後輸出描述圖像中所發生事情的一串詞語。

用中文传话游戏理解 RNN

採用一對多架構的圖像標註

上圖顯示了輸入是一個女性跑步的表情符號,而輸出則是預測得到的一串詞語:「woman in blue vest running」。

結論

在這篇文章中,我們簡單介紹了循環網絡以及其不同類型的架構,包括相應的應用實例。

來源:https://medium.com/learn-love-ai/introduction-to-recurrent-neural-networks-rnns-43238d037a5c

用中文传话游戏理解 RNN

雷鋒網雷鋒網


分享到:


相關文章: