尽量少列公式,从神经网络由浅入深谈一谈我对Seq2Seq+Attention的理解

从神经网络到RNN

所谓神经网络,简单理解起来,就是一个特定格式的输入,经过一堆参数,得到一个特定格式的输出,我们可以通过梯度下降法来使这样一个模型的输出越来越符合我们的预期,其学习到的信息,保存在隐藏层的参数中。

上图是一个循环神经网络(RNN)的示意图,RNN在工作时,隐藏层总是由输入和上一次的隐藏层一起生成。值得注意的是,从输入到输出,以及上一次的隐藏层,在连接成网络的时候,所有的参数都是共享的。当一个序列通过RNN后,其信息就保存在隐藏层中。

从RNN到Seq2Seq

在实际应用中,由于RNN对于长环境问题的效果不好,人们又提出了LSTM和GRU来解决这一问题,这不是本文的重点,本文默认在Seq2Seq中使用了LSTM或GRU,能够应对长环境的情况。

上图是一个使用了Seq2Seq模型的示例。Seq2Seq模型由Encoder和Decoder两部分组成。Encoder部分是一个循环神经网络,其输出是其隐藏层,即其学习到的语义信息,这将作为Decoder的隐藏层的初始状态。Decoder也是一个循环神经网络,不一样的是Decoder每一次的输入都是由上一次的输出给出。显然,这样的Decoder,一旦一个地方出错,会引起较大的蝴蝶效应,但这并不是引入Attention机制的原因,这个问题可以通过在训练Decoder时随机指定输入为上一次的输出或上一次本该有的正确输出,这是Google提出的Scheduled Sampling,想要了解更多的小伙伴可以自行搜索。

Seq2Seq模型的问题出现在,Encoder输出的隐藏层,也就是所谓的语义信息的定长编码是信息瓶颈,可能无法保存下长序列的全部信息。于是人们干脆把Enocder每一步的隐藏层都拿出来,混进Decoder的输入,这大致就是Attention机制的思路。

Attention机制介绍

Attention机制有多种实现方式,比较典型的有BahdanauAttention和LuongAttention。本文主要介绍BahdanauAttention。

在由BahdanauAttention实现的Seq2Seq模型中,Encoder最后的隐藏层不再作为Decode隐藏层的初始状态参与运算,但却作为了另一种形式的初始状态。Attention的计算流程可以以以下几个公式自上至下表现出来。在列公式前,请容我定义三个全连接层。

# 这里的units可以自定义
FC1 = keras.layers.Dense(units)
FC2 = keras.layers.Dense(units)
FC3 = keras.layers.Dense(1)

式中,  EncoderOutput为Encoder所有位置上的输出,由于在Encoder部分的RNN没有进行后续的全连接操作,其输出就是每个位置的隐藏层的参数。DecoderHidden为Decoder上一个位置的隐藏层,它被初始化为Encoder最后的隐藏层。DecoderInput为Decoder的原始输入,可能是上一个位置的输出或正确值。RNNInput是最终输入进循环神经网络的输入。式中softmax,concat的含义与python中函数一致,sum对应reduce_sum。

EncoderOutput是所有位置上的输出,而DecoderHidden 仅是一个隐藏层,它们之间差了一个维度,我们需要将 应用到 的每一个维度上,这样的操作能够使得我们的网络学习到足够多的当下的语境信息,可以更好地去影响注意力矩阵的权值。 在经过softmax处理之后能够得到一个注意力权值矩阵,这个权值应用到Encoder各个隐藏层上,再与原本的输入进行拼接,我们的模型便拥有了足够的信息量,剩下的就交给梯度下降法吧。

首先非常感谢各位能够看完这篇文章。其实我写这篇文章,就是想让各位看看我的想法是否正确。文中很多地方是个人理解,与其说我向各位介绍,不妨说是我想向各位学习,如果文章有不对或不准确的地方,希望各位能够指出来。如果有疑问,欢迎在评论区讨论,大家共同探讨,共同进步。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值