前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >李宏毅深度学习之Deep Learning 循环结构

李宏毅深度学习之Deep Learning 循环结构

作者头像
瓜大三哥
发布2020-04-14 16:28:47
8000
发布2020-04-14 16:28:47
举报
文章被收录于专栏:瓜大三哥瓜大三哥

3 循环结构(RecurrentStructure)

3.1概念

所谓RecurrentStructure就是把同一个structure反复的应用。好处就是就算输入是一个复杂的sequence,我们需要的不同种类的flag并不会随着inputsequence 的长度而改变。不管输入多少sequence,network需要的参数量永远都是一样的。

如上图所示,给定义函数f,这个函数有两个输入向量h,x,输出两个向量h’,y。RNN的本质就是这个函数要反复的被使用,即接下来的输入要经过同样的函数f,把上一个output作为下一个的input。需要注意的是:hh’有同样维度的向量。如此循环下去,可见,network需要的参数量永远都是一样的。

3.2衍生的循环结构

3.2.1深度RNN

给定两个多个函数f1,f2,注意维度该一样的必须要一样。

3.2.2双向RNN(BidirectionalRNN)

BidirectionalRNN(双向RNN)需要第三个function,如下图所示,f3函数存在的目的是合并前两个函数的结果。至于f1f2不必一样,可以随便设计。

3.2.3金字塔RNN(PyramidalRNN)

PyramidalRNN(金字塔型RNN)。我们有一个输入序列x1,x2,…,xt,非常长,第一层(图中的最底层)是Bi-RNN,如下图所示,这个是直接用sqe2sqe的语音识别。第一层是Bi-RNN,第二层是将若干个第一层的输出(合起来)作为输出,也是Bi-RNN,这样做的好处是可以把后面层的sequence缩短。后面都这样下去。这种结够比单纯的深度Bi-RNN更容易训练。第二层block虽然需要处理若干第一层block的输出,但是这种法有利于做并行加速。RNN很难做并行,因为下一个节点必须得等第一个节点的输出才能进行,而pyramidalRNN里高层的block,串行变短了,每个block中虽然运算量较大,但是可以用并行运算加速。

3.2.4naive RNN

native RNN最简单的RNN,其中funciton的结构:将输入h,x分别乘上一个矩阵,再经过sigmoid函数得到h’,然后y是通过h’算出的,如下图所示

3.2.5LSTM

长短期记忆(Longshort-term memory,LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。

现在流行的RNN是LSTM。对比naiveRNN来看,输入不一样。在LSTM中,ht-1ct-1,扮演着不同的角色;c变化是很慢的,可以记忆时间比较久的信息。h变化比较快。

LSTM具有三个输入xt,ht-1,ct-1三个输出yt,h1,ct。运算的时候,把xt,ht-1,并在一起,变成一个较长的vector,然后乘上一个矩阵w,结果经过激活函数tanh,得到z,同理,乘上四个不同的矩阵,得到四个不同的z,zi,zf,zo,作为LSTM的输入。

如下图所示的运算:其中⊙是指element-wise的相乘(表示两个向量的对应元素相乘)。zi是输入门,决定了z的哪些信息流入,zf是遗忘门,决定z的哪些信息遗忘。

看到这张图,小编就感觉神奇了,暂时不知道为什么,后期再做详述。

LSTM内部主要有三个阶段:

1.忘记阶段。这个阶段主要是对上一个节点传进来的输入进行选择性忘记。简单来说就是会“忘记不重要的,记住重要的”。

具体来说是通过计算得到的zf来作为忘记门控,来控制上一个状态的ct-1哪些需要留哪些需要忘。

2.选择记忆阶段。这个阶段将这个阶段的输入有选择性地进行“记忆”。主要是会对输入xi进行选择记忆。哪些重要则着重记录下来,哪些不重要,则少记一些。当前的输入内容由前面计算得到的z表示。而选择的门控信号则是由zi来进行控制。

将上面两步得到的结果相加,即可得到传输给下一个状态的ct。也就是上图中的第一个公式。

3.输出阶段。这个阶段将决定哪些将会被当成当前状态的输出。主要是通过 zo来进行控制的。并且还对上一阶段得到的zo进行了放缩(通过一个tanh激活函数进行变化)。

与普通RNN类似,输出yt往往最终也是通过ht变化得到。

3.2.6门控循环单元(Gatedrecurrent units)

GRU是LSTM网络的一种效果很好的变体,它较LSTM网络的结构更加简单,而且效果也很好,因此也是当前非常流形的一种网络。GRU既然是LSTM的变体,因此也是可以解决RNN网络中的长依赖问题。

在LSTM中引入了三个门函数:输入门、遗忘门和输出门来控制输入值、记忆值和输出值。而在GRU模型中只有两个门:分别是更新门和重置门。

  • xt,ht-1并在一起,然后乘上一个矩阵w,结果经过激活函数得到r(0-1之间),这个r叫做reset gate;
  • 然后再把xt,ht-1并在一起,然后乘上另外一个矩阵w,结果经过激活函数得到z(0-1之间),这个z叫做update gate;
  • 然后再把r,ht-1做element-wise的相乘,得到另外一个vector,这个vector跟 xt并在一起,然后乘上另外一个矩阵w(图示中黄色箭头),得到h’;
  • 接下来,我们把z,ht-1做element-wise的相乘;把1-z,ht-1做element-wise的相乘;再把这两个加起来,得到ht
  • ht乘上一个矩阵,得到yt

  GRU的好处就是:少了一个门,运算量少,避免过拟合。

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

本文分享自 瓜大三哥 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.1概念
  • 3.2衍生的循环结构
    • 3.2.1深度RNN
      • 3.2.2双向RNN(BidirectionalRNN)
        • 3.2.3金字塔RNN(PyramidalRNN)
          • 3.2.4naive RNN
            • 3.2.5LSTM
              • 3.2.6门控循环单元(Gatedrecurrent units)
              相关产品与服务
              语音识别
              腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档