迴歸神經網絡RNN(Recurrent Neural network)

RNN不同於前饋神經網絡,被認爲具有記憶能力。其輸入被看作一個序列,形如xt(x1,x2,x3...) 其數學模型如下:
ht=h(W1ht1+U2xt+b1)
yt=f(Vht+b2)
這裏ht 表示在t時的狀態,yt 表示在t時的輸出,h和f是非線性函數,常用sigmoid函數f(x)=11+ex ,W U V 和b是需要學習的變量。這裏的關鍵是t時的狀態是由t-1時的狀態和t時的輸入共同得到,也就是說理論上RNN可以記住任意長序列的輸入。它和前饋神經網絡相比還具有不限定長度的輸入序列,比如在自然語言模型中,需要估計一個句子出現的概念,而每個句子的長度是不固定的。

和前饋神經網絡一樣,RNN也可以通過Backpropagation算法進行訓練即BPTT算法。其目標函數所有時間點上的成本函數的和:
E=Tt=1et (1)
對W求倒數:
dEdW=Tt=1detdw (2),其中
detdW=detdytdytdhtdhtdW (3)
dhtdW = dhtdht1dht1W+dhtdW (4) 注意等式右邊是將W和ht1 看成不相關的變量
以此類推:
dht1dW = dht1dht2dht2W+dht1dW (5) 以此類推並將其代入前面式子的右邊就可以得到:
dhtdW=tk=1dhtdhkdhkdW (6)
將(6)代入(3)就得到:
detdW=tk=1detdytdytdhtdhtdhkdhkdW
這裏很容易得到:
dhtdhk=tj=k+1dhjdhj1
推導完成。

上面BPTT算法會遇到導數逐漸消失或趨於無窮大的問題,LSTM是很好的解決方案 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章