循環神經網絡(Recurrent Neural Network, RNN)

總結自吳恩達老師的網易深度學習工程師微專業

1. 前向傳播

在這裏插入圖片描述
at=g(a)(Waaa<t1>+Waxx<t>+ba)a^{t}=g^{(a)}(W_{aa}a^{<t-1>}+W_{ax}x^{<t>}+b_a)
y^<t>=g(y)(Wyaa<t>+by)\hat y^{<t>}=g^{(y)}(W_{ya}a^{<t>}+b_y)
or, 簡化版
at=g(a)(Wa[a<t1>,x<t>]+ba)a^{t}=g^{(a)}(W_a[a^{<t-1>}, x^{<t>}]+b_a)
y^<t>=g(y)(Wya<t>+by)\hat y^{<t>}=g^{(y)}(W_ya^{<t>}+b_y)

Note

  1. 一般而言,初始激活向量爲:a<0>=0a^{<0>}=\vec0
  2. 通常,g(a)g^{(a)}選擇tanhtanh函數(tanhtanh函數梯度消失的問題會用其他方式解決),有時也會選用relurelu函數。
  3. y^<t>=g(y)(Wyaa<t>+by)\hat y^{<t>}=g^{(y)}(W_{ya}a^{<t>}+b_y)如果是二分類問題,使用sigmoidsigmoid函數,如果是多分類問題,可以使用softmaxsoftmax函數。

2. 損失函數

爲了進行反向傳播計算,使用梯度下降等方法來更新RNN的參數,我們需要定義一個損失函數,如下:
L(y^,y)=t=1TyL<t>(y^<t>,y<t>)=t=1Ty(y<t>log(y^<t>)+(1y<t>)log(1y^<t>))L(\hat y,y)=\sum^{T_y}_{t=1}L^{<t>}(\hat y^{<t>},y^{<t>})=\sum^{T_y}_{t=1}-(y^{<t>}log(\hat y^{<t>})+(1-y^{<t>})log(1-\hat y^{<t>}))

3. BPTT

RNN的反向傳播將在後續部分有專門的介紹。

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