接上一篇 :AI算法綜述 (一)
RNN:循環神經網絡 and LSTM 長短期記憶網絡
LSTM就是一個RNN網絡,外部的結構是一樣的,主要是單元的內在結構不同。或者說LSTM是為了讓RNN能夠更好的處理NLP(自然語言問題)做的一些內部改造。
我推薦這篇文章理解LSTM :https://www.jianshu.com/p/9dc9f41f0b29
可能會比我自己說的更好,我這里就簡單說一下,不涉及太多技術細節。
我們先回顧一下基本的神經網絡結構圖
整體結構就是 輸入層+N層隱層+輸出層。
數據的流向就是由左往右,輸入X1,X2,X3 會分發給隱層通過這些連線傳遞過去,然后在節點計算之后有一個輸出,繼續分發給下一層。
那么單獨拎一個節點放大來看的話就是這樣的。
Z就是某中間節點。 這就是標准的前饋神經網絡的結構。
這種結構在處理某一類問題的時候非常無力,就是比方說當前的識別結果,需要依賴上一次的識別結果。
具體的場景就是自然語言的翻譯,翻譯需要結合上下文語境才能更精確的翻譯出來。而不能像某些機譯一樣,一句一句單獨翻譯。
那么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就講到這里,感謝各位閱讀!