Attention机制

Attention机制的优点

参数少
速度快
效果好

Attention 机制的原理

Attention 经常会和 Encoder–Decoder 一起说, 下方的动图演示了下面的动图演示了attention 引入 Encoder-Decoder 框架下,完成机器翻译任务的大致流程。
–动图略

Attention步骤的分解

第一步:query和key进行相似度计算,获得权值
第二步:将权值进行归一化,得到直接可用的权重
第三步:将权值和value进行加权求和
如下图所示:
Attention流程图

Attention的N种类型

在这里插入图片描述
利用计算区域划分
Soft Attention,这是比较常见的Attention方式,对__所有key求权重概率__(也可以叫__Global Attention__)。这种方式比较理性,参考了所有key的内容,再进行加权。但是计算量可能会比较大一些。

Hard Attention,这种方式是直接精准定位到某个key,其余key就都不管了,相当于这个key的概率是1,其余key的概率全部是0。对齐方式要求很高,要求一步到位,如果没有正确对齐,会带来很大的影响。不可导,一般需要用强化学习的方法进行训练。(或者使用gumbel softmax之类的)

Local Attention,这种方式其实是以上两种方式的一个折中,对一个窗口区域进行计算。先用Hard方式定位到某个地方,以这个点为中心可以得到一个窗口区域,在这个小区域内用Soft方式来算Attention

利用所用信息进行划分
General Attention:利用到了外部信息,常用于需要构建两段文本关系的任务,query一般包含了额外信息,根据外部query对原文进行对齐。

比如在阅读理解任务中,需要构建问题和文章的关联,假设现在baseline是,对问题计算出一个问题向量q,把这个q和所有的文章词向量拼接起来,输入到LSTM中进行建模。那么在这个模型中,文章所有词向量共享同一个问题向量,现在我们想让文章每一步的词向量都有一个不同的问题向量,也就是,在每一步使用文章在该步下的词向量对问题来算attention,这里问题属于原文,文章词向量就属于外部信息。

Local Attention,这种方式__只使用内部信息__,key和value以及query只和输入原文有关,在self attention中,key=value=query。既然没有外部信息,那么在原文中的每个词可以跟该句子中的所有词进行Attention计算,相当于寻找原文内部的关系。

还是举阅读理解任务的例子,上面的baseline中提到,对问题计算出一个向量q,那么这里也可以用上attention,只用问题自身的信息去做attention,而不引入文章信息。

利用结构层次划分
单层Attention:这是比较普遍的做法,用一个query对一段原文进行一次attention。
多层Attention:第一层,我们分别对每个句子使用attention计算出一个句向量(也就是单层attention);第二层,我们对所有句向量再做attention计算出一个文档向量(也是一个单层attention),最后再用这个文档向量去做任务。
多头Attention:多个query对一段原文进行了多次attention,每个query都关注到原文的不同部分,相当于重复做多次单层attention

Attention模型分类

CNN+Attention

在卷积操作前做attention,比如Attention-Based BCNN-1,这个任务是文本蕴含任务需要处理两段文本,同时对两段输入的序列向量进行attention,计算出特征向量,再拼接到原始向量中,作为卷积层的输入。

在卷积操作后做attention,比如Attention-Based BCNN-2,对两段文本的卷积层的输出做attention,作为pooling层的输入

在pooling层做attention,代替max pooling。比如Attention pooling,首先我们用LSTM学到一个比较好的句向量,作为query,然后用CNN先学习到一个特征矩阵作为key,再用query对key产生权重,进行attention,得到最后的句向量。

相似度计算方式

点乘, 矩阵相乘, cos相似度,串联方式, 多层感知机

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值