詳細闡述基於時間的反向傳播演算法(Back-Propagation Through Time,BPTT)
上一節我們說了詳細展示RNN的網路結構以及前向傳播,在瞭解RNN的結構之後,如何訓練RNN就是一個重要問題,訓練模型就是更新模型的引數,也就是如何進行反向傳播,也就意味著如何對引數進行求導。本篇內容就是詳細介紹RNN的反向傳播演算法,即BPTT。
首先讓我們來用動圖來表示RNN的損失是如何產生的,以及如何進行反向傳播,如下圖所示。
上面兩幅圖片,已經很詳細的展示了損失是如何產生的, 以及如何來對引數求導,這是忽略細節的RNN反向傳播流程,我相信已經描述的非常清晰了。下圖(來自trask)描述RNN詳細結構中反向傳播的過程。
有了清晰的反向傳播的過程,我們接下來就需要進行理論的推到,由於符號較多,為了不至於混淆,根據下圖,現標記符號如表格所示:
符號 | 含義 |
|
輸入向量的大小(one-hot長度,也是詞典大小) |
|
輸入的每一個序列的長度 |
|
隱藏層神經元的個數 |
|
樣本集合 |
|
第![]() |
|
第![]() |
|
第![]() |
|
第![]() |
|
序列對應的損失函式: RNN的反向傳播是每處理完一個樣本就需要對引數進行更新,因此當執行完一個序列之後,總的損失函式就是各個時刻所得的損失之和。 |
|
第![]() |
|
第t個時刻RNN隱藏層的輸出。 |
|
輸出層的輸入,即Softmax函式的輸入 |
|
輸入層與隱藏層之間的權重。 |
|
上一個時刻的隱藏層 與 當前時刻隱藏層之間的權值。 |
|
隱藏層與輸出層之間的權重。 |
我們對引數求導比較方便,只有每一時刻的輸出對應的損失與
相關,可以直接進行求導,即:
要對引數進行更新,就不那麼容易了,因為引數
雖是共享的,但是他們不只是對第
刻的輸出做出了貢獻,同樣對
時刻隱藏層的輸入
做出了貢獻,因此在對
引數求導的時候,需要從後向前一步一步求導。
假設我們在對時刻的引數
求導,我們利用鏈式法則可得出:
我們發現對進行求導的時候,都需要先求出
,因此我們設:
那麼我們現在需要先求出,則:
注:在求解啟用函式導數時,是將已知的部分求導之後,然後將它和啟用函式導數部分進行哈達馬乘積。啟用函式的導數一般是和前面的進行哈達馬乘積,這裡的啟用函式是雙曲正切,用矩陣中對角線元素表示向量中各個值的導數,可以去掉哈達馬乘積,轉化為矩陣乘法。
則:
我們求得,之後,便可以回到最初對引數的求導,因此有:
有了各個引數導數之後,我們可以進行引數更新:
參考:
李弘毅老師《深度學習》
相關文章
- 詳解 BackPropagation 反向傳播演算法!反向傳播演算法
- 卷積神經網路(CNN)反向傳播演算法公式詳細推導卷積神經網路CNN反向傳播演算法公式
- 反向傳播演算法的暴力理解反向傳播演算法
- 正向傳播和反向傳播反向傳播
- 2.反向傳播反向傳播
- 【TensorFlow篇】--反向傳播反向傳播
- 【DL筆記4】神經網路詳解,正向傳播和反向傳播筆記神經網路反向傳播
- 機器學習分享——反向傳播演算法推導機器學習反向傳播演算法
- 機器學習反向傳播演算法的數學推導機器學習反向傳播演算法
- 詳解神經網路中反向傳播和梯度下降神經網路反向傳播梯度
- CUDA教學(2):反向傳播反向傳播
- 韓國政府詳細闡述多起加密貨幣交易黑客事件後的監管計劃加密黑客事件
- 詳細闡述交換機的三種連線方式:級聯、堆疊和叢集
- 超級詳細的闡述:大資料、雲端計算和人工智慧的關係大資料人工智慧
- 關於 RNN 迴圈神經網路的反向傳播求導RNN神經網路反向傳播求導
- 零基礎深度學習入門:由淺入深理解反向傳播演算法深度學習反向傳播演算法
- 請闡述table的缺點
- 【好文推薦】黑莓OS手冊是如何詳細闡述底層的程式和執行緒模型的?執行緒模型
- 傳播小知識:timeout限制時間命令
- 【淘汰9成NLP面試者的高頻面題】RNN是如何基於時間進行引數學習(BPTT)的?面試RNN
- 看詳細到秒的檔案時間
- 深度學習二:概率和反向傳播的變種深度學習反向傳播
- numpy實現神經網路-反向傳播神經網路反向傳播
- 分散式賬本技術的闡述分散式
- 人民日報發推歡迎Google重返大陸,FB上長文闡述詳細立場Go
- Wooga CEO闡述專注於劇情主導遊戲的原因遊戲
- 時間序列資料壓縮演算法簡述演算法
- STM32 定時器詳細篇(基於HAL庫)定時器
- 基於螢幕空間的實時全域性光照(Real-time Global Illumination Based On Screen Space)
- 神經網路入門篇之深層神經網路:詳解前向傳播和反向傳播(Forward and backward propagation)神經網路反向傳播Forward
- 最詳細的解說—時間和空間複雜度複雜度
- 你真的理解反向傳播嗎?面試必備反向傳播面試
- NLP教程(3) | 神經網路與反向傳播神經網路反向傳播
- NLP教程(3) - 神經網路與反向傳播神經網路反向傳播
- 基於時間序列檢測演算法的智慧報警實現演算法
- 用張量廣播機制實現神經網路反向傳播神經網路反向傳播
- [原始碼解析] PyTorch 分散式(13) ----- DistributedDataParallel 之 反向傳播原始碼PyTorch分散式Parallel反向傳播
- 【機器學習】李宏毅——何為反向傳播機器學習反向傳播