Attention在NLP领域的一些知识点

先简单记录一下基础的知识点,阅读完综述《Attention, please! A Critical Review of Neural Attention Models in Natural Language Processing》后会更新。

1、Attention 简介

Attention可以理解为一种文本聚焦的方法,基本思想是对单词的embedding分配不同的权重,把注意力集中在相关的文本内容上。

参考《Attention is All You need》的定义:假设在t步时,有一个query向量,有一系列key向量和value向量,attention机制首先设计匹配函数,计算query与每个key向量的匹配程度得到权重,将权重归一化后与对应value相乘后加权求和。

2、Attention 种类划分

2.1 按计算区域划分:

1)Soft Attention(也可以叫Global Attention),这是比较常见的Attention方式,query与所有key放入匹配函数求权重,每个key都有一个对应的权重,是一种全局的计算方式。这种方式比较理性,参考了所有key的内容,再进行加权。但是计算量可能会比较大一些。

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

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

2.2 所用信息

1)General Attention。key与value是由原文得出,query用了外部的信息。例如阅读理解和文本匹配,要对两段文本进行对其,另一段文本的信息作为query。

2)Local Attention。只对一段文本采用attention,就是key、value和query都是根据同一段文本生成的,常用于文本分类,在阅读理解和文本匹配中也有使用,用于发掘一段文本间不同单词的相互联系。

2.3 层次结构

1)单层Attention,比较普遍的做法,就是用query对原文的key和value做attention。
2)多层Attention,做多层的attention,例如想得到一个文档的向量,先对各个句子做attention得到句子的向量,再对句子向量做attention得到文档的向量。
3)多头Attention,来自Transformer(《Attention is All You Nedd》)的multi-head attention,就是query对原文并行进行了多次attention,每个attention采用不同的参数,相当于以不同的角度关注原文,然后叠加各个attention的结果。

3 匹配函数

在这里插入图片描述

4 模型分析

Attention一般用在CNN和LSTM上,也有纯Attention结构的Transformer。

CNN提取的是局部的信息,忽略了长距离的依赖,在文本任务上的编码能力不如LSTM,但是因为卷积提取特征是相互独立的,所以有良好的并行能力。

LSTM能够很好的捕捉长距离的依赖,但是是单方向的,BiLSTM也只是从左右两个方向编码,然后做一个拼接。而且LSTM是串行模型,并行计算能力较差。

Transformer采用纯Attention的结构,能够很好的捕捉上下的信息,且有良好的并行能力。

  • 1)CNN+Attention

    • a)在卷积前做attention
    • b)在卷积后做attention
    • c)在pooling层做attention
  • 2)LSTM+Attention

    • 提取不同的信息做query和key,求出权重后对不同step的hidden state求和。
  • 3)纯Attention

    • 用三个不同的矩阵,使向量生成key、query、value向量,然后每个向量都是attention value的加权求和。

5 任务分析

需要用到attention的场景:
a)长文本任务。文本太长带来信息过载,需要捕捉一些关键信息,例如文本人分类。
b)涉及两段相关的文本。需要对两段文本的内容对齐,例如阅读理解、文本匹配、机器翻译。

一些具体的任务:
1)机器翻译:encoder用于对原文建模,decoder用于生成译文,attention用于连接原文和译文,在每一步翻译的时候关注不同的原文信息。

2)摘要生成:encoder用于对原文建模,decoder用于生成新文本,从形式上和机器翻译都是seq2seq任务,但是从任务特点上看,机器翻译可以具体对齐到某几个词,但这里是由长文本生成短文本,decoder可能需要capture到encoder更多的内容,进行总结。

3)图文互搜:encoder对图片建模,decoder生成相关文本,在decoder生成每个词的时候,用attention机制来关注图片的不同部分。

4)文本蕴含:判断前提和假设是否相关,attention机制用来对前提和假设进行对齐。

5)阅读理解:可以对文本进行self attention,也可以对文章和问题进行对齐。

6)文本分类:一般是对一段句子进行attention,得到一个句向量去做分类。

7)序列标注:Deep Semantic Role Labeling with Self-Attention,这篇论文在softmax前用到了self-attention,学习句子结构信息,和利用到标签依赖关系的CRF进行pk。

8)关系抽取:也可以用到self attention

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值