LSTM后向傳播細致推導

概述

????????有了前面的簡單RNN后向傳播推導的鋪墊县钥,我們在來推導LSTM的后向傳播就有比較明確的思路了赘那;在宏觀上只是將RNN的循環(huán)單元換成LSTM的細胞帜讲。

? ? ? ? 雖然LSTM的公式看起來挺麻煩的脯爪,但是我們只要牢記鏈式法則:“復合函數(shù)的雅可比矩陣等于雅可比矩陣的復合”;并且像RNN中一樣昏翰,將“循環(huán)變量的遞歸梯度”小心地處理好即可浇辜。

? ? ? ? 其實再多看幾遍LSTM傳播公式,它們的形式幾乎一樣岖研,所以真的沒什么可怕的卿操。

LSTM前向傳播

????????這里我們仍然使用簡單RNN的后向傳播公式推導中的記號約定,并且我們仍然使用RNN后向傳播公式中的RNN結構孙援,只是將前兩行換成了如下新的6行害淤,后面的4行保持不變;即一個LSTM層加一個softmax分類層拓售。


\begin{aligned}& \boldsymbol f^{(t)} = \sigma(U_{f}\boldsymbol x^{(t)} + W_{f} \boldsymbol h^{(t-1)} + \boldsymbol b_f) \\& \boldsymbol i^{(t)} = \sigma(U_{i} \boldsymbol x^{(t)} + W_{i} \boldsymbol h^{(t-1)}+\boldsymbol b_i) \\& \tilde {\boldsymbol c}^{(t)} = {\rm tanh}(U_{c}\boldsymbol x^{(t)} + W_{c}\boldsymbol h^{(t-1)} +\boldsymbol b_c) \\& \boldsymbol c^{(t)} = \boldsymbol i^{(t)} \odot \tilde { \boldsymbol c}^{(t)} + \boldsymbol f^{(t)} \odot \boldsymbol c^{(t-1)} \\& \boldsymbol o^{(t)} = \sigma(U_{o}\boldsymbol x^{(t)} + W_{o}\boldsymbol h^{(t-1)} +\boldsymbol b_o) \\  &\boldsymbol h^{(t)} =  \boldsymbol o^{(t)} \odot {\rm tanh}(\boldsymbol c^{(t)}) \\\\& \boldsymbol a^{(t)} = V\boldsymbol h^{(t)} + \boldsymbol d \\&\hat{\boldsymbol y}^{(t)} = {\rm softmax}( \boldsymbol  a^{(t)}) \\& L^{(t)} = {\rm CrossEntropy}( \hat{ \boldsymbol  y}^{(t)}, \boldsymbol y^{(t)}) \\ &L = \sum_{t=1}^{T} L^{(t)}\end{aligned}

LSTM后向傳播

????????由于后4行(網絡的第二層到損失函數(shù))與RNN推導中的一樣窥摄,后向傳播也一樣,我們直接從LSTM block開始础淤。一些求導結果也直接從RNN推導那邊借用過來崭放,不再詳述過程;激活函數(shù)求導從這里拿來用值骇;只是這里有個新的運算-“阿達瑪(Hadamard)乘積\odot“莹菱,即”逐點相乘運算“移国。順便提一下吱瘩,下面所有的兩個向量相乘表示的就是阿達瑪乘積,這是記號的濫用而已迹缀。

\boldsymbol y = \boldsymbol a \odot \boldsymbol x使碾,其中\boldsymbol y, \boldsymbol x, \boldsymbol a均為長度相等的向量蜜徽,其定義為:

\begin{aligned}\begin{cases}y_1 &= a_1 \cdot x_1\\y_2 &= a_2 \cdot x_2\\&\vdots\\y_n &= a_n \cdot x_n\end{cases}\end{aligned}

????????易知,其求導結果為:\frac{\partial \boldsymbol y}{\partial \boldsymbol x} = {\rm diag}(\boldsymbol a), \frac{\partial \boldsymbol y}{\partial \boldsymbol a} = {\rm diag}(\boldsymbol x)票摇,下面開始進入正題:

????????使用后向傳播的視角審視公式拘鞋,發(fā)現(xiàn)我們碰到的第一個問題是一個最重要的求導,即\frac{\partial L}{\partial \boldsymbol h^{(t)}}矢门;和RNN中的推導一樣盆色,由于涉及到循環(huán)鏈接,所以需要小心處理祟剔。先把整體公式擺出來:

\begin{aligned}\frac{\partial L}{\partial \boldsymbol h^{(t)}} &= \frac{\partial L}{\partial \boldsymbol a^{(t)}} \frac{\partial \boldsymbol a^{(t)}}{\partial \boldsymbol h^{(t)}} + \frac{\partial L}{\partial \boldsymbol h^{(t+1)}} \frac{\partial \boldsymbol h^{(t+1)}}{\partial \boldsymbol h^{(t)}} \\&= (\hat{\boldsymbol y}^{(t)} - \boldsymbol y^{(t)})^T V+  \frac{\partial L}{\partial \boldsymbol h^{(t+1)}} \frac{\partial \boldsymbol h^{(t+1)}}{\partial \boldsymbol h^{(t)}} \end{aligned} \quad \cdots (1)

????????為了搞清楚\begin{aligned}\frac{\partial \boldsymbol h^{(t+1)}}{\partial \boldsymbol h^{(t)}} \end{aligned}隔躲,先別著急,我們把前向傳播在t+1時刻的式子重新擺出來看看:

\begin{aligned}& \boldsymbol f^{(t+1)} = \sigma(U_{f}\boldsymbol x^{(t+1)} + W_{f} \boldsymbol h^{(t)} + \boldsymbol b_f) \\& \boldsymbol i^{(t+1)} = \sigma(U_{i} \boldsymbol x^{(t+1)} + W_{i} \boldsymbol h^{(t)}+\boldsymbol b_i) \\& \tilde {\boldsymbol c}^{(t+1)} = {\rm tanh}(U_{c}\boldsymbol x^{(t+1)} + W_{c}\boldsymbol h^{(t)} +\boldsymbol b_c) \\& \boldsymbol c^{(t+1)} = \boldsymbol i^{(t+1)} \odot \tilde { \boldsymbol c}^{(t+1)} + \boldsymbol f^{(t+1)} \odot \boldsymbol c^{(t)} \\& \boldsymbol o^{(t+1)} = \sigma(U_{o}\boldsymbol x^{(t+1)} + W_{o}\boldsymbol h^{(t)} +\boldsymbol b_o) \\  &\boldsymbol h^{(t+1)} =  \boldsymbol o^{(t+1)} \odot {\rm tanh}(\boldsymbol c^{(t+1)})\end{aligned}

????????發(fā)現(xiàn)\boldsymbol h^{(t)}通過W_i,W_f,W_c,W_o分別直接影響著\boldsymbol  i^{(t+1)}, \boldsymbol  f^{(t+1)}, \tilde{\boldsymbol  c}^{(t+1)}, \boldsymbol  o^{(t+1)}物延,并且間接地影響著\boldsymbol  c^{(t+1)}宣旱,最終間接地影響著\boldsymbol  h^{(t+1)};搞清楚函數(shù)的復合過程叛薯,我們可以開始求導了浑吟。

\begin{aligned}\frac{\partial \boldsymbol h^{(t+1)}}{\partial \boldsymbol h^{(t)}}&= \frac{\partial \boldsymbol h^{(t+1)}}{\partial \boldsymbol o^{(t+1)}}  \frac{\partial \boldsymbol o^{(t+1)}}{\partial \boldsymbol h^{(t)}}+\frac{\partial \boldsymbol h^{(t+1)}}{\partial \boldsymbol c^{(t+1)}}[ \frac{\partial \boldsymbol c^{(t+1)}}{\partial \boldsymbol i^{(t+1)}} \frac{\partial \boldsymbol i^{(t+1)}}{\partial \boldsymbol h^{(t)}}+\frac{\partial \boldsymbol c^{(t+1)}}{\partial \tilde{\boldsymbol c}^{(t+1)}} \frac{\partial \tilde{\boldsymbol c}^{(t+1)}}{\partial \boldsymbol h^{(t)}}+\frac{\partial \boldsymbol c^{(t+1)}}{\partial \boldsymbol f^{(t+1)}} \frac{\partial \boldsymbol f^{(t+1)}}{\partial \boldsymbol h^{(t)}}  ] \\&= {\rm diag}({\rm tanh}(\boldsymbol c^{(t+1)})) {\rm diag}(\boldsymbol o^{t+1} - (\boldsymbol o^{t+1})^2)W_o \\&  + {\rm diag}(\boldsymbol o^{t+1}) {\rm diag}(\boldsymbol 1 - (\boldsymbol c^{t+1})^2)\{ {\rm diag}(\tilde{\boldsymbol c}^{(t+1)}){\rm diag}(\boldsymbol i^{(t+1)} (\boldsymbol 1 - \boldsymbol i^{(i+1)}))W_i \\&\quad \quad +{\rm diag}(\boldsymbol i^{(t+1)}){\rm diag}(\boldsymbol 1 - (\tilde{\boldsymbol c}^{(t+1)})^2)W_c \\&\quad \quad+ {\rm diag}(\boldsymbol c^{(t+1)}) {\rm diag}(\boldsymbol f^{(t+1)}(\boldsymbol 1- \boldsymbol f^{(t+1)}))W_f\}\end{aligned}

代入上面(1)式,就得到\frac{\partial L}{\partial \boldsymbol h^{(t)}} 的表達式耗溜。并且當t=T時组力,第二項消失,有\begin{aligned}\frac{\partial L}{\partial \boldsymbol h^{(T)}} &= \frac{\partial L}{\partial \boldsymbol a^{(T)}} \frac{\partial \boldsymbol a^{(T)}}{\partial \boldsymbol h^{(T)}}  = (\hat{\boldsymbol y}^{(T)} - \boldsymbol y^{(T)})^T V\end{aligned}抖拴,這是遞歸的起始步忿项。(注意,括號上的T表示矩陣轉置)


由于細胞態(tài)也存在循環(huán)結構城舞,因此同樣的思路再做一遍轩触;有了 \frac{\partial L}{\partial \boldsymbol h^{(t)}} ,這次就很簡單了:

\begin{aligned}\frac{\partial L}{\partial \boldsymbol c^{(t)}} &= \frac{\partial L}{\partial \boldsymbol h^{(t)}} \frac{\partial \boldsymbol h^{(t)}}{\partial \boldsymbol c^{(t)}} + \frac{\partial L}{\partial \boldsymbol c^{(t+1)}} \frac{\partial \boldsymbol c^{(t+1)}}{\partial \boldsymbol c^{(t)}} \\&=  \frac{\partial L}{\partial \boldsymbol h^{(t)}} {\rm diag}(\boldsymbol o^{(t)}) {\rm diag}(\boldsymbol 1 - {\rm tanh}^2(\boldsymbol c^{(t)})) + \frac{\partial L}{\partial \boldsymbol c^{(t+1)}}  {\rm diag}(\boldsymbol f^{(t+1)})\end{aligned} \quad \cdots (2)

和RNN求導中的情況一樣家夺,我們設輸出門中的預激活值為\boldsymbol o_{pre}^{(t)} = U_{o}\boldsymbol x^{(t)} + W_{o}\boldsymbol h^{(t-1)} +\boldsymbol b_o脱柱,所以有:

\begin{aligned} \frac{\partial L}{\partial \boldsymbol o_{pre}^{(t)}} &=  \frac{\partial L}{\partial \boldsymbol h^{(t)}} \frac{\partial  \boldsymbol h^{(t)}} {\partial \boldsymbol o^{(t)}}  \frac{\partial  \boldsymbol o^{(t)}} {\partial \boldsymbol o_{pre}^{(t)}} \\&=\frac{\partial L}{\partial \boldsymbol h^{(t)}} {\rm diag}({\rm tanh}(\boldsymbol c^{t})){\rm diag}(\boldsymbol o^{(t)}(\boldsymbol 1 - \boldsymbol o^{(t)})) \end{aligned}

 \frac{\partial L}{\partial (W_{o})_{ij}} =\left[\frac{\partial L}{\partial \boldsymbol o_{pre}^{(t)}} \right]_{i} h^{(t-1)}_{j},所以有:

 \frac{\partial L}{\partial W_o}  = \sum_{t=1}^{T}  \left [\frac{\partial L}{\partial \boldsymbol o_{pre}^{(t)}}  \right]^T (\boldsymbol h^{(t-1)})^T \equiv \sum_{t=1}^{T}  ({\nabla_{\boldsymbol o_{pre}^{(t)}} L} ) (\boldsymbol h^{(t-1)})^T

\begin{aligned}&\frac{\partial L}{\partial W_i}= \\&\frac{\partial L}{\partial W_f}=\\&\frac{\partial L}{\partial W_c}= \\&\frac{\partial L}{\partial b_i}=\\&\frac{\partial L}{\partial b_o}=\\&\frac{\partial L}{\partial b_f}=\\&\frac{\partial L}{\partial b_c}=\\\end{aligned}TODO拉馋,類似的東西真是懶得寫


還有一些LSTM的變體榨为,例如在所有的控制門上加了peephole,后向傳播時不過是加了幾組參數(shù)煌茴。

參考:http://colah.github.io/posts/2015-08-Understanding-LSTMs/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末随闺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蔓腐,更是在濱河造成了極大的恐慌矩乐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異散罕,居然都是意外死亡分歇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門欧漱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來职抡,“玉大人,你說我怎么就攤上這事误甚「克Γ” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵窑邦,是天一觀的道長蹄胰。 經常有香客問我,道長奕翔,這世上最難降的妖魔是什么裕寨? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮派继,結果婚禮上宾袜,老公的妹妹穿的比我還像新娘。我一直安慰自己驾窟,他們只是感情好庆猫,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绅络,像睡著了一般月培。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恩急,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天杉畜,我揣著相機與錄音,去河邊找鬼衷恭。 笑死此叠,一個胖子當著我的面吹牛,可吹牛的內容都是我干的随珠。 我是一名探鬼主播灭袁,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窗看!你這毒婦竟也來了茸歧?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤显沈,失蹤者是張志新(化名)和其女友劉穎软瞎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡铜涉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了遂唧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芙代。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖盖彭,靈堂內的尸體忽然破棺而出纹烹,到底是詐尸還是另有隱情,我是刑警寧澤召边,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布铺呵,位于F島的核電站调缨,受9級特大地震影響删咱,放射性物質發(fā)生泄漏。R本人自食惡果不足惜终吼,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一贞盯、第九天 我趴在偏房一處隱蔽的房頂上張望音念。 院中可真熱鬧,春花似錦躏敢、人聲如沸闷愤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讥脐。三九已至,卻和暖如春啼器,著一層夾襖步出監(jiān)牢的瞬間旬渠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工端壳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坟漱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓更哄,卻偏偏與公主長得像芋齿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子成翩,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內容

  • 這里參考的是Ian Goodfellow等的《深度學習》上關于RNN的求導部分觅捆,具體RNN展開圖可以參考書中的;這...
    形式運算閱讀 323評論 0 1
  • 最近在學習語音識別麻敌,由于傳統(tǒng)的基于HMM-GMM架構的語音識別具有成熟的理論栅炒、工具鏈,且其一直以來神秘感讓人十分好...
    形式運算閱讀 1,195評論 3 1
  • 參考:《PRML》 注:作為學習筆記以及記錄自己的思考過程,我將把所有的細節(jié)全部推導出來赢赊,過程可能比較繁冗乙漓。 動機...
    形式運算閱讀 548評論 0 1
  • 1. CRNN算法結構 文字識別是對序列的預測方法,所以采用了對序列預測的RNN網絡释移。通過CNN將圖片的特征提取出...
    一杯海風_3163閱讀 8,473評論 0 1
  • 一玩讳、語言模型 語言模型計算特定序列中多個單詞的出現(xiàn)概率涩蜘。一個 m 個單詞的序列 的概率定義為 。 傳統(tǒng)的語言模型...
    DataArk閱讀 3,665評論 5 11