RNN Part1-RNN介紹

本篇翻譯自WILDML


RNN介紹

RNN的基本想法是如何採用序列信息。在傳統神經網路中我們假設所有的輸入和輸出都是相互獨立的,但對於很多任務這樣的假設並不合適。如果你想預測一個句子的下一個單詞,的則需要知道之前的words包括哪些。

RNN被稱為循環因為它們對句子的每個元素都執行相同的任務,輸出依賴於之前的計算;另一個理解RNN的方法是假設他們用記憶能夠獲取之前計算過的信息。理論上RNN能夠利用任意長的句子,但是實踐中通常會回溯固定長度。

上圖顯示了一個RNN被展開(或展開)成一個完整的網路。 通過展開,我們指的是我們寫出完整序列的網路。 例如,如果我們關心的序列是5個單詞的句子,網路將被展開成5層神經網路,每個單詞一層。 管理在RNN中發生的計算的公式如下:

  • x_{t} 是在時刻t的輸入,例如 x_{1} 是一個one-hot vector對應整個句子的第二個word
  • s_{t} 是在時刻t的隱藏狀態,是網路的memory, s_{t} 計算如下所示: s_{t}=f(Ux_{t}+Ws_{t-1}) 函數f通常是非線性的例如tanh或者ReLU
  • o_{t} 是時刻的輸出,例如我們希望預測一個句子的下一個單詞,則輸出希望是我們字典中所有詞的概率組成的向量 o_{t}=softmax(Vs_{t})

需要說明的是

  • 可以將隱藏狀態 s_{t} 看作網路的memory,獲取到了之前時刻中發生的信息,輸出僅僅採用時刻t的memory來進行計算。正如之前所說,由於在實踐中只能獲取到一段時間內的信息,因此情況略複雜
  • 傳統的神經網路在每一層採用不同的參數,而RNN在所有步中採用共同的參數(U,V,W),這表示我們在每一步執行相同的任務,僅僅是輸入不同而已。這樣會縮減需要學習的參數數量
  • 上圖在每一步都輸出,這並不是絕對必要的,需要針對不同任務進行設計。例如,在預測一個句子的情緒的時候,我們只關心最後的輸出,而不是每個word之後的情緒值。相似的,我們並不需要在每個時刻都有輸入。RNN的主要feature是隱藏狀態,能夠獲取一個句子的信息

Different types of RNNs

我們來舉例一些RNN的應用以及對應的sequence data。

上圖包括:

  1. Speech recognition
  2. Music generation
  3. Sentiment Classification
  4. DNA Sequence analysis
  5. Machine Translation
  6. Video activity recognition
  7. Named Entity Recognition

顯然輸入和輸出可能是類似的序列,也可能是完全不同的內容,我們可以將其分為以下幾種:

  1. One to One 傳統NN
  2. One to Many 例如Music/Text Generation
  3. Many to One 例如Sentiment Classification 情感分析
  4. Many to Many 輸入與輸出序列大小相同 例如Named Entity Recognition
  5. Many to Many 輸入與輸出序列大小不同 例如Machine Translation


Training RNNs

訓練RNN與訓練傳統神經網路類似,採用反向傳播演算法,但是有一些不同。因為RNN的參數是由所有時間步共同使用的,因此每次輸入的梯度不僅僅依賴於當前步的計算,並且依賴於之前的時間步的數據,例如需要計算 t=4 時刻的梯度,我們需要反向傳播3步然後將所有的梯度累加。這稱為Backpropation Through Time(BPTT),在RNN Part 3-Back Propagation Through Time and Vanishing Gradients(BPTT演算法和梯度消失) 中我們對BPTT進行了詳細介紹。這裡需要知道的是由於vanishing/exploding gradient problem導致普通RNN採用BPTT很難學習到long-term dependencies。

例如下面的這句話:

The cat, which already ate ..., was full.The cats, which already ate ..., were full.

這裡的was/were的選擇實際上是由之前的cat/cats來決定的,但是普通RNN中,cat這裡距離後面句子太遠,因此難以學到這個內容。

為了解決這個問題,存在其他類型的採用Gated機制的神經網路,例如GRU、LSTM等被提出來解決這個問題。

推薦閱讀:

譯文:如何使用TensorFlow實現神經網路(上)
《麻省理工科技評論》全球十大突破性技術,阿里巴巴正研究其中4項
Michael Nielsen對交叉熵的解釋(三)
谷歌大腦發布神經架構搜索新方法:提速1000倍
ML + System = ?

TAG:機器學習 | 神經網路 |