接上一篇 :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就講到這裏,感謝各位閱讀!