從乘法求導法則到BPTT演算法

2022-10-09 18:48:08 字數 1403 閱讀 5698

本文為手稿,旨在搞清楚為什麼bptt演算法會多路反向求導,而不是乙個感性的認識。

假設我們要對e3求導(上圖中的l3),那麼則有:

所以s2是w的函式,也就是說,我們不能說:

因為ws2 = ws2(w),s2裡面包含了w這個變數,s2是w的函式,也許有人會說:「s2裡面的w是常數吧」,那麼請想一想s2的一般表示式。(這裡我其實還是有點過不去,但是我覺得應該是這樣的,不知道各位是否有理解方法)

所以有:

而對函式ws2(w)求導(對w求導),結果為:

s02和w2在rnn中的位置為:

再次注意,上面兩個值不是變數,是乙個具體的值。

然後再求(ws1)`:

另外關於w1,這裡我不太清楚是否繼續要用w2,因為畢竟是對第t=3時刻的w求導,如果後面知道了,再改也不遲。

繼續求下去:

我們假設s-1是全0的向量,那麼s0`就會是0.

然後,我們把上面分開求的結果合併起來,直接計算s3對w的導數:

最後一行就是最終的結果,其實這三項分別對應:

下面是數學表示: 

所以,bptt反向求導為什麼必然會有多路,實際上是因為 s2是w的函式,所以要運用乘法求導法則,最後完全求出(s2w)`之後,便可以寫成這樣的形式:

以下是完整草稿:

本文截圖部分來自我的nlp課程喬波老師的ppt。

從模型到演算法 目錄

出於對資料分析 資料探勘方面的興趣,以及在未來工作上的幫助。本博打算多看一些相關書籍與部落格,總結及翻譯相應的知識點。使得自己對這塊的知識越來越了解,總結的文章初步分為以下章節 第一章,eda 資料探索 第二章,線性回歸與模型診斷 第三章,從線性概率模型到廣義線性模型 第四章,模型中特徵子集的選擇 ...

從分治演算法到 Hadoop MapReduce

要說 hadoop mapreduce 就不得不說分治演算法,而分治演算法其實說白了,就是四個字分而治之。其實就是將乙個複雜的問題分解成多組相同或類似的子問題,對這些子問題再分,然後再分。直到最後的子問題可以簡單得求解。要具體介紹分治演算法,那就不得不說乙個很經典的排序演算法 歸併排序。這裡不說它的...

從程式到演算法 深搜

program ex11 const dx array 1.4 of 1.1 0,1,0,1 dy array 1.4 of 1.1 1,0,1,0 var i,j,n longint a array 0.21,0.21 of char procedure dfs x,y longint var t...