本文是自己對于lstm的理解的總結简僧,但是最好的文章幫助理解lstm一定是這篇Understanding LSTM Networks
lstm理論
我們平時在做決策的時候,會基于當前的情況和自己平時的經驗來做出判斷,這就會涉及到一個很重要的概念:經驗,對于計算機來說,經驗要怎么獲取到呢坷随?計算機有CPU進行運算房铭,有內存進行存儲,很自然的我們的想法就是將之前的輸入存儲到內存中温眉,作為我們今后決策的一個經驗
我們想下FC(fully connection)網絡,其輸出結果就只跟當前輸入有關翁狐,沒有用到“經驗”类溢,那對于一些需要用到之前輸入的場景就會顯的力不從心,
因此我們一個很自然的想法就是將之前輸入記住的露懒,但是記住多少呢闯冷?我們人的記憶力有限,對于一些久遠的懈词、不重要的記憶自然就會忘了蛇耀,
而對于我們決策總是起作用的事情就會記得很清楚,因此我們希望我們的模型也能有這個特性坎弯,記住重要的經驗纺涤,遺忘不重要的
基于上面“經驗”的假說,早期就有了RNN(recurrent neural network)了抠忘,其主要思想就是將單一的FC重復多份撩炊,串聯(lián)起來,這樣當前的輸出就不止由當前輸入決定崎脉,還會受前面輸入的影響拧咳,其示意圖如下:
但是很快人們就發(fā)現(xiàn)這種模型會有兩個主要的問題:vanishing gradient 和 exploding gradient,梯度消失和梯度爆炸囚灼,一個直觀的解釋是:看上圖x(t)會由x(0)乘以每個子單元之間的一個關系得到骆膝,我們用Whh表示,其特征就是 x(t) = x(0) * Whh^t灶体,當我們Whh小于1和大于1的時候阅签,就會分別出現(xiàn)梯度消失和梯度爆炸了。
于是后來就發(fā)明了LSTM赃春,其思想就是我們之前說的“經驗”愉择,并在此基礎上加上了“遺忘”,看下結構圖:
圖來自Understanding LSTM and its diagrams
對于上面的圖织中,我們初看的時候第一眼感覺可能是復雜锥涕,此處我也不想過多的去解釋上面的圖了,更詳細的可以這篇文章Understanding LSTM and its diagrams狭吼,其整體思路就是之前說的遺忘+經驗层坠,稍微具體點就是下面的圖:
圖片來自:零基礎入門深度學習 (6) - 長短時記憶網絡 (LSTM)
我們有3個開關,分別控制著我們的經驗選擇什么進行遺忘刁笙,然后當前的輸入我們選擇什么進行記憶破花,以及根據經驗我們怎么做出判斷谦趣,更具體的講解可以閱讀零基礎入門深度學習 (6) - 長短時記憶網絡 (LSTM)
理論講了這么多,我們最重要的還是要用座每,下面我們就結合一些具體的例子來看下怎么使用RNN來解決實際問題
具體的例子可以查看github地址:LSTM的理解