RNN前向傳播與後向傳播公式推導

Recurrent Neural Network(RNN)循環神經網路,循環的意思就是同一網路結構不停的重複。相比較普通的神經網路,循環神經網路的不同之處在於,它在神經元之間還有相互的連接。在隱層上增加了一個反饋連接,也就是說,RNN隱層當前時刻的輸入有一部分是前一時刻的隱層輸出,這使得RNN可以通過循環反饋連接保留前面所有時刻的信息,這賦予了RNN記憶功能。這些特點使得RNN非常適合用於對時序信號的建模。下圖為循環神經網路的結構示意圖:

一. RNN公式

整理一下可以寫為:

W_{hy} 是LxN的權重矩陣,連接了N個隱含層單元到L個輸出層單元, W_{xh} 是NxK權重矩陣連接K 個輸入單元到N個隱含層單元, W_{hh}是NxN權重矩陣,連接N個隱含層單元從時刻t-1到時刻t,u_t=W_{xh}x_t+W_{hh}h_{t-1} 是Nx1隱含層潛向量, v_t=W_{hy}x_t+h_t 是Lx1輸出層潛向量。

解釋一下這張圖,給定計算t時刻的輸入 x_ty_t 。輸入 x_t 與權 w_{xh} 相乘(加上bias)與前一時刻的隱層輸出與權重 h_{t-1}w_{hh} 即為 u_tu_t 經過激活函數f之後即為隱含層的 h_tv_t=h_tw_{hy}v_t經過激活函數g以後即得到輸出 y_tf(u_t) 是隱含層激活函數, g(v_t) 是輸出層激活函數。典型的隱含層激活函數有sigmoid,tanh與rectified linear units,典型的輸出函數激活函數linear函數和softmax函數。

有時上一時刻的輸出也會用來更新下一時刻的狀態,這時狀態等式變為:

W_{yh} 是連接輸出層到隱含層的權重矩陣,本文中不失一般性都沒有加入 y_{t-1} 的部分。

(2) 反向傳播

定義最小化目標函數:

使用誤差平方和作為代價函數E, y_t 為真實輸出, I_t 為目標向量。c=0.5是一個便於計算的尺度因子 1/2 (基本trick)。

訓練時使用梯度下降法來優化權重,使得代價函數E的值越小越好。權重w的更新規則是:

其中 gamma 是學習率。

為了計算梯度,定義如下誤差項:

記住這三項計算公式,後面的工作都以這幾個公式為指導依次展開

誤差項的遞歸計算:

tips:

在最後一個時間幀(T)上的計算 ,輸出層的計算誤差項:

隱含層:

這裡的求導使用了鏈式求導法則,並且上一步求過的到vt的偏導可以拿來直接向後繼續求誤差項一直計算到 u_t 偏導處。

其他時間幀的誤差項:

與最後一幀的公式類似。

對輸出節點和隱層節點遞歸計算的誤差項為:

其中誤差項 delta_t^y 是時間幀t的輸出層反向傳播所得, delta_{t+1}^h則是時間幀t+1的隱層反向傳播所得。注意??此處與T時刻不同的地方在於,中間時刻是有兩個部分反向傳播回傳誤差,T時刻作為最後一項是沒有後繼節點的,因此只有y一項回傳誤差項。T時刻可以說是一個特例情況。

更新weight:

輸出層:

輸入層:

循環層矩陣:

偽代碼:

參考:automatic speech recognition-a deep learning approach

下載地址已附上 點擊原文鏈接 直接下載。


推薦閱讀:

Master並不可怕 人工智慧將激發人類智力潛能
人類的情感到底是種什麼東西,或者說人類情感的產生從生物學或者物理學上來講是一種什麼機制?
AI Challenger開賽,千萬量級數據開放,AI高手將上演巔峰對決
吳鷹:人工智慧不是泡沫太大,是泡沫不夠
口紅色號花樣頻出,有個科學家用 AI 輔助命名

TAG:RNN | 深度学习DeepLearning | 人工智能 |