1.4 通过时间的反向传播-深度学习第五课《序列模型》-Stanford吴恩达教授
| 1.3 循環神經網絡 | 回到目錄 | 1.5 不同類型的循環神經網絡 |
通過時間的反向傳播 (Backpropagation through time)
之前我們已經學過了循環神經網絡的基礎結構,在本節視頻中我們將來了解反向傳播是怎樣在循環神經網絡中運行的。和之前一樣,當你在編程框架中實現循環神經網絡時,編程框架通常會自動處理反向傳播。但我認為,在循環神經網絡中,對反向傳播的運行有一個粗略的認識還是非常有用的,讓我們來一探究竟。
在之前你已經見過對于前向傳播(上圖藍色箭頭所指方向)怎樣在神經網絡中從左到右地計算這些激活項,直到輸出所有地預測結果。而對于反向傳播,我想你已經猜到了,反向傳播地計算方向(上圖紅色箭頭所指方向)與前向傳播基本上是相反的。
我們來分析一下前向傳播的計算,現在你有一個輸入序列, x<1>,x<2>,x<3>x^{<1>},x^{<2>},x^{<3>}x<1>,x<2>,x<3> 一直到 x<Tx>x^{<T_x>}x<Tx?> ,然后用 x<1>x^{<1>}x<1> 還有 a<0>a^{<0>}a<0> 計算出時間步1的激活項,再用 x<2>x^{<2>}x<2> 和 a<1>a^{<1>}a<1> 計算出 a<2>a^{<2>}a<2> ,然后計算 a<3>a^{<3>}a<3> 等等,一直到 a<Tx>a^{<T_x>}a<Tx?> 。
為了真正計算出 a<1>a^{<1>}a<1> ,你還需要一些參數, WaW_aWa? 和 bab_aba? ,用它們來計算出 a<1>a^{<1>}a<1> 。這些參數在之后的每一個時間步都會被用到,于是繼續用這些參數計算 a<2>,a<3>a^{<2>},a^{<3>}a<2>,a<3> 等等,所有的這些激活項都要取決于參數 WaW_aWa? 和 bab_aba? 。有了 a<1>a^{<1>}a<1> ,神經網絡就可以計算第一個預測值 y^<1>\hat{y}^{<1>}y^?<1> ,接著到下一個時間步,繼續計算出 y^<2>,y^<3>\hat{y}^{<2>},\hat{y}^{<3>}y^?<2>,y^?<3> ,等等,一直到 y^<Ty>\hat{y}^{<T_y>}y^?<Ty?> 。為了計算出 y^\hat{y}y^? ,需要參數 WyW_yWy? 和 byb_yby? ,它們將被用于所有這些節點。
然后為了計算反向傳播,你還需要一個損失函數。我們先定義一個元素損失函數(上圖編號1所示)
L<t>(y^<t>,y<t>)=?y<t>log?y^<t>?(1?y<t>)log?(1?y^<t>)L^{<t>}(\hat{y}^{<t>},y^{<t>})=-y^{<t>}\log \hat{y}^{<t>}-(1-y^{<t>})\log(1-\hat{y}^{<t>})L<t>(y^?<t>,y<t>)=?y<t>logy^?<t>?(1?y<t>)log(1?y^?<t>)
它對應的是序列中一個具體的詞,如果它是某個人的名字,那么 y<t>y^{<t>}y<t> 的值就是1,然后神經網絡將輸出這個詞是名字的概率值,比如0.1。我將它定義為標準邏輯回歸損失函數,也叫交叉熵損失函數(Cross Entropy Loss),它和之前我們在二分類問題中看到的公式很像。所以這是關于單個位置上或者說某個時間步 ttt 上某個單詞的預測值的損失函數。
現在我們來定義整個序列的損失函數,將 LLL 定義為(上圖編號2所示)
L(y^,y)=∑t=1TxL<t>(y^<t>,y<t>)L(\hat{y},y)=\sum_{t=1}^{T_x}L^{<t>}(\hat{y}^{<t>},y^{<t>})L(y^?,y)=∑t=1Tx??L<t>(y^?<t>,y<t>)
在這個計算圖中,通過 y^<1>\hat{y}^{<1>}y^?<1> 可以計算對應的損失函數,于是計算出第一個時間步的損失函數(上圖編號3所示),然后計算出第二個時間步的損失函數,然后是第三個時間步,一直到最后一個時間步,最后為了計算出總體損失函數,我們要把它們都加起來,通過下面的等式(上圖編號2所示的等式)計算出最后的 LLL (上圖編號4所示),也就是把每個單獨時間步的損失函數都加起來。
這就是完整的計算圖,在之前的例子中,你已經見過反向傳播,所以你應該能夠想得到反向傳播算法需要在相反的方向上進行計算和傳遞信息,最終你做的就是把前向傳播的箭頭都反過來,在這之后你就可以計算出所有合適的量,然后你就可以通過導數相關的參數,用梯度下降法來更新參數。
在這個反向傳播的過程中,最重要的信息傳遞或者說最重要的遞歸運算就是這個從右到左的運算,這也就是為什么這個算法有一個很別致的名字,叫做“通過(穿越)時間反向傳播(backpropagation through time)”。取這個名字的原因是對于前向傳播,你需要從左到右進行計算,在這個過程中,時刻 ttt 不斷增加。而對于反向傳播,你需要從右到左進行計算,就像時間倒流。“通過時間反向傳播”,就像穿越時光,這種說法聽起來就像是你需要一臺時光機來實現這個算法一樣。
RNN反向傳播示意圖:
希望你大致了解了前向和反向傳播是如何在RNN中工作的,到目前為止,你只見到了RNN中一個主要的例子,其中輸入序列的長度和輸出序列的長度是一樣的。在下節課將展示更多的RNN架構,這將讓你能夠處理一些更廣泛的應用。
課程板書
| 1.3 循環神經網絡 | 回到目錄 | 1.5 不同類型的循環神經網絡 |
總結
以上是生活随笔為你收集整理的1.4 通过时间的反向传播-深度学习第五课《序列模型》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.3 循环神经网络模型-深度学习第五课
- 下一篇: 1.5 不同类型的循环网络-深度学习第五