機器學習之迴圈神經網路(十)
摘要:
多層反饋RNN(Recurrent neural Network、迴圈神經網路)神經網路是一種節點定向連線成環的人工神經網路。這種網路的內部狀態可以展示動態時序行為。不同於前饋神經網路的是,RNN可以利用它內部的記憶來處理任意時序的輸入序列,這讓它可以更容易處理如不分段的手寫識別、語音識別等。
引言:
迴圈神經網路的目的使用來處理序列資料。在傳統的神經網路模型中,是從輸入層到隱含層再到輸出層,層與層之間是全連線的,每層之間的節點是無連線的。但是這種普通的神經網路對於很多問題卻無能無力。RNN之所以稱為迴圈神經網路,即一個序列當前的輸出與前面的輸出也有關。具體的表現形式為網路會對前面的資訊進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點不再無連線而是有連線的,並且隱藏層的輸入不僅包括輸入層的輸出還包括上一時刻隱藏層的輸出。理論上,RNNs能夠對任何長度的序列資料進行處理。但是在實踐中,為了降低複雜性往往假設當前的狀態只與前面的幾個狀態相關。
預備知識:
人工神經網路
一、狀態和模型
IID資料:分類問題、迴歸問題、特徵表達。
大部分資料都不滿足IID:序列分析、序列生成、內容提取。
1、序列樣本
序列樣本多種多樣,可以一對一、一對多和多對多等。
RNN不僅僅能夠處理序列輸出,同時也能夠得到序列輸出,因此我們可以說RNN學習出來的是程式而不是函式。
2、序列預測:
輸入:時間變化向量序列:
在t時刻通過模型來估計:
序列預測存在的問題:
A. 對內部狀態難以建模和觀察
B. 對長時間範圍的場景(context)難以建模和觀察
解決方案:引入內部隱含狀態變數
3、序列預測模型:
輸入離雜湊序列:
在時間t的更新計算:
預測計算:
整個計算過程中,W保持不變,在0時刻初始化
二、RNN訓練
前向計算,相同W矩陣需要乘以多次;多步之前的輸入x會影響當前的輸出;在後向計算的時候,同樣相同的矩陣也會乘以多次。
1、BPTT演算法(BackProp Through Time)
RNN前向計算
計算W的偏導,把所有的Time Step加起來
應用鏈式規則
2、LSTM(Long Short Term Memory)Cell
是一種應用最為廣泛、成功的RNN方案。
可以長期保持某個狀態,cell state值通過forget gate控制實現保留多少“老”的狀態
Layer把輸入維度x變成輸出維度h。
參考文獻 http://blog.csdn.net/heyongluoyao8/article/details/48636251