关于Attention的总结

原创:郑佳伟

学习NLP的同学,Bert可以认为是必学的一个模型,而Bert中self-attention同样是必不可少的一个知识点。接下来,咱们就对self-attention和其他attention结构进行总结。

1、什么是Attention

Attention机制最早是在视觉图像领域提出来的(上世纪90年代),但是真正热门起来是由google mind团队于2014年的论文《Recurrent Models of Visual Attention》,他们在RNN模型上使用了Attention机制来进行图像分类。

Recurrent Models of Visual Attention

Attention机制也叫注意力机制,之所以在图像分类中起作用,主要是模拟人类看图片的逻辑,当我们看一张图片的时候,其实并没有看清图片的全部内容,而是将注意力集中在了图片的焦点上。看一下下面这张图:

看这张图片的时候,从整体上看到,有小孩,有电脑,有两颗歪脖子树,还有山。大家可能发现了,随着我的描述,我的注意力在不断转移或者更加聚焦。比如,我想看看他们穿的鞋子,那我们可能才会把注意力聚焦的四个小孩的鞋子上,而在这之前,我想并不是所有人都会意识到这四个小孩鞋子的款式不相同,颜色也分布不同。所以可以认为我们的视觉系统就是一种Attention机制,将注意力放在不同的区域,那我们就能够得到更多的关于不同角度的信息,这也是Attention机制在图像分类中的作用。

而最早将Attention机制应用到NLP领域中的是Bahdanau等人,他们在论文《Neural Machine Translation by Jointly Learning to Align and Translate》中,使用类似attention的机制应用在机器翻译任务中。

接着Attention机制被广泛应用在基于RNN/CNN等神经网络模型的各种NLP任务中。2017年,google机器翻译团队发表的《Attention is all you need》中大量使用了自注意力(self-attention)机制来学习文本表示。

接下来,我们看一下,attention在自然语言任务中是如何起作用的?

比如说上面的这句话,“她正在吃一个绿色的苹果”,我们在看到‘吃’这个词语的时候,我们的注意力会集中到某种食物的名字上,而对其形容词的注意力会降低。如果把高的注意力用数学方式表达,就是赋予高的权重,低的注意力赋予低的权重,那么可以认为,Attention 的本质是权重的分配问题,可以理解成一种对输入进行重新加权分配的问题。

那么在attention之前,不能解决这样的问题吗?Lstm,RNN不行吗?为什么要用Attention,这个问题可以留在后面回答。我们先看一下Attention是如何实现的。

2、Self-Attention

Google在《Attention is all you need》中是将Attention看作是一个编码序列的层,首先看一下它对于Attention的定义:

Attention ⁡ ( Q , K , V ) = sof ⁡ tmax ⁡ ( Q K ⊤ d k ) V \operatorname{Attention}(\boldsymbol{Q}, \boldsymbol{K}, \boldsymbol{V})=\operatorname{sof} \operatorname{tmax}\left(\frac{Q \boldsymbol{K}^{\top}}{\sqrt{d_{k}}}\right) \boldsymbol{V} Attention(Q,K,V)=softmax(dk QK)V

其中: Q ∈ R n × d k , K ∈ R m × d k , V ∈ R m × d v \boldsymbol{Q} \in \mathbb{R}^{n \times d_{k}}, \boldsymbol{K} \in \mathbb{R}^{m \times d_{k}}, \boldsymbol{V} \in \mathbb{R}^{m \times d_{v}} QRn×dk,KRm×dk,VRm×dv,如果忽略激活函数softmax的话,可以看作是 n × d k , d k × m , m × d v n \times d_{k}, d_{k} \times m, m \times d_{v} n×dk,dk×m,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值