LSTM神經網絡

轉自 http://m.blog.csdn.net/article/details?id=52081301

簡單理解LSTM神經網絡


遞歸神經網絡 
在傳統神經網絡中,模型不會關注上一時刻的處理會有什麼信息可以用於下一時刻,每一次都只會關注當前時刻的處理。舉個例子來說,我們想對一部影片中每一刻出現的事件進行分類,如果我們知道電影前面的事件信息,那麼對當前時刻事件的分類就會非常容易。實際上,傳統神經網絡沒有記憶功能,所以它對每一刻出現的事件進行分類時不會用到影片已經出現的信息,那麼有什麼方法可以讓神經網絡能夠記住這些信息呢?答案就是Recurrent Neural Networks(RNNs)遞歸神經網絡。

遞歸神經網絡的結果與傳統神經網絡有一些不同,它帶有一個指向自身的環,用來表示它可以傳遞當前時刻處理的信息給下一時刻使用,結構如下: 


這裏寫圖片描述 

其中,Xt爲輸入,A爲模型處理部分,ht爲輸出。

爲了更容易地說明遞歸神經網絡,我們把上圖展開,得到: 


這裏寫圖片描述

這樣的一條鏈狀神經網絡代表了一個遞歸神經網絡,可以認爲它是對相同神經網絡的多重複制,每一時刻的神經網絡會傳遞信息給下一時刻。如何理解它呢?假設有這樣一個語言模型,我們要根據句子中已出現的詞預測當前詞是什麼,遞歸神經網絡的工作原理如下: 

這裏寫圖片描述 

其中,W爲各類權重,x表示輸入,y表示輸出,h表示隱層處理狀態。

遞歸神經網絡因爲具有一定的記憶功能,可以被用來解決很多問題,例如:語音識別、語言模型、機器翻譯等。但是它並不能很好地處理長時依賴問題。

長時依賴問題 
長時依賴是這樣的一個問題,當預測點與依賴的相關信息距離比較遠的時候,就難以學到該相關信息。例如在句子”我出生在法國,……,我會說法語“中,若要預測末尾”法語“,我們需要用到上下文”法國“。理論上,遞歸神經網絡是可以處理這樣的問題的,但是實際上,常規的遞歸神經網絡並不能很好地解決長時依賴,好的是LSTMs可以很好地解決這個問題。

LSTM 神經網絡 
Long Short Term Mermory network(LSTM)是一種特殊的RNNs,可以很好地解決長時依賴問題。那麼它與常規神經網絡有什麼不同? 
首先我們來看RNNs具體一點的結構: 


這裏寫圖片描述 

所有的遞歸神經網絡都是由重複神經網絡模塊構成的一條鏈,可以看到它的處理層非常簡單,通常是一個單tanh層,通過當前輸入及上一時刻的輸出來得到當前輸出。與神經網絡相比,經過簡單地改造,它已經可以利用上一時刻學習到的信息進行當前時刻的學習了。

LSTM的結構與上面相似,不同的是它的重複模塊會比較複雜一點,它有四層結構: 


這裏寫圖片描述 

其中,處理層出現的符號及表示意思如下: 

這裏寫圖片描述 

LSTMs的核心思想 
理解LSTMs的關鍵就是下面的矩形方框,被稱爲memory block(記憶塊),主要包含了三個門(forget gate、input gate、output gate)與一個記憶單元(cell)。方框內上方的那條水平線,被稱爲cell state(單元狀態),它就像一個傳送帶,可以控制信息傳遞給下一時刻。 


這裏寫圖片描述 

這個矩形方框還可以表示爲: 

這裏寫圖片描述 

這兩個圖可以對應起來看,下圖中心的ct即cell,從下方輸入(ht1,xt)到輸出ht的一條線即爲cell state,ftitot分別爲遺忘門、輸入門、輸出門,用sigmoid層表示。上圖中的兩個tanh層則分別對應cell的輸入與輸出。

LSTM可以通過門控單元可以對cell添加和刪除信息。通過門可以有選擇地決定信息是否通過,它有一個sigmoid神經網絡層和一個成對乘法操作組成,如下: 


這裏寫圖片描述 

該層的輸出是一個介於0到1的數,表示允許信息通過的多少,0 表示完全不允許通過,1表示允許完全通過。

逐步解析LSTM 
LSTM第一步是用來決定什麼信息可以通過cell state。這個決定由“forget gate”層通過sigmoid來控制,它會根據上一時刻的輸出ht1和當前輸入xt來產生一個0到1 的ft值,來決定是否讓上一時刻學到的信息Ct1通過或部分通過。如下: 


這裏寫圖片描述 

舉個例子來說就是,我們在之前的句子中學到了很多東西,一些東西對當前來講是沒用的,可以對它進行選擇性地過濾。

第二步是產生我們需要更新的新信息。這一步包含兩部分,第一個是一個“input gate”層通過sigmoid來決定哪些值用來更新,第二個是一個tanh層用來生成新的候選值C~t,它作爲當前層產生的候選值可能會添加到cell state中。我們會把這兩部分產生的值結合來進行更新。 


這裏寫圖片描述 

現在我們對老的cell state進行更新,首先,我們將老的cell state乘以ft來忘掉我們不需要的信息,然後再與itC~t相加,得到了候選值。

一二步結合起來就是丟掉不需要的信息,添加新信息的過程: 


這裏寫圖片描述 

舉個例子就是,在前面的句子中我們保存的是張三的信息,現在有了新的李四信息,我們需要把張三的信息丟棄掉,然後把李四的信息保存下來。

最後一步是決定模型的輸出,首先是通過sigmoid層來得到一個初始輸出,然後使用tanh將 
Ct值縮放到-1到1間,再與sigmoid得到的輸出逐對相乘,從而得到模型的輸出。 

這裏寫圖片描述 

這顯然可以理解,首先sigmoid函數的輸出是不考慮先前時刻學到的信息的輸出,tanh函數是對先前學到信息的壓縮處理,起到穩定數值的作用,兩者的結合學習就是遞歸神經網絡的學習思想。至於模型是如何學習的,那就是後向傳播誤差學習權重的一個過程了。

上面是對LSTM一個典型結構的理解,當然,它也會有一些結構上的變形,但思想基本不變,這裏也就不多講了。

參考:http://colah.github.io/posts/2015-08-Understanding-LSTMs/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章