首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【深度学习研究系列】之漫谈RNN(二)

【深度学习研究系列】之漫谈RNN(二)

作者头像
量化投资与机器学习微信公众号
发布2018-01-29 16:35:37
7580
发布2018-01-29 16:35:37
举报

推送第二日,量化投资与机器学习公众号将为大家带来一个系列的 Deep Learning 原创研究。本次深度学习系列的撰稿人为 张泽旺 ,DM-Master,目前在研究自动语音识别系统。希望大家有所收获,共同进步!

漫谈RNN之训练方法

RNN的训练因其递归性而变得复杂,现在深度学习大多系统中通常采用的是Back-propagation Through Time算法,本文不打算运用公式来讲解,而是将公式转化成易懂的文字来描述这些算法。

历史文章:(点击阅读)

【深度学习研究系列】之漫谈RNN(一)

RNN是一个循环递归网络,因此在t时刻,网络的输出误差不仅与t时刻的隐含状态有关,也与t时刻之前的所有时刻的隐含状态有关。这一特点,正表明RNN相比传统的隐马尔科夫模型的优势是它充分考虑了历史所有时刻的状态。

当我们构建好了一个RNN模型之后,最大的难点就在于训练这个模型,这里说的训练实际上就是数学上的优化过程。在训练神经网络的时候,后向传播算法是最流行的训练算法,而BPTT则是基于它的一个变形。那么什么是后向传播算法呢?

考虑一个多层感知器(MLP),假设它有K个隐含层,考虑输入层和输出层的话一共有K+2个隐含层,输入层的神经元个数为M,输出层的神经元个数为N,并且每一个隐含层的神经元个数为H_k。后向传播算法的步骤通常如下:

  1. 初始化神经元的所有参数,包括输入层与隐含层之间的权重、隐含层与隐含层之间的权重以及隐含层和输出层之间的权重(这里的权重包括连接权重和神经元偏置),权重初始化的方法通常有产生高斯随机数、线性均匀随机分布、赋予常数0等等。设定参数更新的步长,即学习率的大小。
  2. 利用MLP的前向计算公式,将输入值代入MLP网络得输入层神经元中,计算出每一个隐含层的神经元激活值以及输出层每个神经元的值。
  3. 计算出输出层每个神经元的误差,这里的误差表达式可以有很多种类型,例如常见的有平方差形式、交叉熵形式等等。训练网络的目标就是要使得输出层神经元的总误差E达到最小。
  4. 根据第K+1层与第K+2层之间的数量关系,计算出E对第K+1层上每个神经元的偏导数,由此偏导数即可计算出E对第K+1层与第K+2层之间权重的偏导数,于是第K+1层与第K+2层之间权重即可更新。
  5. 以此类推,一直计算到第1层神经网络上的所有神经元的偏导数,这样即可更新输入层与第一层之间的权重。这就是误差的后向传播。
  6. 完成以上即为一个Epoch,而训练的目标就是不断重复这样的Epoch,直到总误差E收敛到某个规定的阈值为止。

以上说的是用于训练MLP的后向传播算法,由于权重的更新是通过不断减去它的一阶偏导慢慢实现的,因此我们称这种算法为梯度下降法。虽然梯度下降算法在误差平面上只能找到局部最优值,但是这个缺点可以被一些错误得以很好避免,例如在训练的时候可以增加一些噪声、可以按照Epoch的增大而动态改变学习率的大小、采取不同的初始化方法、采取预训练的权重等等。

对于RNN来说,传统的后向算法已经无法适用了,这个时候我们需要把RNN网络在时间维度上展开,这个时候我们采用的是基于时间的后向传播算法(BPTT)。

BPTT算法的计算步骤如下:

  1. 初始化、前馈计算,跟后向传播算法的流程一样
  2. 计算每一时刻输出层K的误差,总误差就是我们要优化的变量。
  3. 计算T时刻隐含层K-1层的误差、第k-1层历史时刻的误差、第K-2层T时刻的误差。
  4. 更新K-1层T时刻的权重。
  5. 依次类推,直到第一层t=1时刻的权重被更新,即完成一个训练Epoch。
  6. 持续迭代,直到总误差收敛为某个阈值为止,停止训练

BPTT算法的计算复杂度相比于传统的BP算法要复杂N倍,N是整个网络的连接个数。而BPTT另外一个计算上的缺点则是它考虑了所有的历史信息,于是有人提出了使用truncated-BPP,即只考虑固定长度的历史,超过此时间的历史信息不用纳入BPTT中计算。这在一定程度上会影响RNN的记忆性,不过就算运用完整的BPTT算法,RNN的记忆性也无法长期保留,一个研究观点表明RNN最多只能记忆10~20个时间点。

通常训练一个RNN需要很多个Epoch,花费几个小时甚至几天都有可能,并且,训练RNN也没有训练MLP那么稳定,通常可以采取的措施有使用Dropout、使用批归一化等技巧,而对于网络超参的设置需要因数据规模而定,甚至有时候需要在实践中得出经验甚至是要靠直觉来判断。

近期文章预告:

《漫谈RNN之梯度消失及梯度爆炸》

《漫谈RNN之长短期记忆模型LSTM》

《漫谈RNN之序列建模(机器翻译篇)》

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化投资与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档