通俗易懂的让你了解深度学习中的注意力机制

2019 年 11 月 25 日 AINLP

1.前言


本文主要介绍一下,目前在深度学习中比较火的一门技术——Attention 机制(Attention Mechanisms)。

这门技术目前在 seq2seq(序列到序列模型,如图文转换,机器翻译,语音识别等) 的工作中,基本上已成标配。而在当前的 NLP 研究中,最近一年来,一些比较有影响力的算法模型,如 Google 的大杀器 bert 模型,OpenAI 提出的 GPT-2 ,其基本思想就是 Attention 机制。


Attention 来源:人类视觉的选择性注意力机制

视觉的注意力机制是人类视觉大脑特有的一种处理机制,这种机制讲的是,人类在看到一张图片时,主要进行以下三项工作:


  • 选取重点关注的目标区域

  • 着重对目标区域投入大脑精力

  • 忽略其他非目标区域信息


该机制使得人类大脑能够更加高效的分析得到有用内容,如下图所示,红色区域代表视觉更关注的区域。当我们大脑通过视觉感知这张图片时,会更关注人脸、文章标题、文章首部等内容[1]。

图1 人类观察图片注意力热度分布

简单的概括一下:

Attention机制=聚焦

我们在日常的机器学习建模中,其实也用到了“Attention”的的方法,如 Logistic 回归:

  • 模型输入:x1,x2,...xn

  • 模型输出:y

  • 模型表达式:

其中,

此处,我们模型学习到的变量系数wi决定了变量xi对目标 y 的影响程度,其绝对值越大,表明对 y 的影响也越大,我们通过建模学习到的就是不同变量对目标的决定程度,在后期决策分析时,重点关注影响程度大的变量,这就是Attention的思想。

回过头来,在深度学习领域,鉴于 Attention 来源于人类视觉领域,我们先介绍图像识别中 Attention 是如何使用的。


2. 图像识别中的 Attention 机制


下图为李飞飞 2015 年在 TED 上做汇报——

《How we are teaching computers to understand pictures?

图2 李飞飞TED演讲


李飞飞教授主要讲的是如何让计算机理解图片,就是看图说话(Image Caption),其现场演示了向计算机输入一张图片,输出描述语:

a person sitting at a table with a cake

我们思考下,人类大脑具体是如何对一张图片进行描述的,类似“把大象塞进冰箱”的操作,将这一过程分为三步:

这一过程如何用计算机进行实现呢?我们可以进行以下操作


针对此类问题,研究人员首先提出了一种 seq2seq 模型进行处理,这种模型结构基本类似,主要包含两个神经网络,针对图文转换,具体为:

  • 神经网络1:此部分主要为从图片中自动提取特征,作为后面生成语句的判定依据

  • 神经网络2:通过前者从图片中提取到的特征,按顺序从头预测一个个 word,并最终拼接成一句完整的语句

图3 seq2seq模型示意图


这种模型还是存在一些瑕疵的,下游的神经网络预测一个个输出时,面对上游提取到的信息是一样的,这个很显然是不科学的,因为每个关键词,与图片各个特征的关系是有区别的。

如图2生成的一句描述语中,单词person和cake依赖的图片特征可能是完全不同的,person更关注眼、嘴、鼻等特征,而cake更关注圆柱物体的特征。


针对上面的框架,做以下调整:

  • 直接保留编码器提取的特征,而非将其汇总成一个语义编码

  • 在下游解码器预测时,输入是上游的特征与其权重的加权求和

    图4 seq2seq+Attention模型示意图


利用权重可以评判预测的关键词与提取特征的相关程度。下面我们来看下Kelvin Xu等人[2]是如何实现的:先利用 CNN 进行图像特征抽取;然后在下游预测部分,采用 Attention + LSTM 的方法,一步步生成一句话。

最终达到下图效果,图片部位的明亮程度代表与标注关键词的密切程度,亮度越高,相关性越强。第一张图中,针对关键词 frisbee,左上角部位表示相关性最高;第二个图片描述语中的 girl,与图片右上角部位相关性最高。

图5 关键词与图片区域相关灰度图


以上介绍了 Attention 机制,以及在图像识别中应用,下面我们来看看 Attention机制在 NLP 中如何使用。


3. NLP 中的 Attention 机制


在 NLP 领域,与图文转换非常相似的一个场景是机器翻译,也是一个序列到序列的场景。Ilya Sutskever 等人[3],结合自然语言领域的特征,提出了一种 seq2seq 模型进行 English - French 的机器翻译模型,鉴于 NLP 领域数据的序列特征,模型编码器和解码器使用的模型都是 RNN 的算法。

对于目标单词的预测概率计算方式为

预测值主要受三部分影响

  • 上一个预测值:yi-1

  • 解码器隐藏层当前状态:si=f(si-1,yi-1,c)

  • 编码器汇总输入上下文信息:c

可以看到解码器,在预测单词yi时,依赖于输入的上下文汇总信息是一致的,都是c,与图文转换类似,这也是不科学的。


所以,Bahdanau 等人[4]利用 seq2seq + Attention 进行机器翻译,如下图所示,此处,对于输出的每个位置上单词的预测概率:

模型结构如图所示:

可以看到,该预测受三部分影响:

- 上一个预测值:yi-1

- 解码器隐藏层当前状态:si=f(si-1,yi-1,ci)

- 当前时刻编码器汇总的输入上下文信息:

其中,

可以看到,权重aij是由编码层的hj和解码层的si-1的计算,该权重可用于衡量输入xj和输出hi的关系。用灰度图(1:白色,0:黑色)表示输入的序列单词与输出的序列单词的相关性,对应元素点的颜色越趋近于白色,说明横纵坐标轴的两个单词相关性越强。

          图6 机器翻译目标词与输入词相关灰度图


下面介绍下在我们的日常的文本分类中,如何使用 Attention 机制。


4. Attention 机制在文本分类中的应用


我们在公司的文本分析工作中,其中一部分工作是要对舆情数据进行分析,很直接的应用,就是想了解下他人对我们的评价如何,这个时候就要进行情感分析,其实就是将文本进行二分类——好评和差评,那么我们是如何利用深度学习的方法进行建模的呢?


4.1 基于 RNN 的文本分类模型


我们建模的过程如下所示:

  1. 对于文本数据,我们进行预处理得到一个个单词

  2. 将单词转为词向量,我们使用腾讯 AI Lab 公开的词向量数据集作为初始值,后面随着模型训练进行微调

  3. 之后将词向量传入 RNN 模型(我们用的是 LSTM 模型),利用 RNN 的性质,抓取整个输入文本的上下文信息,汇总得到一个文档向量

  4. 利用汇总得到的文档向量,通过一个全连接层,将信息汇总,通过 softmax 转换成分类概率

图7 RNN文本分类模型示意图


4.2 基于 RNN + Attention 的文本分类模型


为了优化模型,以及抽取出具体影响文本情感分类的关键词,我们考虑在 RNN 的基础上,加上 Attention 机制。

具体如下图,模型针对 4.1 做了一步优化,在对隐藏层进行信息整合时,先利用隐藏层的h1,h2,...,hn计算对应的权重,a1,a2,...,an,然后计算gi=hi*ai,最终将gi进行汇总,同样利用 softmax 的方式,即可得到分类概率。


图8 RNN+Attention文本分类示意图


当然我们在应用中,仅使用了基于词的 Attention 机制,Jader Abreu 等人[5]提出了一个多层的 RNN+Attention 的模型——Hierarchical Attentional Hybrid Neural Networks(简称 HAHNN),该模型将一条文本分类两层,词语层和句子层,使用两层 RNN + Attention 的方式,一层用于抽取基于 word 的 Attention,另外一层用于抽取由word组成的sentence的 Attention,最终汇总进行文本类别的预测。

图9 双层RNN+Attention文本分类示意图


在我们的实际工作中,考虑到模型复杂度和标注数据的成本,未采用HAHNN模型。

我们搭建RNN + Attention模型进行文本分类,采用tensorflow进行开发,具体代码可访问以下github网址[7]查看。

https://github.com/iambyd/text_classification_lstm_attention


5.总结和展望


本次关于 Attention 的推文仅作为一个入门的介绍。后期主要介绍 Self-Attention ,以及 Google 的 bert 模型的理论和具体应用。


参考文章


[1] 张俊林 深度学习中的注意力机制(2017 版).

[2] Kelvin Xu,Jimmy Lei Ba,Ryan Kiros,Kyunghyun Cho,Aaron Courville,Ruslan Salakhutdinov,Richard S. Zemel,Yoshua Bengio. Show, Attend and Tell Neural Image Caption Generation with Visual Attention.

[3] Ilya Sutskever,Oriol Vinyals,Quoc V. Le. Sequence to Sequence Learning with Neural Networks.

[4] Dzmitry Bahdanau,KyungHyun Cho,Yoshua Bengio. NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE.

[5] Jader Abreu, Luis Fred, David Macêdo, and Cleber Zanchettin . Hierarchical Attentional Hybrid Neural Networks for Document Classication.

[6] Ashish Vaswani,Noam Shazeer,Niki Parmar,Jakob Uszkoreit,Llion Jones,Aidan N. Gomez,Łukasz Kaiser,Illia Polosukhin.Attention Is All You Need.

[7] https://github.com/iambyd/text_classification_lstm_attention



 

本文转载自公众号:数据天团,作者丁永兵


推荐阅读


AI界最危险武器 GPT-2 使用指南:从Finetune到部署


SemBERT: BERT 的语义知识增强


BERT fintune 的艺术


子词技巧:The Tricks of Subword


T5 模型:NLP Text-to-Text 预训练模型超大规模探索

BERT 瘦身之路:Distillation,Quantization,Pruning

Transformer (变形金刚,大雾) 三部曲:RNN 的继承者


关于AINLP


AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。


登录查看更多
0

相关内容

Attention机制最早是在视觉图像领域提出来的,但是真正火起来应该算是google mind团队的这篇论文《Recurrent Models of Visual Attention》[14],他们在RNN模型上使用了attention机制来进行图像分类。随后,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》 [1]中,使用类似attention的机制在机器翻译任务上将翻译和对齐同时进行,他们的工作算是是第一个提出attention机制应用到NLP领域中。接着类似的基于attention机制的RNN模型扩展开始应用到各种NLP任务中。最近,如何在CNN中使用attention机制也成为了大家的研究热点。下图表示了attention研究进展的大概趋势。
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
最新《深度学习行人重识别》综述论文,24页pdf
专知会员服务
80+阅读 · 2020年5月5日
专知会员服务
199+阅读 · 2020年3月6日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
356+阅读 · 2020年2月15日
注意力机制模型最新综述
专知会员服务
266+阅读 · 2019年10月20日
注意力机制介绍,Attention Mechanism
专知会员服务
168+阅读 · 2019年10月13日
神经网络与深度学习,复旦大学邱锡鹏老师
专知会员服务
118+阅读 · 2019年9月24日
一文读懂Attention机制
机器学习与推荐算法
63+阅读 · 2020年6月9日
Attention!注意力机制模型最新综述(附下载)
THU数据派
29+阅读 · 2019年4月13日
Attention!注意力机制模型最新综述
专知
65+阅读 · 2019年4月8日
深度学习中Attention Mechanism详细介绍:原理、分类及应用
深度学习与NLP
10+阅读 · 2019年2月18日
自然语言处理中注意力机制综述
Python开发者
11+阅读 · 2019年1月31日
注意力机制(Attention Mechanism)在自然语言处理中的应用
基于attention的seq2seq机器翻译实践详解
黑龙江大学自然语言处理实验室
11+阅读 · 2018年3月14日
基础 | 基于注意力机制的seq2seq网络
黑龙江大学自然语言处理实验室
16+阅读 · 2018年3月7日
深度学习中的注意力机制
CSDN大数据
24+阅读 · 2017年11月2日
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
Area Attention
Arxiv
5+阅读 · 2019年2月5日
Arxiv
4+阅读 · 2018年10月31日
Arxiv
5+阅读 · 2018年10月11日
The Matrix Calculus You Need For Deep Learning
Arxiv
12+阅读 · 2018年7月2日
Arxiv
6+阅读 · 2018年1月29日
Arxiv
4+阅读 · 2017年7月25日
VIP会员
相关VIP内容
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
最新《深度学习行人重识别》综述论文,24页pdf
专知会员服务
80+阅读 · 2020年5月5日
专知会员服务
199+阅读 · 2020年3月6日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
356+阅读 · 2020年2月15日
注意力机制模型最新综述
专知会员服务
266+阅读 · 2019年10月20日
注意力机制介绍,Attention Mechanism
专知会员服务
168+阅读 · 2019年10月13日
神经网络与深度学习,复旦大学邱锡鹏老师
专知会员服务
118+阅读 · 2019年9月24日
相关资讯
一文读懂Attention机制
机器学习与推荐算法
63+阅读 · 2020年6月9日
Attention!注意力机制模型最新综述(附下载)
THU数据派
29+阅读 · 2019年4月13日
Attention!注意力机制模型最新综述
专知
65+阅读 · 2019年4月8日
深度学习中Attention Mechanism详细介绍:原理、分类及应用
深度学习与NLP
10+阅读 · 2019年2月18日
自然语言处理中注意力机制综述
Python开发者
11+阅读 · 2019年1月31日
注意力机制(Attention Mechanism)在自然语言处理中的应用
基于attention的seq2seq机器翻译实践详解
黑龙江大学自然语言处理实验室
11+阅读 · 2018年3月14日
基础 | 基于注意力机制的seq2seq网络
黑龙江大学自然语言处理实验室
16+阅读 · 2018年3月7日
深度学习中的注意力机制
CSDN大数据
24+阅读 · 2017年11月2日
相关论文
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
Area Attention
Arxiv
5+阅读 · 2019年2月5日
Arxiv
4+阅读 · 2018年10月31日
Arxiv
5+阅读 · 2018年10月11日
The Matrix Calculus You Need For Deep Learning
Arxiv
12+阅读 · 2018年7月2日
Arxiv
6+阅读 · 2018年1月29日
Arxiv
4+阅读 · 2017年7月25日
Top
微信扫码咨询专知VIP会员