Attention如何在Encoder-Decoder循环神经网络中见效(原理篇)

本文详细介绍了注意力机制在Encoder-Decoder模型中的应用,旨在提高机器翻译性能。注意力机制解决了Encoder将长序列压缩为固定长度向量的问题,允许Decoder在生成每个输出时关注输入的不同部分。通过权重化上下文向量,Decoder可以更精确地聚焦于相关输入信息,从而提升翻译准确性。文章还探讨了不同类型的注意力机制,包括软注意力和硬注意力,以及它们在图像配文和其他任务中的应用。
摘要由CSDN通过智能技术生成

   转眼间来到了二年级下学期,马上就要面临找工作的巨大压力。起风了,唯有努力生存~愿努力可以有所成效。

    这一篇想要讲一讲Attention机制。文章框架主要翻译自How Does Attention Work in Encoder-Decoder Recurrent Neural Networks,也参考了一些笔者觉得比较不错的博客。


    Attention(注意力机制)是为了提高Encoder-Decoder RNN在机器翻译中的性能而开发的一种机制。

    在本教程中,您将发现Encoder-Decoder模型的注意力机制。

    完成本教程后,您将知道:

  • 机器翻译的Encoder-Decoder模型和注意力机制。
  • 如何逐步实施注意里机制。
  • 注意力机制的应用程序和扩展。

让我们开始吧。

0 教程概述

    本教程分为四个部分;它们是:

  1. Encoder-Decoder模型
  2. 注意力模型(Attention)
  3. Attention工作实例
  4. Attention的扩展

 1 Encoder-Decoder模型

    两篇论文介绍了循环神经网络的Encoder-Decoder模型。两者都开发了一种技术来解决机器翻译中输入序列长度与输出序列不同的序列到序列的本质。

    Ilya Sutskever等人在使用LSTMs的论文“Sequence to Sequence Learning with Neural Networks” 中就是这样做的。

    Kyunghyun Cho等人在 “Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation“一文中就做到了这一点。这项工作,和一些相同的作者(Bahdanau, Cho和Bengio)后来开发了他们的特定模型来开发一个注意力模型。因此,我们将快速浏览一下本文所描述的Encoder-Decoder模型。

    从高层次上讲,该模型由两个子模型组成:Encoder和Decoder。

  • Encoder:负责单步执行输入时间步骤,并将整个序列编码为一个固定长度的向量,称为上下文向量。
  • Decoder:负责在读取上下文向量的同时逐步执行输出时间步长。

图1 Encoder-Decoder循环神经网络模型

    提出了一种新的神经网络结构,该结构能够将变长序列编码为定长向量表示,并将给定的定长向量表示解码为变长序列。

— Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation, 2014.

    该模型的关键是整个模型,包括Encoder和Decoder,是端到端的训练,而不是单独训练元素。该模型具有通用性,可以采用不同的RNN模型作为Encoder和Decoder。   

    作者没有使用流行的长短时记忆(LSTM)神经网络,而是开发并使用了他们自己的简单类型的神经网络,后来被称为门控递归单元(GRU)。

    此外,与Sutskever等人的模型不同,Decoder从上一个时间步长的输出被作为输入输入解码下一个输出时间步。您可以在上面的图像中看到这一点,其中输出y2使用上下文向量(C)、解码y1传递的隐藏状态以及输出y1。

    …y(t)和h(i)也取决于y(t - 1)和输入序列的总结c。

— Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation, 2014 

     为更加直观地解释,这里老鼠屎引用一下完全图解RNN、RNN变体、Seq2Seq、Attention机制里面的解释:

    RNN最重要的一个变种:N vs M。这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。

    原始的N vs N RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。为此,Encoder-Decoder结构先将输入数据编码成一个上下文向量c,拿到c之后,就用另一个RNN网络对其进行解码,这部分RNN网络被称为Decoder。具体做法就是将c当做之前的初始状态h0输入到Decoder中:

图2 Encoder-Decoder循环神经网络模型其他表示方式

    所以,在老鼠屎的理解当中,Encoder-Decoder是解决输入和输出不等长的问题(这里不一定完全正确,欢迎大神勘误)。

2 注意力机制

2.1 注意力机制的引入

     老鼠屎认为,引入注意力机制有两个原因:   

  1. 这里插一点老鼠屎自己的理解。如图2所示,在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征c再解码,这使得不论是生成y1,y2还是y3,其输入对生成某个目标yi来说影响力都是相同的,这是为何说这个模型没有体现出注意力的缘由。这类似于人类看到眼前的画面,但是眼中却没有注意焦点一样。
  2. 引用完全图解RNN、RNN变体、Seq2
  • 12
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值