深入浅出LSTM神经网络
转自:https://www.csdn.net/article/2015-06-05/2824880
【编者按】使用前馈卷积神经网络(convnets)来解决计算机视觉问题,是深度学习最广为人知的成果,但少数公众的注意力已经投入到使用递归神经网络来对时间关系进行建模。而根据深度学习三大牛的阐述,LSTM网络已被证明比传统的RNNs更加有效。本文由加州大学圣迭戈分校(UCSD)研究机器学习理论和应用的博士生Zachary Chase Lipton撰写,用浅显的语言解释了卷积网络的基本知识,并介绍长短期记忆(LSTM)模型。
鉴于深度学习在现实任务中的广泛适用性,它已经吸引了众多技术专家、投资者和非专业人员的关注。尽管深度学习最著名的成果是使用前馈卷积神经网络(convnets)来解决计算机视觉问题,少数公众的注意力已经投入到使用递归神经网络来对时间关系进行建模。
(注:为了帮助你开始体验LSTM递归网络,我附上了一个简单的微实例,预装了numpy、theano和一个Jonathan Raiman的LSTM样例Git克隆)
在最近的文章《学习阅读递归神经网络》中,我解释了为什么尽管前馈网络有难以置信的成功,它们受制于无法明确模拟时间关系,以及所有数据点都是由固定长度的向量组成的假设。在那篇文章的结论部分,我承诺写一篇的文章,解释卷积网络的基本知识,并介绍长短期记忆(LSTM)模型。
首先,介绍一下神经网络的基本知识。一个神经网络可以表示为一个人工神经元的图,或者说节点和有向边,用来对突触建模。每个神经元是一个处理单元,它将连接到它的节点的输出作为输入。在发出输出之前,每个神经元会先应用一个非线性激活函数。正是由于这个激活函数,神经网络具有对非线性关系进行建模的能力。
现在,考虑这个最近的著名论文Playing Atari with Deep Reinforcement Learning,结合convnets和强化学习来训练电脑玩视频游戏。该系统在某些游戏上有超越人类的表现,比如Breakout!,这种游戏在任意时候的合适的策略,都可以通过查看屏幕推断出来。但是,当优化策略是需要在长时间跨度规划时,系统就和人的表现相差甚远,例如太空侵略者(Space Invaders)。
因此, 我们引入递归神经网络(RNN),一个赋予神经网络对时间进行显式建模的能力,通过添加跨越时间点的自连接隐藏层。换句话说,隐藏层的反馈,不仅仅进入输出端,而且还进入了下一时间步骤隐藏层。在本文中,我将使用递归网络的一些示意图,从我即将审查的这一主题的文献中摘录。
现在,我们可以通过通过两个时间步来展开这个网络,将连接以无环的形式可视化。注意权重(从输入到隐藏和隐藏到输出)在每个时间步是相同的。递归网络有时被描述为深度网络,其深度不仅仅发生在输入和输出之间,而且还发生在跨时间步,每个时间步可以被认为是一个层。
一旦被展开,这些网络可以使用反向传播,进行端到端的训练。这种跨时间步的反向传播扩展,被称为沿时间反向传播(Backpropagation Through Time)。
然而有一个问题,在Yoshua Bengio经常被引用的论文(Learning Long-Term Dependencies with Gradient Descent is Difficult)中提到,那就是消失的梯度。换句话说,后面时间步的错误信号,往往并不能回到足够远的过去,像更早的时间步一样,去影响网络。这使它很难以学习远距离的影响,比如放过的那只小卒会在12步后回来将你。
补救这一问题的措施是1997年首先被Sepp Hochreiter和Jurgen Schmidhuber提出的长短期记忆(LSTM)模型。在这个模型中,常规的神经元,即一个将S型激活应用于其输入线性组合的单位,被存储单元所代替。每个存储单元是与一个输入门,一个输出门和一个跨越时间步骤无干扰送入自身的内部状态相关联。
在该模型中,对于每个存储单元,三套权重从输入训练而得,包括先前时间步中完整的隐藏状态。一个馈送到输入节点,在上图的底部。一个馈送到输入门,在最右侧的单元格底部显示。另一个馈送到输出门,在顶部最右侧的显示。每个蓝色节点与一个激活函数相关联,典型情况是S型函数,以及表示乘法的Pi节点。单元中最中央的节点称为内部状态,并且以1的权重跨越时间步,反馈回本身。内部状态的自连接边,被称为恒定误差传送带或CEC。
就前传递而言,输入门学习来决定何时让激活传入存储单元,而输出门学习何时让激活传出存储单元。相应的,关于后传递,输出门是在学习何时让错误流入存储单元,而输入门学习何时让它流出存储单元,并传到网络的其余部分。这些模型已被证明在多种多样的手写识别和图像加字幕任务上非常成功。也许得到多一些关爱,它们能在太空侵略者上获胜。
作者介绍:Zachary Chase Lipton is a PhD student in the Computer Science department at UCSD. He researches machine learning theory and applications, and is a contributing editor to KDnuggets.
原文链接:Demystifying LSTM Neural Networks (翻译/王玮 责编/周建丁)
深入浅出LSTM神经网络的更多相关文章
- (转) 干货 | 图解LSTM神经网络架构及其11种变体(附论文)
干货 | 图解LSTM神经网络架构及其11种变体(附论文) 2016-10-02 机器之心 选自FastML 作者:Zygmunt Z. 机器之心编译 参与:老红.李亚洲 就像雨季后非洲大草原许多野 ...
- LSTM神经网络
LSTM是什么 LSTM即Long Short Memory Network,长短时记忆网络.它其实是属于RNN的一种变种,可以说它是为了克服RNN无法很好处理远距离依赖而提出的. 我们说RNN不能处 ...
- (转)LSTM神经网络介绍
原文链接:http://www.atyun.com/16821.html 扩展阅读: https://machinelearningmastery.com/time-series-prediction ...
- LSTM 神经网络输入输出层
今天终于弄明白,TensorFlow和Keras中LSTM神经网络的输入输出层到底应该怎么设置和连接了.写个备忘. https://machinelearningmastery.com/how-to- ...
- tensorflow学习之(十一)RNN+LSTM神经网络的构造
#RNN 循环神经网络 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data tf.se ...
- Tensorflow之基于LSTM神经网络写唐诗
最近看了不少关于写诗的博客,在前人的基础上做了一些小的改动,因比较喜欢一次输入很长的开头句,所以让机器人输出压缩为一个开头字生成两个诗句,写五言和七言诗,当然如果你想写更长的诗句是可以继续改动的. 在 ...
- LSTM神经网络走读
0设计概述 RNN梯度爆炸和消失比较严重,RNN隐层只有一个状态h记录短期记忆,增加一个长期记忆状态c似乎就可以解决问题.
- LSTM神经网络输入输出究竟是怎样的?
LSTM图和词向量输入分析
- 深入浅出图神经网络 GCN代码实战
GCN代码实战 书中5.6节的GCN代码实战做的是最经典Cora数据集上的分类,恰当又不恰当的类比Cora之于GNN就相当于MNIST之于机器学习. 有关Cora的介绍网上一搜一大把我就不赘述了,这里 ...
随机推荐
- 移动端适配方案-rem(基础篇)
常见移动web适配方案一般有3种方法,如下图: ①:定高,宽度百分比(一般用来做一些适配性不高的页面,比如主要以一些文字和图片为主的网页或移动端的头部和底部) ②:flex (更多的用于复杂页面的布局 ...
- 应用监控CAT之cat-home源码阅读(三)
上两章从点到点讲了,cat-client 到 cat-consumer 的请求处理过程,但是怎么样让我们监控给人看到呢?那么就需要一个展示的后台了,也就是本章要讲的 cat-home 模块 ! 带 ...
- Python (time、datetime、random、os、sys、shutil)模块的使用
######################################################### 模块time ################################### ...
- 增删改查Spring+MyBatis
其实这次写这个增删改查,我的收获很大,在同学的帮助下和老师的推动下,我也是学会了很多的技能点. 1.显示数据 显示数据对我而言可以说很好做,因为我以前增删改查做了有N遍,但是我却每次都是无功而返,半途 ...
- C语言中指针中的值赋值给数组
如果把各种语言做个冷兵器类比的话,C语言一定是刀客的最佳工具.入门很简单,但是要是能把它熟练运用,那就是顶尖级别的高手了. 用了那么多年的C语言,发现自己还是仅仅处于熟练的操作工.今天遇到了一个bug ...
- python图像处理库PIL的基本概念介绍
PIL中所涉及的基本概念有如下几个:通道(bands).模式(mode).尺寸(size).坐标系统(coordinate system).调色板(palette).信息(info)和滤波器(filt ...
- Excel 逻辑函数if使用方法
Excel 逻辑函数if使用方法
- FIleZilla连接linux(Ubuntu)服务器的相关问题
想通过FileZilla传个tomcat到服务器,然后遇到了下面的两个问题,问题已经通过百度解决了,这里总结下: 1,虚拟机通过桥接模式连网,ip地址为:192.168.119.147 在FieZil ...
- 在SpringBoot中配置全局捕获异常
前言 之前写过一篇博客是使用spring利用HandlerExceptionResolver实现全局异常捕获 里面使用spring的HandlerExceptionResolver接口来实现全局的异常 ...
- async/await异步处理demo
async/await异步处理demo 下载地址: async/await异步处理demo