深度学习:前沿技术-Attention:一个实例说明Attention机制——作者:Ling

转载 2018年04月15日 17:13:50

作者:Ling,作者链接: http://www.bdpt.net/cn

Attention机制早在一两年前就有所耳闻,它作为一般NN,CNN和RNN(LSTM)等深度学习的一个加强技术,当时已经成为NLP领域的研究热点。随着Attention机制在机器翻译、图片描述、语义蕴涵、语音识别和文本摘要等各大领域取得成功,使得它成为现在成为一个不可不学习的技术。

本文将由浅入深,通过一个简单例子介绍Attention的机制原理。

 

预备知识:假设你已经对深度学习已经熟悉,并且使用过Keras。

 

下面分一个实例介绍Attention机制。

问题:给定一些实例,每个实例有32个特征,每个特征是一个数,每个实例都属于一个类别(0,1表示),共两个类别,训练一个神经网络对这些实例进行分类,这是一个典型的二分类问题。

起因

对于某一个实例,假设每个特征是一个数,例如实例对应的特征相应值的数组为 inputs= [0.1, 1, 0.2, 0.3, 0.4, 0.1, 0.2, 0.3, 0.4, 0.5…], 假设其对应类别为1,从这个实例我们可以看出,该实例类别由第二个特征就能决定(第二个特征为1),我们假设所有实例的类别都由其第二个特征决定,和其他特征无关。通过神经网络,我们可以自动学习参数,可以在一定程度上让第二个特征的权值大一些,但是这样做还不直接,我们是否有更直接的办法让第二个特征在所有特征中的比重加强?

解决:Attention机制。

假设我们可以得到一个概率数组,理想情况下attention_probs=[0, 1, 0, 0, 0…], 也就是第二个特征的概率为1,其他都为0,那么问题就得到了解决,将inputs和attention_probs按位相乘 = [0, 1, 0, 0…],只留下了第二个特征,这样就可以很好地进行分类了。理想的p很难得到,我们如果可以得到一个近似的attention_probs,比如attention_probs=[0.1, 0.5, 0.1, 0.1, …],只要能让第二个特征概率远大于其他,也可以解决问题。问题来了,如何得到这样一个attention_probs呢?

实现:基于Keras的一个简单实现

 

 

def build_model():

 

 

    inputs = Input(shape=(input_dim,))

    # ATTENTION PART STARTS HERE
    attention_probs = Dense(input_dim, activation='softmax', name='attention_vec')(inputs)
    attention_mul = merge([inputs, attention_probs], output_shape=32, name='attention_mul', mode='mul')    # ATTENTION PART FINISHES HERE    attention_mul = Dense(64)(attention_mul)    output = Dense(1, activation='sigmoid')(attention_mul)    model = Model(input=[inputs], output=output)    return model

解释:

  • 第二行是模型的输入,实例中输入维度就是32
  • 第三行经过一个全连接层,通过一个softmax得到同样32维的一个输出,这些输出就是attention的attention_probs,由每个特征的概率构成
  • 第四行通过按位相乘,让每个输入乘上其概率,得到新的输出,输出还是32维,不变。
  • 第六行增加一个全连接隐含层
  • 第七行通过一个sigmoid进行二分类

整个模型结构图如下


这样整个模型就建好后,放入训练数据训练,自动就可以学习得到attention的attention_probs数组(vector),该数组值分布如图:


可以看到第二个特征的attention概率远大于其他。

同理,LSTM类似,只是要学习得到一个针对时间步的概率数组。

我写的这篇博文应该是理解Attention机制最简明的教程,希望对大家有帮助。

 

其他扩展材料

https://www.tuicool.com/articles/A7Nj63V

https://distill.pub/2016/augmented-rnns/


深度学习中的Attention模型介绍及其进展

  近期对深度学习中的Attention模型进行了深入研究,该模型在图像识别、语音识别和自然语言处理三大深度学习的热门领域均有广泛的使用,是2014和2015年深度学习领域的重要进展。现对其原理、主要...
  • jteng
  • jteng
  • 2016-10-20 15:29:14
  • 8676

深度学习笔记——Attention Model(注意力模型)学习总结

Attention Model(注意力模型)学习总结,包括soft Attention Model,Global Attention Model和Local Attention Model,静态AM,...
  • mpk_no1
  • mpk_no1
  • 2017-08-06 21:49:46
  • 21163

深度学习方法(九):自然语言处理中的Attention Model注意力模型

上一篇博文深度学习方法(八):Encoder-Decoder模型,基本Sequence to Sequence模型描述了基本的Encoder-Decoder模型,在作为翻译模型的时候,这种基本的Enc...
  • xbinworld
  • xbinworld
  • 2017-02-04 00:27:43
  • 9679

深度学习中 的 Attention机制

注意力机制即 Attention mechanism在序列学习任务上具有巨大的提升作用,在编解码器框架内,通过在编码段加入Attention模型,对源数据序列进行数据加权变换,或者在解码端引入Atte...
  • guohao_zhang
  • guohao_zhang
  • 2018-03-13 15:15:13
  • 265

【深度学习】聚焦机制DRAM(Deep Recurrent Attention Model)算法详解

Visual Attention基础,Multiple object recognition with visual attention算法解读。
  • shenxiaolu1984
  • shenxiaolu1984
  • 2016-06-28 22:14:55
  • 7785

自然语言处理中的Attention Model:是什么及为什么

要是关注深度学习在自然语言处理方面的研究进展,我相信你一定听说过Attention Model(后文有时会简称AM模型)这个词。AM模型应该说是过去一年来NLP领域中的重要进展之一,在很多场景被证明有...
  • malefactor
  • malefactor
  • 2016-01-20 18:26:02
  • 71556

Attention Mechanism注意力机制

  • 2017年11月10日 12:24
  • 1.91MB
  • 下载

Attention and Memory in Deep Learning and NLP(深度学习和NLP中的注意和记忆机制) 阅读笔记

什么是Attention Mechanisms(注意机制) 神经网络中的注意机制类似人类的视觉注意机制,人类视觉本质上看图片会聚焦在“高清晰度“的区域,同时也会感知周围“低清晰度”的区域,然...
  • aPYXa
  • aPYXa
  • 2016-07-26 20:19:45
  • 2016

深度学习之OCR(五)——Attention机制_gradient-based attention

Look and Think Twice: Capturing Top-Down Visual Attention with Feedback. Chunshui Cao, Xianming Liu...
  • VictoriaW
  • VictoriaW
  • 2017-07-03 15:45:03
  • 1386

attention 机制

attention 机制什么是attentionattention机制是(非常)松散地基于人类的视觉注意机制。就是按照“高分辨率”聚焦在图片的某个特定区域并以“低分辨率”感知图像的周边区域的模式,然后...
  • qq_26609915
  • qq_26609915
  • 2016-08-01 16:24:34
  • 6836
收藏助手
不良信息举报
您举报文章:深度学习:前沿技术-Attention:一个实例说明Attention机制——作者:Ling
举报原因:
原因补充:

(最多只允许输入30个字)