機器學習系列:遞歸神經網絡

thre1233 7年前發布 | 87K 次閱讀 神經網絡

前言

BP神經網絡,訓練的時候,給定一組輸入和輸出,不斷的對權值進行訓練,使得輸出達到穩定。但BP神經網絡并不是適合所有的場景,并不真正的體現出某些場景的真正特點。回到經典的概率論問題,拋硬幣問題,假設你已經拋了100次的,90次是正面的,10次是反面的,問現在繼續在拋一次,出現正面的概率是多少?如果沒有前面幾次的經驗,很正常的會認為再次出現正面的概率是50%,但由于我們之前有對這個進行了實驗,即有了經驗了,按照貝葉斯定律,出現正面的概率肯定會大于50%。BP神經網絡也少了對前面結果的一種反饋。

常見,易懂的受到前位影響的算法,加法算法。十位的結果,所到個位結果的影響,因為可能有進位,同樣,百位的結果所到十位的影響。

這種受到前位影響的算法非常的常見,而經典BP神經網絡并不能很好的反映這種算法的特性,需要就經典的BP神經網絡進行優化和改造,也就是引進前位,歷史數據對網絡的影響,使其具備時序性。通過歷史數據的關聯來推測后續的事情。

遞歸神經網絡RNN

從前面加法算法的動態圖中,對現有的 BP 神經網絡進行改造,也就是加入前位的結果對于后續網絡的影響。

這里把 BP 神經網絡設計成上圖的形式,很形象的揭示了遞歸神經網絡的特點,前向的結果,作為下一個輸入,影響下一個網絡的結果。遞歸神經網絡,在很多方向已經取得了很好的成果。而一種特殊的遞歸神經網絡 Long Short Term 網絡(LSTM),取到的結果最為璀璨,是這個方向的明星。

來看看LSTM的實現。

LSTM 網絡

1997年 Hochreiter & Schmidhuber 提出了Long Short Term 網絡,它是一種 RNN 的實現形式,在很多問題上,LSTM 取得了相當大的成功,在許多的領域上都有很好的成果。

最簡單的 LSTM 網絡:

把前位的輸出結果當成后位的輸入,經過 tanh 層,相當于擴充了原來BP神經網絡的另一個輸入。這樣一次的進行訓練。

在簡化一點的方式如下圖:

如果去掉 layer1 層,那么就是一個最簡單的 BP神經網絡了。這里引入了 layer1 層,使得經典的 BP 神經網絡多了一個輸入,layer_1 層在加法算法中,表示的是前一個輸入就可以反映出加法算法的特性,從結構來看,這個 LSTM 的變形并不是非常的復雜,但現在就重要的就是如何計算出各個層次的增量,然后進行迭代了。

這里主要需要解決導數問題 python 的代碼實現:

變量的更新:

其中 layer1delta 變量為兩個變量的和:

完整的迭代過程在:

https://iamtrask.github.io/2015/11/15/anyone-can-code-lstm/

在遞歸神經網絡中,跟經典的BP神經網絡在結構上并沒有太多的不同,最關鍵的點,還是在求解增量,進行迭代。

回頭再想,如果僅僅用BP神經網絡的算法能不能實現出加法算法,我覺得是可以的,但是速度和準確性不會有LSTM高。因此,LSTM的結構也是可以改進算法,不同的結構方式可以避免算法的很多缺陷。

更一般的LSTM結構:

算法的迭代過程在:

http://nicodjimenez.github.io/2014/08/08/lstm.html

https://github.com/nicodjimenez/lstm

算法跟BP神經網絡沒有太大的不同,但要注意的還是各個變量的增量和迭代問題。

遞歸神經網絡的應用

遞歸神經網絡跟BP神經網絡,最大的不同是引進了時序,可以根據以往的數據來推測未來的事件。這是現在比較熱門的一個方向。比較多的應用實在語音和文本的處理上,網上有相當多的關于遞歸神經網絡的應用,比如寫出像汪峰一樣的歌詞,默寫唐詩,寫冷段子等。但要寫出像樣的歌詞和詩詞,還需要做很多的處理,如果把遞歸神經網絡應用在推薦系統里,也會得到不錯的效果。

參考

http://blog.csdn.net/zzukun/article/details/49968129

http://www.jianshu.com/p/9dc9f41f0b29

http://nicodjimenez.github.io/2014/08/08/lstm.html

https://github.com/nicodjimenez/lstm

http://blog.csdn.net/longxinchen_ml/article/details/51253526

https://github.com/karpathy/char-rnn

http://blog.csdn.net/v_july_v/article/details/52796239

?

 

來自:http://datartisan.com/article/detail/218.html

 

 本文由用戶 thre1233 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!