当前位置:   article > 正文

7.2-循环神经网络_循环神经网络输入序列

循环神经网络输入序列

一、循环神经网络(Recurrent Neural Network)

有记忆的神经网络就是循环神经网络(RNN

1.1 槽填充(Slot Filling)

  • 如下图,一个关键元素就是一个槽位(Slot),从用户交互中抽取出的这个槽位对应的取值,就是填充(Filling)
  • 下图的槽位(Slot)有两个,分别是目的地(destination)和到达时间(arrival time)
  • 我们是可以用之前学过的前馈网络(Feedforward network)来解决槽填充的问题的
    • 首先输入是一个单词,每个单词都代表一个向量
    • 输出代表输入单词属于这些槽位(Slot)的概率分布

image-20220820115214409image-20220820115356510

1.2 1-of-N Encoding

  • vector中元素数量就等于所有word的数量,对1个单词来说只需要vector中对应元素为1,其余元素都是0即可
  • 这种vector一点都不信息丰富(informative),任意两个vector都是不一样的,无法建立起同类word之间的联系(比如cat和dog都是动物)。

image-20220820122518983image-20220820122536584image-20220820123002508image-20220820123012702

1.3 RNN工作原理

  • RNN中的隐藏层的输出被存储在存储器(store)中,存储器可以被认为是另一种输入,存储器在输入之前需要给定初始值。
  • 因此改变输入的序列顺序(sequence order)将会改变输出,因此就很好的解决了同一个输入在不同场景下如何使输出变得不同的问题。
  • 下图中的示例是单个隐层的网络,当然也可以叠很多层,做成深度神经网络

image-20220820124821154image-20220820124833401image-20220820124852907image-20220820125627815

image-20220820125638077image-20220820125650750

1.4 Elman Network & Jordan Network

  • Elman Network
    • 就是上面介绍的网络结构,即将隐层输出存起来,等到下一个时间点再读出来。
  • Jordan Network
    • 它存的是整个网络最终的输出值,等到下一个时间点再读出来。
    • 由于Elman Network的隐层输出是没有目标(target)的,因此难以控制说它会学到什么样的隐层信息。一般情况下Jordan Network的表现要好很多。
  • Bidirectional RNN
    • 由于之前的RNN网络只能记住上文,而无法记住下文,为了解决这个问题。如下图,我们会将网络设计成双向的,从而达到根据上下文来推断语义的功能。

image-20220820130136837image-20220820132104280

二、长短期记忆网络 (Long Short-term Memory)

  • 长短期记忆网络(LSTM)有4个输入,1个输出。其中3个输入分别为:输入门(input gate)的控制信号 z i z_i zi,遗忘门(forget gate)的控制信号 z f z_f zf,输出门(output gate)的控制信号 z 0 z_0 z0
  • 其工作原理如下图
    • 激活函数 f 通常是一个sigmoid函数,其输出介于0和1之间
    • 输入
      声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/579240
推荐阅读
相关标签