美文网首页
Attention is all you need

Attention is all you need

作者: 吴祺育的笔记 | 来源:发表于2019-01-20 17:50 被阅读0次

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

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

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


    Attention的由来

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

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

    以图说明一下


    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

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


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

    相关文章

      网友评论

          本文标题:Attention is all you need

          本文链接:https://www.haomeiwen.com/subject/kjnxjqtx.html