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