1. 程式人生 > >Recurrent Neural Network系列3--理解RNN的BPTT演算法和梯度消失

Recurrent Neural Network系列3--理解RNN的BPTT演算法和梯度消失

這是RNN教程的第三部分。

在前面的教程中,我們從頭實現了一個迴圈神經網路,但是並沒有涉及隨時間反向傳播(BPTT)演算法如何計算梯度的細節。在這部分,我們將會簡要介紹BPTT並解釋它和傳統的反向傳播有何區別。我們也會嘗試著理解梯度消失問題,這也是LSTM和GRU(目前NLP及其它領域中最為流行和有用的模型)得以發展的原因。梯度消失問題最早是由 Sepp Hochreiter 在1991年發現,最近由於深度框架的廣泛應用再次獲得很多關注。

1 BPTT

讓我們快速回憶一下迴圈神經網路中的一些基本公式。定義中略微有些變化,我們將 oo 修改為 y^y^ 。這是為了與一些參考文獻保持一致。

st=tanh(Uxt+Wst1)st=tanh(Uxt+Wst−1)

yt^=softmax(Vst)yt^=softmax(Vst)

我們定義損失或者誤差為互熵損失,如下所示,

Et(yt,yt^)=ytlog(yt^)Et(yt,yt^)=−ytlog(yt^)

Et(y,y^)=tEt(yt,yt^)=tytlog(yt^)Et(y,y^)=∑tEt(yt,yt^)=−∑tytlog(yt^)

在這裡, ytyt 是時刻 t 上正確的詞, yt^yt^ 是預測出來的詞。我們通常將一整個序列(一個句子)作為一個訓練例項,所以總的誤差就是各個時刻(詞)的誤差之和。

請牢記,我們的目標是計算誤差關於引數U、V和W的梯度,然後使用梯度下降法學習出好的引數。正如我們將誤差相加,我們也將一個訓練例項在每時刻的梯度相加: EW=

相關推薦

Recurrent Neural Network系列3--理解RNN的BPTT演算法梯度消失

這是RNN教程的第三部分。 在前面的教程中,我們從頭實現了一個迴圈神經網路,但是並沒有涉及隨時間反向傳播(BPTT)演算法如何計算梯度的細節。在這部分,我們將會簡要介紹BPTT並解釋它和傳統的反向傳播有何區別。我們也會嘗試著理解梯度消失問題,這也是LSTM和

Recurrent Neural Network系列3--理解RNN的BPTT演算法梯度消失_0

作者:zhbzz2007 出處:http://www.cnblogs.com/zhbzz2007 歡迎轉載,也請保留這段宣告。謝謝! 這是RNN教程的第三部分。 在前面的教程中,我們從頭實現了一個迴圈神經網路,但是並沒有涉及隨時間反向傳播(BPTT)演算法如何計算梯度的細節

基於時間的反向傳播演算法梯度消失 -part3

本文翻譯自 前文從零開始實現了RNN,但是沒有詳細介紹Backpropagation Through Time (BPTT) 演算法如何實現梯度計算。這篇文章將詳細介紹BPTT。之後會分析梯度消失問題,它導致了LSTM和GRU的發展,這是兩個在NLP領域最為流

論文《Chinese Poetry Generation with Recurrent Neural Network》閱讀筆記

code employ 是個 best rec AS Coding ack ase 這篇文章是論文‘Chinese Poetry Generation with Recurrent Neural Network’的閱讀筆記,這篇論文2014年發表在EMNLP。 ABSTRA

Recurrent Neural Network(1):Architecture

func isp ram soft 期望 UNC ural att 時間序列 Recurrent Neural Network是在單個神經元上,除了輸入與輸出外,添加了一條Recurrent回路。如下圖左側,將前一時刻神經元的輸出狀態s,作為下一時刻的一個輸入值,加權並入輸

Recurrent Neural Network for Text Classification with Multi-Task Learning

引言 Pengfei Liu等人在2016年的IJCAI上發表的論文,論文提到已存在的網路都是針對單一任務進行訓練,但是這種模型都存在問題,即缺少標註資料,當然這是任何機器學習任務都面臨的問題。 為了應對資料量少,常用的方法是使用一個無監督的預訓練模型,比如詞向量,實驗中也取得了不錯

迴圈神經網路(Recurrent Neural Network, RNN)

1. 前向傳播 at=g(a)(Waaa<t−1>+Waxx<t>+ba)a^{t}=g^{(a)}(W_{aa}a^{<t-1>}+W_{ax}x^{<t&a

論文:用RNN書寫及識別漢字, Drawing and Recognizing Chinese Characters with Recurrent Neural Network

論文地址:用RNN書寫及識別漢字 摘要 目前識別漢字的通常方法是使用CNN模型,而識別線上(online)漢字時,CNN需要將線上手寫軌跡轉換成像影象一樣的表示。文章提出RNN框架,結合LSTM和GRU。包括識別模型和生成模型(即自動生成手寫體漢字),基於端到端,直接處理序列結構,不

吳恩達Deeplearning.ai 第五課 Sequence Model 第一週------Recurrent Neural Network Model

這一節內容比較多,主要講述瞭如何搭建一個RNN標準單元 使用標準神經網路的不足: 1.不同樣本的輸入輸出長度不等(雖然都可以padding成最大長度的樣本) 2.(更主要的原因)text不同的位置之間不共享學習到的引數 RNN模型,可以用左邊也可

How to Visualize Your Recurrent Neural Network with Attention in Keras

Now for the interesting part: the decoder. For any given character at position t in the sequence, our decoder accepts the encoded sequence h=(h1,...,hT) as

論文筆記:DRAW: A Recurrent Neural Network For Image Generation

DRAW: A Recurrent Neural Network For Image Generation 2019-01-14 19:42:50   Paper:http://proceedings.mlr.press/v37/gregor15.pdf  本文將 V

李巨集毅機器學習課程筆記9:Recurrent Neural Network

臺灣大學李巨集毅老師的機器學習課程是一份非常好的ML/DL入門資料,李巨集毅老師將課程錄影上傳到了YouTube,地址:NTUEE ML 2016 。 這篇文章是學習本課程第25-26課所做的筆記和自己的理解。 Lecture 25,26: Recu

臺灣大學深度學習課程 學習筆記 lecture3-1 Recurrent Neural Network (RNN)

Recurrent Neural Network (RNN)迴圈神經網路常被用到的領域是Language Modeling,下面就從Language Modeling方法的發展,引入RNN。 Language Modeling 多個word組成一句話

『 論文閱讀』Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling

來自於論文:《Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling》 基於attention的encoder-decoder網

詳解迴圈神經網路(Recurrent Neural Network)

在文末有關於 RNN 的文章彙總,之前寫的大多是概覽式的模型結構,公式,和一些應用,今天主要放在訓練演算法的推導。 本文結構: 模型 訓練演算法 基於 RNN 的語言模型例子 程式碼實現 1. 模型 和全連線網路的區別 更細緻到向量級的

python爬蟲系列(3.4-使用xpathlxml爬取伯樂線上)

一、爬取的程式碼 1、網站地址 2、具體實現程式碼 import requests from lxml import etree class JobBole(object):     def __init__(self):     &

JAVA學習筆記系列3-JVM、JREJDK的區別

JVM(Java Virtual Machine)就是一個虛擬的用於執行bytecode位元組碼的“虛擬計算機”。它和os打交道 JRE(Java Runtime Environment)包含:Java虛擬機器、庫函式、執行java應用程式所必須的檔案。它包含了JVM JDK(Java Developme

pytorch系列 --3 Variable,Tensor Gradient

Variable & Automatic Gradient Calculation Tensor vs Variable graph and gradient 注意,在pytorch0.4中,tensor和pytorch合併了。 https://pytorch.

[GAN學習系列3]採用深度學習 TensorFlow 實現圖片修復(上)

在之前的兩篇 GAN 系列文章--[GAN學習系列1]初識GAN以及[GAN學習系列2] GAN的起源中簡單介紹了 GAN 的基本思想和原理,這次就介紹利用 GAN 來做一個圖片修復的應用,主要採用的也是 GAN 在網路結構上的升級版--DCGAN,最初始的 GAN 採用的還是神經網路,即全連線網路,而 DC

java多執行緒系列3:悲觀鎖樂觀鎖

1.悲觀鎖和樂觀鎖的基本概念 悲觀鎖: 總是認為當前想要獲取的資源存在競爭(很悲觀的想法),因此獲取資源後會立刻加鎖,於是其他執行緒想要獲取該資源的時候就會一直阻塞直到能夠獲取到鎖; 在傳統的關係型資料庫中,例如行鎖、表鎖、讀鎖、寫鎖等,都用到了悲觀鎖。還有java中的同步關鍵字Synchroniz