循環神經網絡與前饋神經網絡的異同點
循環神經網絡的原則與前饋神經網絡相同,但是也有以下兩個主要區別,循環神經網絡使用:1. 序列作爲訓練階段的輸入。2. 記憶要素
存儲是隱藏層神經與的輸出,在接下來訓練步驟中將作爲網絡的額外輸入。
在前饋神經網絡中任何時間t的輸出,是當前輸入和權重的函數。這可以用以下方程式很容易表示:
在循環神經網絡中,我們在時間t的輸出不僅取決於當前的輸入和權重,還取決於之前的輸入。在這個例子中,時間t的輸出定義爲:
以下是循環神經網絡的摺疊模型:
在這幅圖中,表示輸入向量,表示輸出向量,表示狀態向量。
: 連接輸入層到狀態層的權重矩陣
: 連接狀態層到輸出層的權重矩陣
: 表示連接之前時間步長狀態到當前時間步長狀態的權重矩陣
RNN的展開模型
下圖是循環神經網絡的基於時間的展開,展開模型通常是我們處理循環神經網絡時使用的方法。
表示輸入向量,表示輸出向量,表示狀態向量。
:連接輸入到狀態層的權重矩陣
:連接狀態層到輸出層的權重矩陣
:連接之前時間步長狀態到當前時間步長狀態的權重矩陣
在前饋神經網絡中,隱藏層只取決於當前的輸入和權重、以及激活函數,具體如下:
在循環神經網絡中,狀態層依賴於當前的輸入及其對應的權重值,激活函數,也 取決於之前的狀態:
輸出向量的計算與前饋神經網絡中完全一致。它是對應權重矩陣的輸入到每個輸出節點的線性組合,也可以是相同線性組合的softmax函數。
或
基於時間的反向傳播算法
對於誤差的計算,我們會使用損失函數,其中
表示時間t的輸出誤差
表示時間t的理想輸出
表示在時間t的計算輸出
在基於時間的反向傳播算法中,我們在時間步長t訓練網絡,也會考慮之前的所有步長。
我們用以下例子來講解反向傳播算法理論:
在這個例子中,我們將關注時間步長 t=3 時基於時間的反向傳播算法過程,所以需要調整權重的矩陣有, 我們需要考慮時間步長3,時間步長2和時間步長1。
我們關注時間步長t=3時,損失函數爲
爲了更新每個權重矩陣,我們需要找到時間爲 3 損失函數的偏導數,作爲所有權重矩陣的函數。我們將使用梯度下降,修改每個矩陣,同時考慮之前的時間步長。
下面將示例調整兩個權重矩陣時如何使用基於時間的反向傳播算法:
: 連接狀態和輸出的權重矩陣
: 連接一個狀態和下一個狀態的權重矩陣
下面是時間步長爲3的展開模型:
調整所需的梯度計算:
通過簡單的一步鏈式法則,可以得到對於損失函數的偏導數:
一般來說,我們可以追溯多個時間步長,而不是像這個例子那樣只有3個時間步長。對於任意時間步長N,調整所需的梯度計算爲
調整所需的梯度計算:
我們仍然需要調整連接一個狀態和下一個狀態的權重矩陣以及連接輸入和狀態的權重矩陣。我們可以任意從開始。爲了理解基於時間的反向傳播算法過程,我們可以簡化展開模型。我們將重點介紹對輸出的貢獻,具體如下:
計算損失函數的偏導數時,我們需要考慮有利於輸出的所有狀態。這個例子中,狀態取決於之前的狀態,而之前的狀態也取決於前面的,即第一個狀態。
基於時間的反向傳播算法中,我們將考慮每個狀態的每個梯度,累加所有這些貢獻。
- 在時間步長t = 3時,對來自 的梯度貢獻如下:
- 時間步長 t=3 時,對來自的梯度貢獻如下:
- 時間步長 t=3 時,來自的梯度貢獻如下:
考慮以下三個狀態的貢獻後:, , , 我們將累加它們來找到最終的梯度計算, 下列方程式是使用基於時間的反向傳播算法來調整的梯度:
這個例子中,我們需要考慮三個時間步長,所以我們累加了三個偏導數的計算。一般來說,我們可以追溯多個時間步長。當反向退後一步,我們在鏈式法則中就需要考慮一個額外的偏導數。從數學角度上來說,這可以用下面的通用方程式表示,使用基於時間的反向傳播算法 來調整:
調整所需的梯度計算
計算損失函數的偏導數時,我們需要再次考慮所有對輸出有貢獻的狀態。與我們之前見到的一樣,在這個例子中,狀態取決於之前的狀態,而之前的狀態也取決於前面的,即第一個狀態。在基於時間的反向傳播算法中,我們將考慮每個狀態中的每個梯度,累加所有貢獻.
- 時間步長 t=3 時,來自 的梯度貢獻如下:
- 時間步長 t=3 時,來自 的梯度貢獻如下:
- 時間步長 t=3 時,來自 的梯度貢獻如下:
考慮以下三個狀態的貢獻後:, , , 我們將累加它們來找到最終的梯度計算, 下列方程式是使用基於時間的反向傳播算法來調整的梯度:
這個例子中,我們需要考慮三個時間步長,所以我們累加了三個偏導數的計算。一般來說,我們可以追溯多個時間步長。當反向退後一步,我們在鏈式法則中就需要考慮一個額外的偏導數。從數學角度上來說,這可以用下面的通用方程式表示,使用基於時間的反向傳播算法 來調整: