attention

翻译:https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/
seq2seq模型在机器翻译、文本摘要、图像描述等任务中取得了成功,谷歌翻译在2016年开始使用这个模型。
但是,我发现,需要一系列相互叠加的概念才能充分理解模型以实现模型。 我认为,如果以视觉方式表达这些想法会更容易理解。 这就是我在这篇文章中要做的。
seq2seq模型以序列(文字、图片)为输入,以另外的序列为输出:

seq2seq_1


在翻译中,输入是一系列的文字,输出另外一种文字

seq2seq_2

looking under the hood

模型内部是一个encoder和一个decoder
encoder单个处理输入句子的词,将获得的信息加工成一个向量(context),在处理完整个输入后,encoder输出context到decoder,一个一个的输出result。

seq2seq_3

机器翻译中流程是一样的

seq2seq_4

在机器翻译中,context是一个向量,encoder和decoder都是RNN网络
在这里插入图片描述
可以设定context向量的维度,一般情况下就是encoder中RNN的隐藏层维度。我们展示的维度是4,但是在实际应用中,context的维度更可能是256、512、1024等。
RNN每个步骤有两个输入:输入句子的词向量和隐藏层。词向量可以使用word embedding的模型(word2vec、glove等)
在这里插入图片描述
下面介绍一下RNN

RNN_1


下一步RNN会以第二个输入的词向量和第一个的隐藏层为输入,产生这一步的输出。
下面的动图中,encoder或decoder的每一次停顿是RNN在当前阶段处理它的输入,产生输出。基于encoder和decoder都是RNN模型,每一步基于输入和上一步的输出进行更新。

seq2seq_5


decoder层也有一个hidden state从这步传递到下一步,我们没有可视化它

下面以另外一种方式可视化seq2seq模型。

seq2seq_6

attention

文本向量是这些模型的瓶颈,处理长文本是对模型的一种挑战。有一种解决方法是attention,很大的提升了机器翻译系统的质量,attention允许模型注意输入的重要部分。

seq2seq_7


attention模型与经典的seq2seq模型有以下两点不同:

  1. encoder层传递了更多的信息到decoder层,与只传递最后一个隐藏层不同,传递了所有的隐藏层到decoder中

seq2seq_8


2. attention的decoder在产生输出前会多一个额外的步骤。为了注意输入与当前步骤相关的部分,decoder会做下面的操作
2.1 会查看接收到的encoder hidden states(每一个encoder hidden states都对应输入部分的一个词)
2.2 给每一个hidden state一个score(暂时忽略分数的计算方法)
2.3 softmax score后与hidden state相乘,后相加。这样可以放大有高得分的hidden state,减小低得分的hidden state

seq2seq_9

上述的score会在decoder的每一步都出现,下面整理一下attention的整个操作步骤

  1. attention decoder部分以encoder的《end》的embedding为输入,并初始化decoder的hidden state
  2. rnn处理它的输入,产生输出(被丢弃)和新的hidden state(h4)
  3. attention步骤:使用encoder hidden state和h4计算产生文本向量(C4)
  4. 合并h4和C4
  5. 传递这个向量到前向神经网络
  6. 前向神经网络的输出产生当前步骤的输出词
  7. 重复上述步骤

attention_process

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值