本篇文章第一部分翻译自:http://www.wildml.com/2015/10/recurrent-neural-networks-tutorial-part-3-backpropagation-through-time-and-vanishing-gradients/,英文好的朋友可以直接看原文。

最近看到RNN,先是困惑于怎样实现隐藏层的互联,搞明白之后又不太明白如何使用BPTT进行训练,在网上找资源发现本篇博客介绍较为详细易懂,自己翻译了一遍,以下:

RNN教程,第3部分,通过时间反向传播(BPTT)和梯度消失

这是RNN教程的第三部分。

在本教程的前面部分我们从头开始实现了一个RNN网络,但是没有探究实现BPTT计算梯度的细节。在这部分我们将给出BPTT的简要概述并且解释它和传统反向传播算法的区别。随后我们将致力于理解梯度消失问题(vanishing gradient problem),这个问题促成了LSTMs和GRUs的发展,在NLP(和其他领域),它们是当前最受欢迎和最为强大的模型中的两种。梯度消失问题最早于1991年有Sepp Hochreiter发现,最近由于深度结构的应用增多而重新受到关注。

如果想完全理解这部分内容,我建议你对偏导数和基本的反向传播工作很熟悉。如果你还不熟悉,你可以从【文中提供了三个地址】找到好的教程,它们随着难度的上升而排序。

Backpropagation Through TIme(BPTT)

我们先快速回顾一下RNN的等式。注意到这里有一个小变化,符号o变成了。这是为了和我参考的一些文献保持一致。

我们同时定义我们的损失函数(或者称为误差)为交叉熵损失,由以下公式给出:

这里是t时刻的正确单词,是网络的预测。典型的,我们将完整的序列(句子)是为一个训练实例,所以总的误差是各个时间点(单词)误差的和。

我们的目的是计算误差关于参数U,V和W的梯度并通过随机梯度下降(SGD)来学习好的参数。正如我们计算了误差的和,我们也将一个训练实例各个时间地啊你的梯度做一个求和: 。

我们使用链式求导来计算这些导数。这是从误差开始后应用反向传播算法。在这篇文章的剩余部分我们将使用 作为例子,这只是为了用一个实际的数来做推导。

在上面的式子中,,同时表示两个向量的外积运算。如果上面讲的你跟不上也不用担心,我跳过了一些步骤,你可以自己尝试计算这些导数(这是一个很好的锻炼!)。我想从上面式子中得到的是的计算仅仅依赖于当前时间点的数值。如果你掌握着这些,计算误差关于V的导数就仅仅是一个简单的矩阵乘法。

但是对于(和U)的情况却是不同的。我们列出链式法则来一探究竟,与上面类似:

现在应该注意到的是依赖于,而又依赖于W和,以此类推。如果我们计算关于W的导数我们不能简单地将视为常量!我们需要再次使用链式法则,我们最终获得的表达式为:

我们将每个时间点对梯度的贡献求和。话句话说,由于在到达我们所关心的输出的过程中的每一步计算中都用了W,我们需要从t=3开始在网络中的每一个路径反向传播梯度直到t=0。

注意到这和我们在深度前向神经网络中使用的标准反向传播算法是一样的。最主要的区别在于我们计算了关于W每个时间点上的梯度并将它们求和。传统神经网络中我们不会在层间分享参数,所以也不用做任何求和。但是在我看来BPTT不过是标准反向传播在没展开的RNN的一个有趣的名字。类似反向传播你可以定义一个向后传播的δ矢量,例如:,这里。然后应用相同的方程式。

一个简单的BPTT实现类似于下面的代码:

翻译结束,原文后续部分探讨梯度消失。

推到一下上面的公式:

部分参考;

http://blog.sina.cn/dpool/blog/s/blog_6e32babb0102y3u7.html

RNN训练算法BPTT介绍相关推荐

  1. 深度学习 --- 循环神经网络RNN详解(BPTT)

    今天开始深度学习的最后一个重量级的神经网络即RNN,这个网络在自然语言处理中用处很大,因此需要掌握它,同时本人打算在深度学习总结完成以后就开始自然语言处理的总结,至于强化学习呢,目前不打算总结了,因为 ...

  2. 循环神经网络——RNN的训练算法:BPTT

    前文:循环神经网络--初学RNN https://blog.csdn.net/weixin_38522681/article/details/109129490 循环神经网络--RNN的训练算法:BP ...

  3. RNN与其反向传播算法——BPTT(Backward Propogation Through Time)的详细推导

    前言 一点感悟: 前几天简单看了下王者荣耀觉悟AI的论文,发现除了强化学习以外,也用到了熟悉的LSTM.之后我又想起了知乎上的一个问题:"Transformer会彻底取代RNN吗?" ...

  4. RNN以及LSTM的介绍和公式梳理

    RNN以及LSTM的介绍和公式梳理 标签: 算法RNNLSTM 2015-07-25 16:32 127091人阅读 评论(40) 收藏 举报 本文章已收录于:  深度学习知识库  分类: 机器学习( ...

  5. 循环神经网络(RNN, Recurrent Neural Networks)介绍

    循环神经网络(RNN, Recurrent Neural Networks)介绍   循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural ...

  6. PyTorch-09 循环神经网络RNNLSTM (时间序列表示、RNN循环神经网络、RNN Layer使用、时间序列预测案例、RNN训练难题、解决梯度离散LSTM、LSTM使用、情感分类问题实战)

    PyTorch-09 循环神经网络RNN&LSTM (时间序列表示.RNN循环神经网络.RNN Layer使用.时间序列预测案例(一层的预测点的案例).RNN训练难题(梯度爆炸和梯度离散)和解 ...

  7. 速神经网络的训练算法LARS/LAMB工作原理 --UC Berkeley在读博士生尤洋

    为什么深度学习很慢? 如果我们利用并行计算,怎样才能完美的利用大量的processor? 为什么large batch size会引起精度降低? 新优化器 参考: 快速神经网络的训练算法 --UC B ...

  8. NLP --- 文本分类(基于LDA的隐语意分析训练算法详解)

    上一节详细介绍了什么是LDA,详细讲解了他的原理,大家应该好好理解,如果不理解,这一节就别看了,你是看不懂的,这里我在简单的叙述LDA的算法思想: 首先我们只拥有很多篇文本和一个词典,那么我们就可以在 ...

  9. 美国南加州大学骆沁毅:构建高性能的异构分布式训练算法

    计算机体系结构领域国际顶级会议每次往往仅录用几十篇论文,录用率在20%左右,难度极大.国内学者在顶会上开始发表论文,是最近十几年的事情. ASPLOS与HPCA是计算机体系结构领域的旗舰会议.其中AS ...

最新文章

  1. python中的decode(编码)和encode(解码)
  2. 使Win10用户获得特殊权限以便删除相应文件(夹)
  3. 博士申请 | 佐治亚理工学院陈永昕教授招收机器学习理论方向博士生
  4. VMware创建Linux及局域网内独立访问IP和访问外网IP的配置
  5. vue的mixins属性
  6. 4个空格 tab vetur_python学习的10个小技巧
  7. Flink : Flink run yarn 报错 could not build the program from jar file -ynm
  8. Java中的数组和List
  9. 复星金服微服务_复星金服以区块链技术解决行业痛点 “中招公信链”项目正式启动...
  10. Android 代码关于重构的一点体会
  11. java 缓存日志_Java日志缓存机制的实现(3)
  12. SOS Dynamic Programming
  13. Java设计模式之Adapter模式
  14. 复旦大学邱锡鹏老师深度学习课程笔记(一)—— 一些模型概述
  15. 水箱液位计算机控制系统设计,水箱水位PLC自动控制系统的设计_吕宁.pdf
  16. 线控转向——Carsim与simulink联合仿真模型 包含转向电机模型,转向执行机构模型,齿轮齿条模型
  17. 脉冲神经网络(Spiking Neural Network,SNN)概述
  18. 飞天系统和linux,用Linux或Windows系统运行抢茅台脚本在性能上有区别吗?
  19. 【愚公系列】2023年06月 网络安全(交通银行杯)-木册木兰
  20. 中学-知识与能力【6】

热门文章

  1. 正版office2016 简易安装版
  2. 单词学习 - 提问版(无英文)(English Vocabulary):Clothes Vocabulary:List of Clothes and Accessories in English
  3. 【IDEA设置字体失败解决方法】IntelliJ IDEA下载主题后设置字体失败,不能成功应用,原因:需要在配色方案里修改该主题的字体,而不是Editor->Font里修改+设置导航栏,菜单字体大小
  4. 卷积神经网络全连接层转换为卷积层获得heatmap
  5. k8s之local persistent volume
  6. html base65 图片原理,base64原理是什么?
  7. css中涉及到的百分比
  8. 终生不得心脏病的简单方法
  9. 点云深度学习的3D场景理解
  10. day 29 socketserver ftp功能的简单讲解