LSTM简介以及数学推导(FULL BPTT)
前段时间看了一些关于LSTM方面的论文,一直准备记录一下学习过程的,因为其他事儿,一直拖到了现在,记忆又快模糊了。现在赶紧补上,本文的组织安排是这样的:先介绍rnn的BPTT所存在的问题,然后介绍最初的LSTM结构,在介绍加了遗忘控制门的,然后是加了peephole connections结构的LSTM,都是按照真实提出的时间顺序来写的。本文相当于把各个论文核心部分简要汇集一下而做的笔记,已提供快速的了解。
一.rnn结构的BPTT学习算法存在的问题
先看一下比较典型的BPTT一个展开的结构,如下图,这里只考虑了部分图,因为其他部分不是这里要讨论的内容。
对于t时刻的误差信号计算如下:
这样权值的更新方式如下:
上面的公式在BPTT中是非常常见的了,那么如果这个误差信号一直往过去传呢,假设任意两个节点u, v他们的关系是下面这样的:
那么误差传递信号的关系可以写成如下的递归式:
n表示图中一层神经元的个数,这个递归式的大概含义不难理解,要求t-q时刻误差信号对t时刻误差信号的偏导,就先求出t-q+1时刻对t时刻的,然后把求出来的结果传到t-q时刻,递归停止条件是q = 1时,就是刚开始写的那部分计算公式了。将上面的递归式展开后可以得到:
论文里面说的是可以通过归纳来证明,我没仔细推敲这里了,把里面连乘展开看容易明白一点:
整个结果式对T求和的次数是n^(q-1), 即T有n^(q-1)项,那么下面看问题出在哪儿。
如果|T| > 1, 误差就会随着q的增大而呈指数增长,那么网络的参数更新会引起非常大的震荡。
如果|T| < 1, 误差就会消失,导致学习无效,一般激活函数用simoid函数,它的倒数最大值是0.25, 权值最大值要小于4才能保证不会小于1。
误差呈指数增长的现象比较少,误差消失在BPTT中很常见。在原论文中还有更详细的数学分析,但是了解到此个人觉的已经足够理解问题所在了。
二.最初的LSTM结构
为了克服误差消失的问题,需要做一些限制,先假设仅仅只有一个神经元与自己连接,简图如下:
根据上面的,t时刻的误差信号计算如下:
为了使误差不产生变化,可以强制令下式为1:
根据这个式子,可以得到:
这表示激活函数是线性的,常常的令fj(x) = x, wjj = 1.0,这样就获得常数误差流了,也叫做CEC。
但是光是这样是不行的,因为存在输入输出处权值更新的冲突(这里原论文里面的解释我不是很明白),所以加上了两道控制门,分别是input gate, output gate,来解决这个矛盾,图如下:
图中增加了两个控制门,所谓控制的意思就是计算cec的输入之前,乘以input gate的输出,计算cec的输出时,将其结果乘以output gate的输出,整个方框叫做block, 中间的小圆圈是CEC, 里面是一条y = x的直线表示该神经元的激活函数是线性的,自连接的权重为1.0
三.增加forget gate
四.增加Peephole的LSTM结构
- input gate, forget gate的输入输出
- cell的输入
- output gate的输入输出
- cell的输出(这里也是block的输出)
五.一个LSTM的FULL BPTT推导(用误差信号)
- wij表示从神经元i到j的连接权重(注意这和很多论文的表示是反着的)
- 神经元的输入用a表示,输出用b表示
- 下标 ι, φ 和 ω分别表示input gate, forget gate,output gate
- c下标表示cell,从cell到 input, forget和output gate的peephole权重分别记做 wcι , wcφ and wcω
- Sc表示cell c的状态
- 控制门的激活函数用f表示,g,h分别表示cell的输入输出激活函数
- I表示输入层的神经元的个数,K是输出层的神经元个数,H是隐层cell的个数
原文地址:http://blog.csdn.net/a635661820/article/details/45390671
LSTM简介以及数学推导(FULL BPTT)相关推荐
- lstm数学推导_LSTM简介以及数学推导(FULL BPTT)
前段时间看了一些关于LSTM方面的论文,一直准备记录一下学习过程的,因为其他事儿,一直拖到了现在,记忆又快模糊了.现在赶紧补上,本文的组织安排是这样的:先介绍rnn的BPTT所存在的问题,然后介绍最初 ...
- 【机器学习基础】数学推导+纯Python实现机器学习算法21:马尔可夫链蒙特卡洛...
Python机器学习算法实现 Author:louwill Machine Learning Lab 蒙特卡洛(Monte Carlo,MC)方法作为一种统计模拟和近似计算方法,是一种通过对概率模型随 ...
- 布隆过滤器及其数学推导
目录 布隆过滤器 什么是布隆过滤器 原理简介 数学推导 空间占用情况 布隆过滤器 昨天突然看到了一个布隆过滤器的介绍和一些用法,感觉很新奇,也很有意思,刚好趁着周末来写一篇博客. 什么是布隆过滤器 布 ...
- SVM(支持向量机)原理及数学推导全过程详解
由于格式问题,为方便阅读,请点击下方链接访问原文 点击此处访问原文 点击此处访问原文 点击此处访问原文 点击此处访问原文 关于SVM网上已经有很多很多的前辈有过讲解,这两天自己在网上看了看资料,结合前 ...
- 小常识10: 循环神经网络(RNN)与长短时记忆网络LSTM简介。
小常识10: 循环神经网络(RNN)与长短时记忆网络LSTM简介. 本文目的:在计算机视觉(CV)中,CNN 通过局部连接/权值共享/池化操作/多层次结构逐层自动的提取特征,适应于处理如图片类的网格 ...
- c语言五个水手分椰子答案,zstu.4014.水手分椰子(数学推导)
深入浅出学算法015-水手分椰子 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1827 Solved: 524 Description n个水手来到 ...
- 变分自编码器(VAE)直观理解and 数学推导
这两天在学习VAE相关的内容,感觉云里雾里emm-写个博客记录一下~ 内容借鉴并综合了以下带佬: 变分自编码器VAE:原来是这么一回事 半小时理解变分自编码器 花式解释AutoEncoder与VAE ...
- 数学推导+纯Python实现机器学习算法:GBDT
Datawhale推荐 作者:louwill,Machine Learning Lab 时隔大半年,机器学习算法推导系列终于有时间继续更新了.在之前的14讲中,笔者将监督模型中主要的单模型算法基本都过 ...
- 数学推导+纯Python实现机器学习算法:逻辑回归
2019独角兽企业重金招聘Python工程师标准>>> 自本系列第一讲推出以来,得到了不少同学的反响和赞成,也有同学留言说最好能把数学推导部分写的详细点,笔者只能说尽力,因为打公式实 ...
最新文章
- 77所教育部直属高校公布2020年预算,清华超300亿!
- Java 正则表达式源码解析
- python用中文怎么说-如何用Python做中文分词?
- LVS+Keepalive 实现负载均衡高可用集群
- 【图的DFS】图的DFS非递归算法
- The Last Non-zero Digit POJ - 1150(n!mod p)
- 数学作图工具_科研论文作图系列-从PPT到AI (一)
- Android项目实战(三十六):给背景加上阴影效果
- Linux装gcc经过
- 搭建 Apache Jmeter 分布式压测与监控
- 使用无锁队列(环形缓冲区)注意事项
- EasyExcel导出文件格式不匹配
- 我的2011--衣带渐宽终不悔,为伊消得人憔悴
- 一键清空朋友圈软件_一键清空朋友圈软件有哪些(推荐几个好用软件)
- 华子机试 计算足球赛比分 java
- classify线性判别分析函数
- 2022.10.21 单词背诵
- Linux Wifi共享上网脚本,类似win 7的Connectify工具
- numpy .npz文件处理
- 数据结构及算法答案(电子科技大学MOOC)