当咱们人类在看东西时,通常会将注意力集中注视着某个地方,而不会关注所有全部信息。例如当咱们一看到下面这张猫的图片时,主要会将目光停留在猫的脸部,以及留意猫的躯干,然后面的草地则会被当成背景忽略掉,也就是说咱们在每一处空间位置上的注意力分布是不同的。
经过这种方式,人类在须要重点关注的目标区域,会投入更多的注意力资源,以获取更多的细节信息,而抑制其它区域信息,这样令人类可以利用有限的注意力资源从大量信息中快速获取到高价值的信息,极大地提高了大脑处理信息的效率。算法
那么人类的这种“注意力机制”是否可用在AI中呢?
咱们来看一下,图片描述(Image Caption)中引入了“注意力机制”后的效果。“图片描述”是深度学习的一个典型应用,即输入一张图片,AI系统根据图片上的内容输出一句描述文字出来。下面看一下“图片描述”的效果,左边是输入原图,下边的句子是AI系统自动生成的描述文字,右边是当AI系统生成划横线单词的时候,对应图片中聚焦的位置区域,以下图:
能够看到,当输出frisbee(飞碟)、dog(狗)等单词时,AI系统会将注意力更多地分配给图片中飞碟、狗的对应位置,以得到更加准确地输出,是否是很神奇呢,这又是如何实现的呢?微信
一、什么是“注意力机制”
深度学习中的注意力机制(Attention Mechanism)和人类视觉的注意力机制相似,就是在众多信息中把注意力集中放在重要的点上,选出关键信息,而忽略其余不重要的信息。网络
二、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是图片的文字描述内容……框架
三、注意力模型
本文开头讲到的人类视觉注意力机制,它在处理信息时注意力的分布是不同的。而Encoder-Decoder框架将输入X都编码转化为语义表示C,这样就会致使全部输入的处理权重都同样,没有体现出注意力集中,所以,也可当作是“分心模型”。
为了能体现注意力机制,将语义表示C进行扩展,用不一样的C来表示不一样注意力的集中程度,每一个C的权重不同。那么扩展后的Encoder-Decoder框架变为:
dom
下面经过一个英文翻译中文的例子来讲明“注意力模型”。
例如输入的英文句子是: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阶段的转换函数。oop
以上介绍的就是经典的Soft-Attention模型,而注意力模型按不一样维度还有其它不少分类。学习
四、注意力模型的分类
按注意力的可微性,可分为:大数据
按注意力的关注域,可分为:
欢迎关注本人的微信公众号“大数据与人工智能Lab”(BigdataAILab),获取更多信息
推荐相关阅读
一、AI 实战系列
二、大话深度学习系列
三、图解 AI 系列
四、AI 杂谈
五、大数据超详细系列