1. 程式人生 > >RNN & Word2Vec

RNN & Word2Vec

無法 nta 模型 以及 模板 cnn 因此 長時間 傳統

RNN(Recurrent Netural Network)循環神經網絡,用來處理和預測序列數據,在語音識別,語言描述,翻譯等領域有很好的運用。

傳統神經網絡結構如CNN是假設所有的input之間是相互獨立的,output之間也相互獨立,但實際中會存在由前面幾個字去推測後面的詞,這個時候CNN的假設就不能成立了。

而RNN可以通過時序結構來關聯input,記住input之間的關系。

RNN的典型結構如下:

技術分享圖片

展開之後為:

技術分享圖片

可以看到隱藏層的輸入有兩個:隱藏層的輸入(前一個隱藏層的輸出 h)以及原始輸入(指某個詞的vector x)

具體例子如下:

技術分享圖片

RNN模型中有個time step的概念,表示記憶的長度,例子中的記憶長度就是4.

但是RNN無法解決長時間依賴的問題,也就是記憶長度不能特別長(容易出現梯度彌散的問題),因此出現了一些改進版的RNN,如LSTM(Long short term memory)

兩者的結構對比圖如下:

技術分享圖片

技術分享圖片

從對比圖上可以看出,所有RNN都具有一個重復模塊,標準RNN重復模板是比較簡單的tanh,而LSTM則是由通過精心設計的稱作“門”的結構來去除或者增加信息。

(1)清除無用信息 (遺忘門 forget gate)

技術分享圖片

(2)添加新的信息

技術分享圖片

(3)更新細胞狀態

技術分享圖片

(4)輸出信息

技術分享圖片

以上便展示了LSTM的幾個重要計算邏輯。

在現實中,我們用的訓練數據往往是句子或者詞組,因此需要先做一些處理,下面介紹幾個句子處理中的常見概念

(1)詞向量(把一個詞轉換成一個向量)

  a. one hot representation

  用一個很長向量表示一個詞,向量長度是詞典長度,向量中只有元素0和1,1的位置對應詞在詞典中的位置

  這種方法在NLP中運用的比較多,但也有明顯的問題:維度災難和無法刻畫近義詞之間的相似性

  b. distributed representation

  以普通向量表示一個詞,一般是50維或者100維 (??? how)

  

RNN & Word2Vec