RNN Tutorial Part3 -- BPTT
這篇專欄主要參考 Recurrent Neural Networks Tutorial, Part 3 – Backpropagation Through Time and Vanishing Gradients,同時給出了 Loss 函數對參數 V 求導的詳細過程。如果有寫錯或不明白的地方,歡迎在評論區留言,我將竭盡所能地回答大家的寶貴評論。
這部分主要介紹損失函數對參數V的求導,涉及到的知識點(敲黑板!)包括矩陣求導的技巧、求導鏈式的確定、softmax函數的求導。
首先回顧一下模型:
這裡我們使用的是 cross entropy loss,定義如下:
是 時刻的正確單詞,它是一個 C 維的 one-hot vector,C 是詞表的大小。 是 C 維的預測輸出,每個維度表示對應單詞的概率。我們通常把一個句子當做一個訓練樣例,每個訓練樣例的總 loss 定義成每個時刻 loss 的求和。同理,我們把每個時刻 loss 函數對參數的梯度加起來,得到總 loss 對該參數的梯度,例如 。
這裡我們只計算 ,其它導數的計算可以同理得到。參數 是 維的矩陣,對矩陣直接求導數是超出我們一般人的理解的,因此我們考慮對矩陣裡面的每一個元素 求導,然後組合得到對矩陣的導數。接下來我們確定從 到 的鏈式求導路徑。
的誤差傳播到 ,且只會傳播給 ,其中 。 可以通過 softmax 將誤差傳播到 的所有維度。但因為 是 one-hot vector,,所以 只有一個維度的誤差會傳播到 ,這裡假設是第 K 個維度的值,所以 。由上面的分析,我們可以寫出鏈式求導路徑如下:
然後我們可以得到鏈式求導路徑的各分量如下:
當 時,
所以
在 (1) ? (2) 的過程中,我們約去了 和 。在 (2) ? (3) 的過程中,當 時, 。當 時,
所以
在 (4) ? (5) 的過程中,我們約去了 和 。在 (2) ? (3) 的過程中,當 時, 。綜合 (3) 和 (6),我們可以得到:
寫成向量的表達形式是 表示兩個向量間的 outer product。推薦閱讀:
TAG:深度學習DeepLearning | 機器學習 | 神經網路 |