1. 程式人生 > >迴圈神經網路(Recurrent Neural Network, RNN)

迴圈神經網路(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的反向傳播將在後續部分有專門的介紹。