Attention
一、背景知识:
- 大致趋势:
- 1
- 1
- 本质:人类视觉感知场景时,不会从头到尾进行感知,而是根据观察注意特定的部分。
- NLPattention计算方法:
- 本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射
- 本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射
- 计算attention三步:
- 第一步:将query和每个key进行相似度计算得到权重。常用的相似度计算函数有:点积、拼接、感知机等。
- 第二步:使用softmax进行归一化
- 第三步:将权重和相应的键值value进行加权求和得到最后的attention
- (在目前NLP 一般key==value)
二、Attention is all you need
- 论文亮点:
- 1)不同于以往主流机器翻译使用基于RNN的seq2seq模型框架,该论文用attention机制代替了RNN搭建了整个模型框架。
- 2)提出了多头注意力(Multi-headed attention)机制方法,在编码器和解码器中大量的使用了多头自注意力机制(Multi-headed self-attention)
- 3)在WMT2014语料中的英德和英法任务上取得了先进结果,并且训练速度比主流模型更快。
- 放缩点乘(scaled dot-Product attention):scaled dot-Product attention就是我们常用的使用点积进行相似度计算的attention,只是多除了一个(为K的维度)起到调节作用,使得内积不至于太大。
- 多头attention(Multi-head attention):
- Query,Key,Value首先进过一个线性变换,然后输入到放缩点积attention,注意这里要做h次,其实也就是所谓的多头
- Query,Key,Value首先进过一个线性变换,然后输入到放缩点积attention,注意这里要做h次,其实也就是所谓的多头
- self-attention:
- K=V=Q,比如输入一个句子,里面的每个词都要和句子里面的每个词进行attention计算。目的是学习句子内部的词依赖关系,捕获句子的内部结构。
- 使用self-attention的原因:
- 一、每一层复杂度:当输入序列小于某个长度时,每一层的self-attention有优势。当序列太长,self-attenton也可以只跟限定距离内的词进行计算。
- 二、并行:多个attention和cnn一样不依赖前一时刻的计算,可以并行
-
三、长距离依赖:seif-attention和所有词都进行计算attention,所以不管中间多长距离,最大路径长度都是1,可以捕获长距离依赖关系。
- K=V=Q,比如输入一个句子,里面的每个词都要和句子里面的每个词进行attention计算。目的是学习句子内部的词依赖关系,捕获句子的内部结构。
三、Self-attention in NLP
- Deep Semantic Role Labeling with Self-Attention
- SRL作为一个序列标注问题,使用BIO标签进行标注。然后提出使用深度注意力网络(Deep Attentional Neural Network)进行标注,网络结构如下。在每一个网络块中,有一个RNN/CNN/FNN子层和一个self-attention子层组成。最后直接利用softmax当成标签分类进行序列标注。
- SRL作为一个序列标注问题,使用BIO标签进行标注。然后提出使用深度注意力网络(Deep Attentional Neural Network)进行标注,网络结构如下。在每一个网络块中,有一个RNN/CNN/FNN子层和一个self-attention子层组成。最后直接利用softmax当成标签分类进行序列标注。
- Simultaneously Self-Attending to All Mentions for Full-Abstract Biological Relation Extraction[7]:他们也是使用google提出包含self-attention的transformer来对输入文本进行表示学习,和原始的transformer略有不同在于他们使用了窗口大小为5的CNN代替了原始FNN。
四、总结
- seif-attention可以是一般attention的特殊情况,在self-attention中,Q=K=V,每个序列的单元都和该序列中的所有单元进行attention计算。多头attention是捕获不同子空间的相关信息。seif-attention特点在于无视词之间的距离之间计算依赖关系,能学习一个句子的内部结构,实现也较为简单,也可以实现并行。并且self-attention可以被当做一个层和RNN,CNN,FNN进行配合,成功应用于其他NLP任务。
杂:
- 残差连接:优化深度网络,整个网络使用了残差连接和对层进行了规范化(Add&Norm)
- 点乘和叉乘;叉乘是直接对应乘在加起来,点乘是矩阵乘法,矩阵內积,坐标也是这样组成
-
主流的序列标注模型是BiLSTM-CRF模型,利用CRF进行全局标签优化。
资料:
- http://www.cnblogs.com/robert-dlut/p/5952032.html
- https://www.cnblogs.com/robert-dlut/p/8638283.htm 博客地址
- 张俊林博士的博客"深度学习中的注意力机制(2017版)"和苏剑林的"《Attention is All You Need》浅读(简介+代码)
- 17年谷歌self—attention