理解RNN
RNN與FNN的不同之處在于隱含層各個神經元之間是相互連接的,隱含層的輸入包括正常輸入和反饋輸入(也就是上一個時刻隱含層的輸出反饋個下一個時刻隱含層的輸入),其他結構和BP神經網絡相似
開始RNN的學習:
輸入層的輸出:x
隱含層的輸入:Ih
隱含層的輸出:Oh
輸出層的輸入:Io
輸出層的輸出:Oo
輸入層到隱含層的權值:WIh
隱含層到輸出層的權值:WHo
隱含層到隱含層的權值:WHh
隱含層的閾值:bh
輸出層的閾值:b0
?
第t時刻隱含層第j個神經元的輸入:
Ihj=(∑i=1 to m WIhixi+∑j=1 to n WHhjOhj(t-1))
第t時刻隱含層第j個神經元的輸出:
Ohj=f(Ihj)
第t時刻輸出層第k個神經元的輸入:
Iok=∑j=1 to m WHoOhj
第t時刻輸出層第k個神經元的輸出:
Ook=g(Iok)
第t時刻輸出層第k個神經元的誤差:
ek=(dk-Ook)
網絡總誤差為:
E=1/2∑k=1 to s (ek)2
RNN的學習算法是BPTT算法,與Bp的不同之處就是在隱含層的反饋上,按梯度下降更新權值和閾值:
ΔWHo=α*e*Oh*d(g(Io))
設輸入層的局部梯度為δ=e*d(g(Io))
ΔWIh=α*df(Ih)*x*∑k=1 to s WHoδ
同樣地
ΔWHh=α*df(Ih)*Oh(t-1)*∑k=0 to s WHoδ
推導方法都是鏈式求導法,容易得到上面三式
RNN容易出現梯度消失問題,具體就是當時間步t很大時,激活函數就會被多次累積,及其容易趨于0,導致梯度消失,RNN能記憶很長時間段的內容,例如,“他的名字叫李明,他姓X",RNN需要記住上一個句子,才能準確的預測X,但是需要很長的時間步才能做到,梯度容易趨于0,”水是X色",RNN只需要記住前面幾個詞即可預測X,一般不會出現梯度消失的情況,所以在RNN的t不適宜太大
?
轉載于:https://www.cnblogs.com/semen/p/6862319.html
總結
- 上一篇: [转载]HTTP协议详解
- 下一篇: 关于Webstrom连接github的配