標籤:

RNN model

看了一點兒關於image caption的內容,但是卡在RNN和LSTM這塊兒了,今天整理了一下資料,算是大概懂了,寫一篇文章放上自己的理解。歡迎指出錯誤。

圖像不是很清晰,當然這個PPT也不是我做的~。

比如我們對 arrive Taipei on November 2nd.這個句子進行拆分,我們拆分出兩個關鍵詞Taipei 和November 2nd 我們對這兩個詞進行編碼,並且編碼成二維向量。我們用neutral network的作用是判斷Taipei或者November這兩個詞的類別,這裡我們用softmax做一個二分類,y1表示輸入的辭彙是destination的概率,y2表示的是departure的時間的概率,我們通過訓練這個訓練這個神經網路,最終得到不錯的表現效果。

但是這樣做有一個明顯的缺點,比如當我們輸入下一個句子 leave Taipei on November 2 nd 這個句子裡面也包含Taipei這個地點,我們送到神經網路中依然能判斷Taipei是destination,但是我們是要離開台北,台北並不是我們的destination.

那這個問題如何解決呢,我們可以發現 leave Taipei on November 2 nd,這個時候我們需要讓神經網路知道我們是要leave Taipei,這就需要神經網路有一定的記憶性,他能記住上個輸入狀態。我們先設定兩個預存值 a_{1} , a_{2} 並且初始化為0,假設我們把leave編碼成向量[1,1],我們設所有的權重為1,bias為0,activation function都是線性的。

然後leave Taipei on November 2 中第二個詞Taipei輸入RNN中,這個時候我們注意:預存值已經換成的hidden layer的output 2也就是下圖,我們把Taipei也編碼成[1,1]。然後如下圖所示:

當然這個神經網路只是一個例子,並沒有經過訓練,如果訓練過的話,y2肯定要比y1大,因為我們Taipei並不是destination,RNN的核心思想就是與上一個狀態有關,這一點有一點類似於馬爾科夫鏈。其他的大家要是想了解,可以google一下相關的paper。

接下來我說一下我對LSTM的理解,第一次看到LSTM的時候我感到很頭疼,好複雜,LSTM的大致結構如圖所示。

output gate是控制輸出信號的,forget gate 是控制是否應該記住memory cell中所保存的上一個狀態的預存值,是1就記住。是0就忘記,input gate 是控制輸入信號的。下面我講一下LSTM的一些東西。

標記為c的位置為預存值保存的位置。

比如我們在最下面那個單元(圓圈標記g的單元)輸入值z,經過g單元輸出g(z),然後,同理上圖中 z_{i} 經過input gate輸出值f( z_{i} ),然後相乘得到g(z)f( z_{i} ),forget gate中輸入值 z_{f} ,經過forget gate後輸出值f( z_{f} ),然後與預存單元中預存的上個狀態的值相乘得到cf( z_{f} ),然後與g(z)f( z_{i} )相加得到c,此時預存單元中的值換成c,c經過激活單元變成h(c),在output gate中輸入 z_{o} 經過output gate 激活單元我們得到f( z_{o} ),然後與h(c)相乘,得到最後的輸出值。這篇文章我還沒有寫完,明天繼續寫。


推薦閱讀:

人工智慧是怎樣的一門學科?
看得見的資訊理論-為什麼用交叉熵作為邏輯回歸的代價函數
非負矩陣分解(NMF)及一個小實例
機器學習筆記031 | 無監督學習演算法——K均值(K-means)
【精品】12條核心知識帶你了解機器學習

TAG:機器學習 |