目录

BPTT算法推导

注1:激活函数tanh(x)求导

注2 softmax求导


BPTT算法推导

对于一个普通的RNN来说,其前向传播过程为:

先介绍一下等下计算过程中会用到的偏导数:

  关于tanh求导的过程见下面注1。

 indicates the diagonal matrix(对角矩阵) containing the elements 

另一个,当y采用one-hot并且损失函数L为交叉熵时:

这里涉及到softmax求导的规律,关于softmax求导的过程见下面注2。

(1)接下来从RNN的尾部开始,逐步计算隐藏状态的梯度。如果是最后的时间步,就是最后的隐藏输出。

(2)然后一步步往前计算的梯度,注意同时有两个后续节点,

所以:

剩下的参数计算起来就简单多了:

损失函数为交叉熵损失函数(二元交叉熵损失函数),输出的激活函数应该为sigmoid函数,隐藏层的激活函数为tanh函数。(二分类问题)

注1:激活函数tanh(x)求导

作用:非常优秀,几乎适合所有的场景。

缺点:该导数在正负饱和区的梯度都会接近于 0 值,会造成梯度消失。还有其更复杂的幂运算。

可视化:

注2 softmax求导

https://blog.csdn.net/weixin_39910711/article/details/100775918?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162271501716780269860450%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=162271501716780269860450&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-3-100775918.nonecase&utm_term=%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&spm=1018.2226.3001.4450  中的3.3节

使用交叉熵代价函数(多分类交叉熵形式)+softmax函数进行反向传播:

使用该方法时,应先将真实输出经过softmax函数进行转换,再带入代价函数中进行计算。即:

softmax函数:

多分类交叉熵:

计算误差函数对求导的导数:

当我们对分类的Loss进行改进的时候,我们要通过梯度下降,每次优化一个step大小的梯度,这个时候我们就要求Loss对每个权重矩阵的偏导,然后应用链式法则。那么这个过程的第一步,就是对softmax求导

计算误差函数对未经过softmax函数转化的输出,即求导的导数,根据链式法则,可将其转化为误差函数对经过softmax函数转化后的输出求导的导数,再乘以经过softmax函数转化后的输出对求导的导数:

忽略样本数量,即:

其中,

(1)损失函数对softmax层求导:

我们对Si求导,其实是对Si中的求导,从公式中可以看出,由于每个Si的分母中都包含,因此对所有的Si都要求导。

其中,为第k个神经元的期望输出值,为第k个神经元经过softmax函数转化后的输出,即y_out。

(2)softmax层对输出层求导

分两种情况:

① q = k

② q ≠ k

(3)输出层对隐藏层输出神经元求导

此时我们分别求出了两个偏导数,将两个偏导数合并起来(相乘),因为softmax层对输出层的偏导数有两种情况,因此链式求导的结果也分 q = k 和 q ≠ k 两种情况,加以合并:

由于:

因此:

主要:花书BPTT公式推导:https://www.cnblogs.com/zyb993963526/p/13797144.html

https://blog.csdn.net/qq_36033058/article/details/107117030?utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-7.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-7.control

https://blog.csdn.net/chaianlove/article/details/83650152?utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control

https://blog.csdn.net/qq_14962179/article/details/88832275

RNN的简单的推导演算公式(BPTT):https://cloud.tencent.com/developer/article/1074307

RNN详解及BPTT详解:https://blog.csdn.net/zhaojc1995/article/details/80572098

RNN BPTT算法推导:https://blog.csdn.net/qq_14962179/article/details/88832275

RNN BPTT算法推导相关推荐

  1. RNN BPTT算法详细推导

    BPTT算法推导 BPTT全称:back-propagation through time.这里以RNN为基础,进行BPTT的推导. BPTT的推导比BP算法更难,同时所涉及的数学知识更多,主要用到了 ...

  2. RNN中BPTT的推导和可能的问题

    最近开始啃LSTM,发现BPTT这块还是不是很清晰,结合RNN,把这块整理整理 RNN 前馈神经网络(feedforward neural networks)如下图所示(这块内容可见我的博客神经网络B ...

  3. 【Pytorch神经网络理论篇】 17 循环神经网络结构:概述+BP算法+BPTT算法

    1 循环神经网络结构概述 循环神经网络(Recurrent Neural Network,RNN)是一个具有记忆功能的网络模型.它可以发现样本彼此之间的相互关系.它多用于处理带有序列特征的样本数据. ...

  4. 收藏 | 人人都能看懂的LSTM介绍及反向传播算法推导

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者:陈楠 来源:知乎 链接:https://zhuanla ...

  5. 反向传播算法推导、激活函数、梯度消失与爆炸

    目录 反向传播算法 定义 推导过程 激活函数 定义 性质 常用的激活函数 Sigmoid Tanh ReLU softmax 梯度消失与梯度爆炸 起因 出现的原因 表现 解决方案 参考文档 反向传播算 ...

  6. 人人都能看懂的EM算法推导

    作者丨August@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/36331115 编辑丨极市平台 估计有很多入门机器学习的同学在看到EM算法的时候会有种种疑惑:EM ...

  7. 第八课.EM算法的合理性与算法推导

    目录 EM算法背景 EM算法迭代的合理性 EM算法推导 EM算法的E步和M步 分析EM算法的由来 EM算法背景 在硬币投掷和班级身高问题中,引入了隐变量问题,模型变成了混合模型,我们不能直接利用极大似 ...

  8. BP神经网络算法推导

    一:算法推导 神经网络通过模拟人的神经元活动,来构造分类器.它的基本组成单元称为"神经元",离线情况下如果输入大于某值时,设定神经元处于兴奋状态,产生输出,否则不响应.而这个输入来 ...

  9. em算法 实例 正态分布_人人都能看懂的EM算法推导

    ↑ 点击蓝字 关注极市平台作者丨August@知乎(已授权)来源丨https://zhuanlan.zhihu.com/p/36331115编辑丨极市平台 极市导读 EM算法到底是什么,公式推导怎么去 ...

最新文章

  1. SAP RETAIL 如何查看分配表是参考哪个PO来创建的?
  2. 在TMG2010中发布Web服务器场
  3. 聚焦3D地形编程第五章GeomipMapping for the CLOD
  4. Python使用proj将GPS经纬度数据转换为utm坐标系(真实的地理位置坐标系,以米为单位),然后可以进行轨迹显示
  5. 智能手机系统对进程生命周期的管理
  6. UML大战需求分析阅读笔记——02
  7. java广度优先遍历
  8. 困难时拉你一把的图片_2019早上好表情图片合集 早晨祝福语动画
  9. 如何从ngrx-store-devtools.js里找到actions的触发源头
  10. 使用HANA Web-based Development Workbench创建最简单的Server Side JavaScript
  11. 架构师:我们需要顶层设计
  12. onvif发送订阅规则
  13. c++用new求数组中n个数的和_在C++中实现任意大小数组的定义方法
  14. 吉麦新能源与联想签订战略合作协议,共同拥抱智能网联汽车升维时代
  15. [Web Chart系列之七] 物理动画效果(如撕扯效果)
  16. 金盾加密视频破解翻录限制工具使用教程
  17. 程序员工作交接文档怎么写_IT交接事项.doc
  18. unity3d显示c4d材质_C4D入门到精通,没那么难
  19. 介绍现有三大前端框架-思想
  20. 微信小程序云函数服务器,微信小程序云函数使用的几点说明

热门文章

  1. docker启动配置Mongo
  2. 个性化广告的未来:通过隐私计算技术实现用户个人信息及隐私全生命周期保护
  3. python小游戏开发——简单弹球游戏
  4. cdh 安装 agent失败
  5. 品牌战疫赋能终端墙布窗帘联合招商会火爆开启
  6. 基于CNN的图像增强之去模糊
  7. Windows 安装AirSim
  8. AmazonS3基本方法简述
  9. PID算法详解(精华知识汇总)
  10. 关于win10系统下,同步与windows网络时间后,时间较实际时间慢1小时的解决方法