RNN

循環神經網絡與前饋神經網絡的異同點

循環神經網絡的原則與前饋神經網絡相同,但是也有以下兩個主要區別,循環神經網絡使用:1. 序列作爲訓練階段的輸入。2. 記憶要素
存儲是隱藏層神經與的輸出,在接下來訓練步驟中將作爲網絡的額外輸入。
在前饋神經網絡中任何時間t的輸出,是當前輸入和權重的函數。這可以用以下方程式很容易表示:
yt=F(xt,W)y_t = F(x_t, W)
在循環神經網絡中,我們在時間t的輸出不僅取決於當前的輸入和權重,還取決於之前的輸入。在這個例子中,時間t的輸出定義爲:
yt=F(xt,x(t1),x(t2),...,x(tt0),W)y_t = F(x_t, x_(t-1), x_(t-2), ..., x_(t-t_0), W)
以下是循環神經網絡的摺疊模型:
在這裏插入圖片描述
在這幅圖中,a\overline{a}表示輸入向量,y\overline{y}表示輸出向量,s\overline{s}表示狀態向量。
WxW_x: 連接輸入層到狀態層的權重矩陣
WyW_y: 連接狀態層到輸出層的權重矩陣
WsW_s: 表示連接之前時間步長狀態到當前時間步長狀態的權重矩陣

RNN的展開模型

下圖是循環神經網絡的基於時間的展開,展開模型通常是我們處理循環神經網絡時使用的方法。
在這裏插入圖片描述
x\overline{x}表示輸入向量,y\overline{y}表示輸出向量,s\overline{s}表示狀態向量。
WxW_x:連接輸入到狀態層的權重矩陣
WyW_y:連接狀態層到輸出層的權重矩陣
WsW_s:連接之前時間步長狀態到當前時間步長狀態的權重矩陣
在前饋神經網絡中,隱藏層只取決於當前的輸入和權重、以及激活函數Φ\Phi,具體如下:
h=Φ(xW)\overline{h}=\Phi(\overline{x}W)
在循環神經網絡中,狀態層依賴於當前的輸入及其對應的權重值,激活函數,也 取決於之前的狀態:
st=Φ(xtWx+st1Ws)\overline{s}_t=\Phi(\overline{x}_tW_x + \overline{s}_{t-1}W_s)
輸出向量的計算與前饋神經網絡中完全一致。它是對應權重矩陣WyW_y的輸入到每個輸出節點的線性組合,也可以是相同線性組合的softmax函數。
yt=stWy\overline{y}_t=\overline{s}_tW_y

yt=σ(stWy)\overline{y}_t=\sigma(\overline{s}_tW_y)

基於時間的反向傳播算法

對於誤差的計算,我們會使用損失函數,其中
EtE_t表示時間t的輸出誤差
dtd_t表示時間t的理想輸出
yty_t表示在時間t的計算輸出
Et=(dtyt)2E_t=(\overline{d}_t - \overline{y}_t)^2
在基於時間的反向傳播算法中,我們在時間步長t訓練網絡,也會考慮之前的所有步長。
我們用以下例子來講解反向傳播算法理論:
在這個例子中,我們將關注時間步長 t=3 時基於時間的反向傳播算法過程,所以需要調整權重的矩陣有Wx,Ws,WyW_x, W_s, W_y, 我們需要考慮時間步長3,時間步長2和時間步長1。
我們關注時間步長t=3時,損失函數爲E3=(d3y3)2E_3=(\overline{d}_3 - \overline{y}_3)^2
在這裏插入圖片描述
爲了更新每個權重矩陣,我們需要找到時間爲 3 損失函數的偏導數,作爲所有權重矩陣的函數。我們將使用梯度下降,修改每個矩陣,同時考慮之前的時間步長。
在這裏插入圖片描述
下面將示例調整兩個權重矩陣時如何使用基於時間的反向傳播算法:
WyW_y: 連接狀態和輸出的權重矩陣
WsW_s: 連接一個狀態和下一個狀態的權重矩陣
下面是時間步長爲3的展開模型:
在這裏插入圖片描述

調整WyW_y所需的梯度計算:

通過簡單的一步鏈式法則,可以得到對於WyW_y損失函數的偏導數:
在這裏插入圖片描述
一般來說,我們可以追溯多個時間步長,而不是像這個例子那樣只有3個時間步長。對於任意時間步長N,調整wyw_y所需的梯度計算爲
在這裏插入圖片描述

調整WsW_s所需的梯度計算:

我們仍然需要調整連接一個狀態和下一個狀態的權重矩陣WsW_s以及連接輸入和狀態的權重矩陣WxW_x。我們可以任意從WsW_s開始。爲了理解基於時間的反向傳播算法過程,我們可以簡化展開模型。我們將重點介紹WsW_s對輸出的貢獻,具體如下:
在這裏插入圖片描述
計算WsW_s損失函數的偏導數時,我們需要考慮有利於輸出的所有狀態。這個例子中,狀態s3\overline{s}_3取決於之前的狀態s2\overline{s}_2,而之前的狀態也取決於前面的s1\overline{s}_1,即第一個狀態。
基於時間的反向傳播算法中,我們將考慮每個狀態的每個梯度,累加所有這些貢獻。

  1. 在時間步長t = 3時,對來自s3\overline{s}_3 的梯度貢獻如下:
    在這裏插入圖片描述
  2. 時間步長 t=3 時,對來自s2\overline{s}_2的梯度貢獻如下:
    在這裏插入圖片描述
  3. 時間步長 t=3 時,來自s1\overline{s}_1的梯度貢獻如下:
    在這裏插入圖片描述
    考慮以下三個狀態的貢獻後:s3\overline{s}_3, s2\overline{s}_2, s1\overline{s}_1, 我們將累加它們來找到最終的梯度計算, 下列方程式是使用基於時間的反向傳播算法來調整WsW_s的梯度:
    在這裏插入圖片描述
    這個例子中,我們需要考慮三個時間步長,所以我們累加了三個偏導數的計算。一般來說,我們可以追溯多個時間步長。當反向退後一步,我們在鏈式法則中就需要考慮一個額外的偏導數。從數學角度上來說,這可以用下面的通用方程式表示,使用基於時間的反向傳播算法 來調整WsW_s
    在這裏插入圖片描述
調整WxW_x所需的梯度計算

在這裏插入圖片描述
計算WxW_x損失函數的偏導數時,我們需要再次考慮所有對輸出有貢獻的狀態。與我們之前見到的一樣,在這個例子中,狀態s3\overline{s}_3取決於之前的狀態s2\overline{s}_2,而之前的狀態也取決於前面的s1\overline{s}_1,即第一個狀態。在基於時間的反向傳播算法中,我們將考慮每個狀態中的每個梯度,累加所有貢獻.

  1. 時間步長 t=3 時,來自s3\overline{s}_3 的梯度貢獻如下:
    在這裏插入圖片描述
  2. 時間步長 t=3 時,來自s2\overline{s}_2 的梯度貢獻如下:
    在這裏插入圖片描述
  3. 時間步長 t=3 時,來自s1\overline{s}_1 的梯度貢獻如下:
    在這裏插入圖片描述
    考慮以下三個狀態的貢獻後:s3\overline{s}_3, s2\overline{s}_2, s1\overline{s}_1, 我們將累加它們來找到最終的梯度計算, 下列方程式是使用基於時間的反向傳播算法來調整WxW_x的梯度:
    在這裏插入圖片描述
    這個例子中,我們需要考慮三個時間步長,所以我們累加了三個偏導數的計算。一般來說,我們可以追溯多個時間步長。當反向退後一步,我們在鏈式法則中就需要考慮一個額外的偏導數。從數學角度上來說,這可以用下面的通用方程式表示,使用基於時間的反向傳播算法 來調整WxW_x
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章