RNN前向傳播與後向傳播公式推導
Recurrent Neural Network(RNN)循環神經網路,循環的意思就是同一網路結構不停的重複。相比較普通的神經網路,循環神經網路的不同之處在於,它在神經元之間還有相互的連接。在隱層上增加了一個反饋連接,也就是說,RNN隱層當前時刻的輸入有一部分是前一時刻的隱層輸出,這使得RNN可以通過循環反饋連接保留前面所有時刻的信息,這賦予了RNN記憶功能。這些特點使得RNN非常適合用於對時序信號的建模。下圖為循環神經網路的結構示意圖:
一. RNN公式
整理一下可以寫為:
是LxN的權重矩陣,連接了N個隱含層單元到L個輸出層單元, 是NxK權重矩陣連接K 個輸入單元到N個隱含層單元, 是NxN權重矩陣,連接N個隱含層單元從時刻t-1到時刻t, 是Nx1隱含層潛向量, 是Lx1輸出層潛向量。
解釋一下這張圖,給定計算t時刻的輸入 求 。輸入 與權 相乘(加上bias)與前一時刻的隱層輸出與權重 即為 , 經過激活函數f之後即為隱含層的 , , 經過激活函數g以後即得到輸出 。 是隱含層激活函數, 是輸出層激活函數。典型的隱含層激活函數有sigmoid,tanh與rectified linear units,典型的輸出函數激活函數linear函數和softmax函數。
有時上一時刻的輸出也會用來更新下一時刻的狀態,這時狀態等式變為:
是連接輸出層到隱含層的權重矩陣,本文中不失一般性都沒有加入 的部分。
(2) 反向傳播
定義最小化目標函數:
使用誤差平方和作為代價函數E, 為真實輸出, 為目標向量。c=0.5是一個便於計算的尺度因子 1/2 (基本trick)。
訓練時使用梯度下降法來優化權重,使得代價函數E的值越小越好。權重w的更新規則是:
其中 是學習率。
為了計算梯度,定義如下誤差項:
記住這三項計算公式,後面的工作都以這幾個公式為指導依次展開
誤差項的遞歸計算:
tips:
在最後一個時間幀(T)上的計算 ,輸出層的計算誤差項:
隱含層:
這裡的求導使用了鏈式求導法則,並且上一步求過的到vt的偏導可以拿來直接向後繼續求誤差項一直計算到 偏導處。
其他時間幀的誤差項:
與最後一幀的公式類似。
對輸出節點和隱層節點遞歸計算的誤差項為:
其中誤差項 是時間幀t的輸出層反向傳播所得, 則是時間幀t+1的隱層反向傳播所得。注意??此處與T時刻不同的地方在於,中間時刻是有兩個部分反向傳播回傳誤差,T時刻作為最後一項是沒有後繼節點的,因此只有y一項回傳誤差項。T時刻可以說是一個特例情況。
更新weight:
輸出層:
輸入層:
循環層矩陣:
偽代碼:
參考:automatic speech recognition-a deep learning approach
下載地址已附上 點擊原文鏈接 直接下載。
推薦閱讀:
※Master並不可怕 人工智慧將激發人類智力潛能
※人類的情感到底是種什麼東西,或者說人類情感的產生從生物學或者物理學上來講是一種什麼機制?
※AI Challenger開賽,千萬量級數據開放,AI高手將上演巔峰對決
※吳鷹:人工智慧不是泡沫太大,是泡沫不夠
※口紅色號花樣頻出,有個科學家用 AI 輔助命名
TAG:RNN | 深度学习DeepLearning | 人工智能 |