本文结构:

什么是 Recurrent Neural Networks ?
Recurrent Neural Networks 的优点和应用?
训练 Recurrent Neural Networks 的问题?
如何解决?
何时用 RNN 何时用前馈网络呢?


什么是 Recurrent Neural Networks ?

普通的前馈神经网络模型,它的结构是信号以一个方向从输入走到输出,一次走一层。

 
 

在 RNN 中,前一时刻的输出会和下一时刻的输入一起传递下去。
可以把这个过程看成是一个随着时间推移的流。
在这里显示的是四个时间点,在t=1的时候,网络取到t=0的时候的输出,并且将它和下一个输入一起发送回给网络。

 
 

Recurrent Neural Networks 的优点和应用?

和前馈神经网络不同,RNN 可以接收一系列的数据作为输入,而且也可以返回一系列的值作为输出。这种可以处理序列化数据的功能,使得这个网络得以非常广泛的应用。

当输入是一个的时候,输出是一个序列的时候,这可以用于 image captioning (让计算机用一句话来描述这张图片)。

 
 

输入是一个序列,输出是1个数据的时候,这个模型可以被用来分类。

 
 

当输入是一个序列,输出也是一个序列的时候,可以用来对视频一帧一帧的分类。

 
 

当引入时间延迟的时候,就可以用于供应链计划里的需求预测。

 
 

当把几个RNN堆起来时,得到的这个新的网络就可以输出比单独一个RNN更为复杂的结果。

 
Paste_Image.png

训练 Recurrent Neural Networks 的问题?

RNN 是很难被训练的,训练的时候也使用 Back Propagation,所以这也存在着梯度消失的问题,而且这个梯度消失的问题会是指数级别的。

原因就是,RNN的每个时间点,就相当于一个前馈神经网络的整个层,
所以训练100步的模型就相当于训练一个100层的前馈网络。
这就造成了随着时间的推移,梯度会以指数级的速度减小,进而造成信息的衰变。

 
 

如何解决?

有很多方式可以解决这个问题,其中之一就是 Gating。

这个技术的好处就是它可以决定,什么时候需要忘记当前的输入,什么时候需要记住它,以便将来的步骤里会用到它。

今天最流行的 Gating 就是 LSTM 和 GRU。

当然也有一些其他的方法 Gradient clipping, Better optimizer, Steeper Gates。

 
 

训练神经网络的时候用 GPU 要比用 CPU 好。
研究表明,用 GPU 训练会比 CPU 训练快250倍。(现在可能更快了)
这就是一天和八个月的区别。

何时用 RNN 何时用前馈网络呢?

前馈神经网络,它会输出一个数据,可以用来做分类或者回归。
RNN 适合时间序列的数据,它的输出可以是一个序列值或者一序列的值。
所以说,如果要做分类或者回归的话,可以用前馈是神经网络,如果要预测的话,可以用循环神经网络。

简述RNN Recurrent Neural Networks的更多相关文章

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

    循环神经网络(RNN, Recurrent Neural Networks)介绍    这篇文章很多内容是参考:http://www.wildml.com/2015/09/recurrent-neur ...

  2. 转:RNN(Recurrent Neural Networks)

    RNN(Recurrent Neural Networks)公式推导和实现 http://x-algo.cn/index.php/2016/04/25/rnn-recurrent-neural-net ...

  3. RNN(Recurrent Neural Networks)公式推导和实现

    RNN(Recurrent Neural Networks)公式推导和实现 http://x-algo.cn/index.php/2016/04/25/rnn-recurrent-neural-net ...

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

    原文地址: http://blog.csdn.net/heyongluoyao8/article/details/48636251# 循环神经网络(RNN, Recurrent Neural Netw ...

  5. 《转》循环神经网络(RNN, Recurrent Neural Networks)学习笔记:基础理论

    转自 http://blog.csdn.net/xingzhedai/article/details/53144126 更多参考:http://blog.csdn.net/mafeiyu80/arti ...

  6. 循环神经网络(RNN, Recurrent Neural Networks)——无非引入了环,解决时间序列问题

    摘自:http://blog.csdn.net/heyongluoyao8/article/details/48636251 不同于传统的FNNs(Feed-forward Neural Networ ...

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

    目录 1 什么是RNNs 2 RNNs能干什么 2.1 语言模型与文本生成Language Modeling and Generating Text 2.2 机器翻译Machine Translati ...

  8. The Unreasonable Effectiveness of Recurrent Neural Networks (RNN)

    http://karpathy.github.io/2015/05/21/rnn-effectiveness/ There’s something magical about Recurrent Ne ...

  9. Attention and Augmented Recurrent Neural Networks

    Attention and Augmented Recurrent Neural Networks CHRIS OLAHGoogle Brain SHAN CARTERGoogle Brain Sep ...

随机推荐

  1. 使用一行代码解决IE浏览器兼容问题

    在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案 百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 <!Doctype html&g ...

  2. 「Redis 笔记」数据类型

    REmote DIctionary Server(Redis),一个 key-value 存储系统. 数据类型 Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表) ...

  3. Vtk读取并显示保存图像

    (1):Vtk读取并显示图像:三种方法 转载:未知出处 转载:用VTK显示平面图片:http://blog.csdn.net/tonylk/article/details/464881 用到vtkJP ...

  4. JDK源码中的英文注释翻译(Enum<E extends Enum<E>>)

    public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializab ...

  5. vc++实例

  6. c++ 优先级队列(priority_queue)

    从网上搜优先级队列用法,都是有些乱七八糟的,有几种用法都没说,直接贴代码.实在郁闷,于是自己在此归纳归纳. 废话不多说,直入主题. 优先级队列的核心是比较函数的实现. 比较函数有两种实现方法: 1.在 ...

  7. spring helloword

    控制反转: Inversion on Control , 控制反转 IOC 对象的创建交给外部容器完成,这个就做控制反转. 依赖注入,  dependency injection 处理对象的依赖关系 ...

  8. Noip2011 Mayan游戏 搜索 + 模拟 + 剪枝

    写了一下午,终于AC了. 由于n<=5, 所以不需要太多的剪枝和技巧也能过.可以将操作后的消方块和下落和剪枝函数写到一个结构体中,这样会减少调试难度,更加简洁. 可以采用如下剪枝: 1. 如果当 ...

  9. Spring MVC @PathVariable with dot (.) is getting truncated.

    转自:http://stackoverflow.com/questions/3526523/spring-mvc-pathvariable-getting-truncated (这里只截取了问题,和笔 ...

  10. MYSQL数据库常用的LINUX命令

    此为我工作中常用MYSQL数据库命令 LINUX系统中启动 / 重启MYSQL服务:service mysql start  /  service mysql restart(重启服务) LINUX系 ...