人工智能算法綜述(二) RNN and LSTM

 


接上一篇 :AI算法綜述 (一)html

RNN:循環神經網絡 and LSTM 長短時間記憶網絡算法

LSTM就是一個RNN網絡,外部的結構是同樣的,主要是單元的內在結構不一樣。或者說LSTM是爲了讓RNN可以更好的處理NLP(天然語言問題)作的一些內部改造。網絡

我推薦這篇文章理解LSTM :https://www.jianshu.com/p/9dc9f41f0b29函數

可能會比我本身說的更好,我這裏就簡單說一下,不涉及太多技術細節。spa

咱們先回顧一下基本的神經網絡結構圖翻譯

總體結構就是 輸入層+N層隱層+輸出層。3d

數據的流向就是由左往右,輸入X1,X2,X3 會分發給隱層經過這些連線傳遞過去,而後在節點計算以後有一個輸出,繼續分發給下一層。htm

那麼單獨拎一個節點放大來看的話就是這樣的。blog

Z就是某中間節點。  這就是標準的前饋神經網絡的結構。get

這種結構在處理某一類問題的時候很是無力,就是比方說當前的識別結果,須要依賴上一次的識別結果。

具體的場景就是天然語言的翻譯,翻譯須要結合上下文語境才能更精確的翻譯出來。而不能像某些機譯同樣,一句一句單獨翻譯。

 

 

那麼RNN 所謂的循環神經網絡就是在這中間節點作了一個改造。

 

這個改造就是,把中間節點的輸出拷貝一份出來,而後混合着下一次的輸入再作一次計算(激活函數)得出結果,反覆如是,直到沒有輸入。

 

 那LSTM跟這個RNN有什麼區別呢?

RNN固然也不是萬能的,其中也存在各類利弊。

而後有個缺陷,就是假如當前 T 結果依賴上一次 (就是  T -1) 的結果,這問題不大,那若是 依賴 T-2 或者更遠一點 T-10 的結果呢?

而後你們看回那個結構圖,h20 的結果若是依賴 X1  那麼中間的路途遙遠,原輸入通過了不少次計算纔到H20 損耗很是大,變數更大。

並且須要依賴上下文語境的狀況在天然語言處理中還廣泛存在。因此……

噹噹噹……

LSTM應運而生,爲了世界和平而生。

咱們先看一下LSTM跟常規的RNN區別。

主要是綠色塊裏面的變化,外部結構是同樣的。

 

這個內在結構長的很像電路板,能夠把這個電路板分爲3個部件。

分別是「遺忘門」 「輸入門」 「輸出門」

具體這個結構怎麼實現的這3個門這裏不細說,上面那個地址有詳細說明,愛看公式的童鞋能夠移步。

這裏我歸納性的講爲啥要有遺忘門跟輸入門、輸出門

接咱們剛纔在RNN那裏講的,若是依賴的結果離的很遠,好比說T 依賴 T-10 的輸出結果。中間隔了一條銀河。

你想要T麼?先忘掉T-11 T-12…… 以前的全部信息,而後輸入T-10,而後 忘掉 T-9 T-8 T-7 …… 而後把 T-10 的輸入 經過輸出門得出結果。

那麼遺忘門的攤開以後的參數就是 從T-12 到 T 就是:

T-11 T-10 T-9 T-8 T-7 T-6 T-5 T-4 T-3 T-2 T-1 T-0
0 1 0 0 0 0 0 0 0 0 0 0

輸入門就是:

T-11 T-10 T-9 T-8 T-7 T-6 T-5 T-4 T-3 T-2 T-1 T-0
0 0 0 0 0 0 0 0 0 0 0 1

 

 

RNN的訓練過程就是根據標識好的數據,訓練調整這些參數到符合這些數據的規律。

好了,RNN就講到這裏,感謝各位閱讀!

相關文章
相關標籤/搜索