Attention机制的小理解

1.传统的encode-decode模型

     输入序列:

     输出序列:

     中间语义变量

    所以对于,也就是

    

    

   

 这就表明输入序列的每一个元素对于输出序列的每一个元素的作用是等价的,这显然是不合理的。比如机器翻译中,中文“我爱你”,对应英语中“I love you”。其中“我”对于“I”和“love”的翻译作用力显然不同。为了解决这个问题,我们希望每一个输出序列的元素具有“个性化”地中间语义向量C,也就是对于输出序列中的每个元素,输入序列的每个元素作用力度不同。因此,针对输出序列中的任意元素yi的个性化中间语义向量Ci的计算为,这就是注意力机制。

 

2.注意力机制

 

 Google给出注意力机制的定义为,给定一个Query和一系列的key-value对一起映射出一个输出。

  • 将Query与key进行相似性度量(类似于上述的权重wij)
  • 将求得的相似性度量进行缩放标准化
  • 将权重与value进行加权

 

self-attention

      attention机制通常用在encode与decode之间,但是self-attention则是输入序列与输出序列相同,寻找序列内部元素的关系即 K=V=Q。l例如《Attention Is All You Need》在编码器中使用self-attention,利用上一步的input值计算当前该位置input的值。如下图:

3.《Attention Is All You Need》

  • 在“编码-解码器注意”层中,query来自之前的的解码器层,而key和value来自编码器的输出。这使得decode中的每个位置都可以处理输入序列中所有位置。这模拟了seq2seq模型中典型的encode-decode注意机制
  • encode包含self-attention。在一个self-attention中,所有的value、key和query都来自encode中前一层的输出。encode中的每个位置都可以处理encode的前一层中的所有位置。
  • 类似地,解码器中的self-attention允许解码器中的当前位置之前的所有位置。我们需要防止解码器中的左向信息流动,以保护自动回归特性(阻止利用当前位置后面的信息)

其中, MultiHead attention 是将Q,K,V进行h次线性变换,然后进行attention,并将h次得到的结果进行拼接,进行一个线性变换。

    由于编码器中用到的self-attention,没有考虑到输入序列中各元素的位置关系,因此需要将位置信息输入到模型中,因此加入了position encoding。文章采用的是如下方式。文章假设它可以让模型很容易地通过相对位置来学习,因为对于任何固定的偏置k,PEpos+k都可以表示成一个线性函数PE pos。

4.《Self-Attention with Relative Position Representations》

   在《Attention Is All You Need》基础上,对position encodeing进行了优化。在《Attention Is All You Need》中采用的position encoding的方式,没有考虑到词与词之间的距离。因此本文提出一个位置向量表示,分别表示输入序列第i个元素与第j个元素的Key和Value对应的位置向量。因此,输出元素zi的计算为:

      对于现行序列,本文边可以捕获输入元素之间相对位置的差异性。因为本文假设一定距离之外精确的相对位置信息在是无用的,所以只考虑最大相对位置为k的情况。这种使用j-i的形式,可以处理在训练集中没有见过的序列长度。(之前的方法应该存在这个问题,不能处理比训练数据更长的数据)

 

而 的计算如下:

参考文献:

  1. 《Attention Is All You Need》---> https://arxiv.org/abs/1706.03762
  2. 《Self-Attention with Relative Position Representations》--->https://arxiv.org/abs/1803.02155
  3. https://www.sohu.com/a/226596189_500659
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是什么?注意力机制是一种让计算机学习重点关注某些部分,并忽略其他部分的机制。它可以帮助计算机学习较复杂的内容,比如语言理解和图像分类等。注意力机制可以提供一种快速的方式来理解输入数据中的重点,从而更加有效地进行处理。 ### 回答2: 注意力机制Attention Mechanism)是一种在深度学习中常用的技术,主要用于处理序列数据或者文本数据。其基本思想是在模型的推理过程中,给予不同部分的输入不同的权重,使得模型能够“关注”到对当前任务最重要的部分,从而提高模型的性能。 注意力机制的核心是计算每个输入位置的权重,以确定其对当前任务的贡献。最常见的方法是通过计算每个输入位置与当前任务的相关性来获得权重。常用的相关性计算方法有点积注意力和加性注意力。 点积注意力是通过计算输入位置与当前任务之间的点积来衡量它们的相关性,然后再通过softmax函数将其归一化为一个概率分布。这样就可以得到每个输入位置的权重,从而决定了模型在推理过程中关注的重点。 加性注意力则是通过引入一个学习的注意力权重矩阵,将当前任务与每个输入位置进行线性映射,然后通过激活函数计算它们之间的相关性。再通过softmax函数归一化得到每个输入位置的权重。 注意力机制在自然语言处理、机器翻译、图像处理等领域中得到广泛应用。它可以帮助模型在处理长序列或者长文本时更好地捕捉序列中的关键信息,从而提高模型的性能。长短时记忆网络(LSTM)和变换器(Transformer)等深度学习模型中都广泛使用了注意力机制。 总之,注意力机制通过给予不同部分输入不同的权重,使模型能够关注到对当前任务最重要的信息。这种加权的方式可以帮助模型更好地处理序列和文本数据,提高模型的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值