深度学习入门系列18:循环神经网络概述

大家好,我技术人Howzit,这是深度学习入门系列第十八篇,欢迎大家一起交流!

深度学习入门系列1:多层感知器概述
深度学习入门系列2:用TensorFlow构建你的第一个神经网络
深度学习入门系列3:深度学习模型的性能评价方法
深度学习入门系列4:用scikit-learn找到最好的模型
深度学习入门系列5项目实战:用深度学习识别鸢尾花种类
深度学习入门系列6项目实战:声纳回声识别
深度学习入门系列7项目实战:波士顿房屋价格回归
深度学习入门系列8:用序列化保存模型便于继续训练
深度学习入门系列9:用检查点保存训练期间最好的模型
深度学习入门系列10:从绘制记录中理解训练期间的模型行为
深度学习入门系列11:用Dropout正则减少过拟合
深度学习入门系列12:使用学习规划来提升性能
深度学习入门系列13:卷积神经网络概述
深度学习入门系列14:项目实战:基于CNN的手写数字识别
深度学习入门系列15:用图像增强改善模型性能
深度学习入门系列16:项目实战:图像中目标识别
深度学习入门系列17:项目实战:从电影评论预测情感
深度学习入门系列18:循环神经网络概述
深度学习入门系列19:基于窗口(window)的多层感知器解决时序问题
深度学习入门系列20:LSTM循环神经网络解决国际航空乘客预测问题
深度学习入门系列21:项目:用LSTM+CNN对电影评论分类
深度学习入门系列22:从猜字母游戏中理解有状态的LSTM递归神经网络
深度学习入门系列23:项目:用爱丽丝梦游仙境生成文本


有另外一种类型的神经网络,它主要解决机器学习中的输入序列问题,我们称之为递归神经网络。递归神经网络有很多连接,有环,反馈和随着时间变化的网络记忆单元。这个记忆单元允许这种类型网络针对整个输入序列而不是个人模式进行学习和概况。

递归神经网络增强类型称之为LSTM神经网络,当它嵌入到深度学习模型中时展示出显著的效果,从语言翻译到图片和视频标注等很多序列问题获得了显著的效果。在这节课中,你将学习快速的学习递归神经网络深度,并有足够的理解来开始在python中的Keras使用LSTM。完成这节课之后,你讲了解:

  • 由递归神经网络解决了多层感知器的一些局限性。
  • 一些使得LSTM有用的又必须要解决的问题。
  • 在应用深度学习中,LSTM使用详情。

让我们开始。

18.1 支持时序的神经网络

有些问题的提出涉及输入或者输出序列问题。举个例子,考虑到单变量时间序列问题,如随着时间变化的股票价格。对于定义了窗口大小的经典前向计算多层感知器网络,这个数据集被认为是一个预测问题,并且训练神经网络用于学习从固定大小窗口的输入端中做短期预测。
这有可能有用,但是有限制。输入端窗口向问题增加了记忆单元,但是限制在于固定点数和用于选择该问题的足够知识。一个小的窗口并不能捕获随着时间变化的大趋势,它可能和做预测有关。从一个预测到下一个预测,网络仅仅需要了解提供的输入端即可。单变量时序问题预测是重要,但是还有更多有趣的时序问题。考虑到时序问题分类系统,需要一个从输入到输出的映射。

  • 一对多:对于图片标注,输出。
  • 多对一:对于情感分析,输入。
  • 多对多:对于机器翻译,输入和输出。
  • 同步的多对多:对于视频分类,同步序列输入和输出。

我们也能看到,一对一的例子也是经典的前向计算神经网络的例子,用于预测任务,比如图片分类。在神经网络中支持序列也是重要的问题,其中有个深度学习模型展示出优秀的能力,特别是为序列化问题而设计的网络,叫做递归神经网络(RNN)。

18.2 递归神经网络

递归神经网络是一种专门解决序列化问题的网络。鉴于标准的前向计算神经网络,递归神经网络认为在结构上加上一个环(loop)。例如,在一个给定的层上,除了要传向下一层之外,每个神经元从侧边传进信号。网络的输出反馈作为下一层的输入。

递归神经网络在网络中添加了状态(state)或者记忆单元(memory),并且允许它从输入序列学习更为宽广的抽象。递归神经网络的场是用流行的方法建立起来的。要在在真实问题上有效的而且有用的技术,需要解决两个主要的问题。

  1. 如何用反向传输算法来训练网络。
  2. 在训练期间,如何解决梯度的消失和爆炸

18.2.1 如何训练递归神经网络(RNN)

对于训练前向计算的神经网络重要的技术就是反向计算误差和更新网络权重。反向传输在递归神经网络中的失败,是由于递归或者环连接。这个通过修改反向传输技术来解决这个问题,称之为BPTT(Backpropagation Through Time)。

该网络是展开的,而不是在上面的递归神经网络上执行反向传输算法,这个网络创建了有递归连接的神经元副本。例如,拥有连接到自己的单神经元(A->A)可以有两个同样权重值的(A->B)神经元表示。这就允许带有环图的递归神经网络变成了无环图的神经网络,就像经典的前向计算神经网络一样,那么反向传输算法(Backpropagation)就可以使用了。可以参考
The Unreasonable Effectiveness of Recurrent Neural Networks (karpathy.github.io)

18.2.2 如何在训练期间有个平稳的梯度

当反向传播算法在非常深的神经网络中和展开(rolled)递归神经网络中使用时,为了更新权重而计算的梯度变得不稳定。变得非常大称之为梯度爆炸或者变得非常小称之为梯度消失。这些大的梯度在更新权重上使用时,就是训练变得不稳定,并且使网络不可靠。

这个问题上在深度感知器上,通过整流器转变函数(rectifier)得到缓解,甚至有更多奇怪但是不好的方法,如采用了非监督的预训练层。在递归神经网络层中,采用了一种叫做LSTM(Long Short-Term Memory)结构的网络来缓解这个问题,使得递归网络可训练。

18.3 Long Short-Term Memory Networks

LSTM网络是一种使用BPTT算法进行训练的递归神经网络,克服了梯度消失的问题。它能够创建大型递归神经网络,反过来在机器学习中也被用于解决序列化问题,而且还获得了不错的效果。LSTM网络有个存储单元链接到层上。

这个块有个组建使得它比经典的神经网络层更加聪明,最近的序列有个记忆单元。一个块包含一个门(gate)管理块的状态和输出。一个单元在一个输入序列上进行操作,每个在单元里的门(gate)通过激活函数来控制他们是否触发,改变他们的状态,以及通过单元流入信息进行相加

  • 遗忘门(forget gate):有条件的选择从单元中舍弃信息。
  • 输入门(input gate):有条件的选择哪个输入值更新记忆单元状态。
  • 输出门: 基于输入和单元记忆来决定输出什么。

每个单元就像一个小型的状态机,它的每个单元门都有权重,而且可以在训练期间进行学习的。你能看到如何从LSTM层实现复杂的学习和记忆,而且不难想象高阶抽象可能和多个这样的层分层。

18.4 总结

你已经学习了序列问题和递归神经网络,特别是,你已经学习了:

  • 传统的前向计算神经网络的局限性以及递归神经网络如何解决这些问题。
  • 训练递归神经网络的实践问题以及他们是如何解决的。
  • LSTM记忆网络创建递归神经网络。

你已经快速的了解了递归神经网络,下节课,你讲学习如何用多层感知器处理简单的时序预测问题,它是使用递归神经网络的预习。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术人Howzit

钱不钱的无所谓,这是一种鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值