文档章节

大话注意力机制(Attention Mechanism)

雪饼
 雪饼
发布于 06/14 00:02
字数 2318
阅读 193
收藏 0


 当我们人类在看东西时,一般会将注意力集中注视着某个地方,而不会关注全部所有信息。例如当我们一看到下面这张猫的图片时,主要会将目光停留在猫的脸部,以及留意猫的躯干,而后面的草地则会被当成背景忽略掉,也就是说我们在每一处空间位置上的注意力分布是不一样的。
 
通过这种方式,人类在需要重点关注的目标区域,会投入更多的注意力资源,以获取更多的细节信息,而抑制其它区域信息,这样使人类能够利用有限的注意力资源从大量信息中快速获取到高价值的信息,极大地提升了大脑处理信息的效率。

那么人类的这种“注意力机制”是否可用在AI中呢?
我们来看一下,图片描述(Image Caption)中引入了“注意力机制”后的效果。“图片描述”是深度学习的一个典型应用,即输入一张图片,AI系统根据图片上的内容输出一句描述文字出来。下面看一下“图片描述”的效果,左边是输入原图,下边的句子是AI系统自动生成的描述文字,右边是当AI系统生成划横线单词的时候,对应图片中聚焦的位置区域,如下图:
 
可以看到,当输出frisbee(飞碟)、dog(狗)等单词时,AI系统会将注意力更多地分配给图片中飞碟、狗的对应位置,以获得更加准确地输出,是不是很神奇呢,这又是如何实现的呢?

1、什么是“注意力机制”
深度学习中的注意力机制(Attention Mechanism)和人类视觉的注意力机制类似,就是在众多信息中把注意力集中放在重要的点上,选出关键信息,而忽略其他不重要的信息。

2、Encoder-Decoder框架(编码-解码框架)
目前大多数的注意力模型附着在Encoder-Decoder框架下,所以我们先来了解下这个框架。Encoder-Decoder框架可以看作是一种文本处理领域的研究模式,该框架的抽象表示如下图:
 
给定输入X,通过Encoder-Decoder框架生成目标Y。其中,Encoder(编码器)就是对输入X进行编码,通过非线性变换转化为中间语义表示C;Decoder(解码器),根据输入X的语义表示C和之前已生成的历史信息生成目标信息。
Encoder-Decoder框架是个通用框架,有很多的场景,在文本处理、图像处理、语音识别等各领域经常使用,Encoder、Decoder可使用各种模型组合,例如CNN/RNN/BiRNN/LSTM等。例如对于自动问答,X是一个问句,Y是答案;对于机器翻译,X是一种语言,Y是另外一种语言;对于自动摘要,X是一篇文章,Y是摘要;对于图片描述,X是一张图片,Y是图片的文字描述内容……

3、注意力模型
本文开头讲到的人类视觉注意力机制,它在处理信息时注意力的分布是不一样的。而Encoder-Decoder框架将输入X都编码转化为语义表示C,这样就会导致所有输入的处理权重都一样,没有体现出注意力集中,因此,也可看成是“分心模型”。
为了能体现注意力机制,将语义表示C进行扩展,用不同的C来表示不同注意力的集中程度,每个C的权重不一样。那么扩展后的Encoder-Decoder框架变为:

下面通过一个英文翻译中文的例子来说明“注意力模型”。
例如输入的英文句子是:Tom chase Jerry,目标的翻译结果是“汤姆追逐杰瑞”。那么在语言翻译中,Tom, chase, Jerry这三个词对翻译结果的影响程度是不同的,其中,Tom, Jerry是主语、宾语,是两个人名,chase是谓语,是动作,那么这三个词的影响程度大小顺序分别是Jerry>Tom>chase,例如(Tom,0.3)(Chase,0.2) (Jerry,0.5),不同的影响程度代表AI模型在翻译时分配给不同单词的注意力大小,即分配的概率大小。

使用上图扩展了Ci的Encoder-Decoder框架,则翻译Tom chase Jerry的过程如下。
生成目标句子单词的过程如下面的形式:
 
其中,f1是Decoder(解码)的非线性变换函数
每个Ci对应着不同的源单词的注意力分配概率分布,计算如下面的形式:
 
其中,f2函数表示Encoder(编码)节点中对输入英文单词的转换函数,g函数代表Encoder(编码)表示合成整个句子中间语义表示的变换函数,一般采用加权求和的方式,如下式:
 
其中aij表示权重,hj表示Encoder的转换函数,即h1=f2(“Tom”),h2=f2(“Chase”),h3=f2(“Jerry”),Tx表示输入句子的长度
当i是“汤姆”时,则注意力模型权重aij分别是0.6, 0.2, 0.2。那么这个权重是如何得到的呢?
aij可以看做是一个概率,反映了hj对ci的重要性,可使用softmax来表示:
 
其中,
 
这里的f表示一个匹配度的打分函数,可以是一个简单的相似度计算,也可以是一个复杂的神经网络计算结果。在这里,由于在计算ci时还没有h’i,因此使用最接近的h’i-1代替。当匹配度越高,则aij的概率越大。
因此,得出aij的过程如下图:
 
其中,hi表示Encoder转换函数,F(hj,Hi)表示预测与目标的匹配打分函数

将以上过程串起来,则注意力模型的结构如下图所示:
 
其中,hi表示Encoder阶段的转换函数,ci表示语义编码,h’i表示Decoder阶段的转换函数。

以上介绍的就是经典的Soft-Attention模型,而注意力模型按不同维度还有其它很多分类。

4、注意力模型的分类
按注意力的可微性,可分为:

  • Hard-Attention,就是0/1问题,某个区域要么被关注,要么不关注,这是一个不可微的注意力;
  • Soft-Attention,[0,1]间连续分布问题,用0到1的不同分值表示每个区域被关注的程度高低,这是一个可微的注意力。

按注意力的关注域,可分为:

  • 空间域(spatial domain)
  • 通道域(channel domain)
  • 层域(layer domain)
  • 混合域(mixed domain)
  • 时间域(time domain)

 

欢迎关注本人的微信公众号“大数据与人工智能Lab”(BigdataAILab),获取更多信息

 

推荐相关阅读

1、AI 实战系列

2、大话深度学习系列

3、图解 AI 系列

4、AI 杂谈

5、大数据超详细系列

© 著作权归作者所有

雪饼

雪饼

粉丝 408
博文 61
码字总数 134328
作品 0
广州
私信 提问
[Paper Reading] Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

论文链接:https://arxiv.org/pdf/1502.03044.pdf 代码链接:https://github.com/kelvinxu/arctic-captions & https://github.com/yunjey/show-attend-and-tell & https://github.com/jazzs......

LZ_Jaja
06/06
0
0
《Attention-based LSTM for Aspect-level Sentiment Classification 》笔记

1、问题的提出:the sentiment polarity of a sentence is highly dependent on both content and aspect. For example, the sentiment polarity of “Staffs are not that friendly, but t......

安于此生__
2017/07/09
0
0
注意力机制(Attention Mechanism)在自然语言处理中的应用

https://www.cnblogs.com/robert-dlut/p/5952032.html 注意力机制(Attention Mechanism)在自然语言处理中的应用 近年来,深度学习的研究越来越深入,在各个领域也都获得了不少突破性的进展...

u011239443
2018/05/23
0
0
(转)注意力机制(Attention Mechanism)在自然语言处理中的应用

注意力机制(Attention Mechanism)在自然语言处理中的应用  本文转自:http://www.cnblogs.com/robert-dlut/p/5952032.html 近年来,深度学习的研究越来越深入,在各个领域也都获得了不少突...

wangxiaocvpr
2016/10/16
0
0
如何理解自然语言处理中的注意力机制? | 技术头条

作者 | yuquanle 责编 | 郭芮 近些年来,注意力机制一直频繁的出现在目之所及的文献或者博文中,可见在nlp中算得上是个相当流行的概念,事实也证明其在nlp领域散发出不小得作用。这几年的顶会...

CSDN资讯
03/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享Elvis Presley的单曲《White Christmas》: 《White Christmas》- Elvis Presley 手机党少年们想听歌,请使劲...

小小编辑
今天
1K
17
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
12
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部