Attention is all you need

最近想了一下,写这种技术博客,没有一定固定的格式和套路,总会觉得很乱,而且容易忘记。
所以继上周说了尽量做demo,以后我尽量会按照这个思路写技术性的博客。

  1. 是什么
  2. 细节部分
  3. 怎么用

话不多说,开始介绍Attention机制。


Attention的由来

由Google Mind发表的《Recurrent Models of Visual Attention》,将Attention开始在大范围使用(最早是九几年就提出来)。attention不是模型,而是一种机制,我认为它也是符合人脑思考的机制。

这种机制是什么呢,如名字一样,让模型的注意力放在重点位置。其实说简单点就是对状态加权,让模型学出权重。
比如说,nlp任务中,让模型学出需要重点关注的词,翻译的时候如果重点词对了,整个句子其实问题就不大了;CV任务中,图像中总会有主体,让模型重点研究这些主体。
这种机制和人脑的思考想一想其实是一样的。

以图说明一下


13790629-24eb3be25af526e7.png
seq2seq中使用attention机制

seq2seq结构中,encoder部分,正常的输出是将最后一个时序的隐藏状态直接输入到decoder中(可以回顾一下上一节的内容),加入attention机制后,会对每一个时序状态结果进行一个加权相加,并输入到decoder,随着模型的迭代,权重自然就学习出来了,权重大的词自然是重点部分。

attention后来发展出来很多种形式,这里介绍的这一种是attention-based,其他的形式

  • Soft attention、global attention、动态attention
  • Hard attention
  • Local attention
  • 静态attention
  • 强制前向attention

attention种类很多,但归纳起来就是两种:

  1. 一种是在attention 向量的加权求和计算方式上进行创新
  2. 另一种是在attention score(匹配度或者叫权值)的计算方式上进行创新

当然还有一种就是把二者都有改变的结合性创新,或者是迁移性创新,比如借鉴CNN的Inception思想等等。具体可以看这篇博客

我想说一下Hierarchical Attention,因为这种结构,在我做的项目中近期可能会用到。

Hierarchical Attention

这种模型的网络结构是这样的


13790629-2573a26574f6aa52.png
Hierarchical Attention网络结构

网络由四个部分组成:word sequence layer, word-attention layer, sentence sequence layer, and sentence-attention layer
图中可以很清楚的看到,这种结构最开始的输入words,用了一次attention后,把attention的结构输入到sentences的vector中,然后对sentences做一次attention得到一个vector,最后结softmax用于文档的分类。

具体做法是,针对每一个句子,用sequence model, 就是双向的rnn给表达出来,在这里用的是GRU cell。每个词语对应的hidden vector的输出经过变换之后和Uw相互作用(点积),结果就是每个词语的权重。加权以后就可以产生整个sentence的表示。从高一级的层面来看(hierarchical的由来),每个document有L个句子组成,那么这L个句子就可以连接成另一个sequence model, 同样是双向GRU cell的双向rnn,同样的对输出层进行变换后和Us相互作用,产生每个句子的权重,加权以后我们就产生了对整个document的表示。最后用softmax就可以产生对分类的预测。

attention在我看来其实是一个万金油的机制,很多地方都可以用到它。
最近看了很多模型结构之后发现,现在深度学习并没有重大的进步,都是把各种结构进行组合拼接。下周我来说一下这个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值