前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >注意力机制(Attention Mechanism) - NLP算法面试

注意力机制(Attention Mechanism) - NLP算法面试

作者头像
Steve Wang
发布2019-10-22 14:58:49
3.2K0
发布2019-10-22 14:58:49
举报
文章被收录于专栏:从流域到海域从流域到海域

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/Solo95/article/details/102470053

注意力机制起源于应用于NLP的RNN模型,但也在其他的领域有所应用。对注意力机制的理解也是算法面试经常提及的一道基础面试题,在这篇博文里我们汇总吴恩达深度学习视频序列模型3.7和3.8以及台大李宏毅教授对Attenion Mechanism以及相关参考文献对注意力机制给出详细的介绍的解释。

注意力机制(Attention Mechanism)

注意力机制是深度学习中一个非常重要的思想,在NLP领域尤为重要。

为什么要引入Attention Mechanism?

在一个Encoder和Decoder的翻译模型中,翻译一段法语到英文大致是整个序列输进Encoder然后Decoder再输出整个结果。也就是说模型是观测了整个要翻译的序列,然后再按序做的翻译(时间步模型)。

在这里插入图片描述
在这里插入图片描述

随着输入序列边长,对模型输出结果的Bleu score评估会呈现这样的变化:

在这里插入图片描述
在这里插入图片描述

绿线代表人类翻译的水平,蓝线代表机器翻译的水平,之间的Gap能衡量模型记忆长序列的能力。

而人工翻译则是看一部分,翻译一部分,再看下一部分,再翻译一部分,如此往复。因为对人来说,要记忆整个序列是非常困难的。

总结下来:

  1. 输入序列非常长时,原始的Encoder-Decoder翻译的质量会出现明显下降,因为整个模型要处理的feature过多,并且这些feature不一定对翻译特定的单词有所助益。一说模型难以学到足够合理的向量表示。
  2. 原始的时间步方式翻译的模型在设计上有缺陷。具体来讲,整个序列无论长短都被Encoder编码到固定长度,这使得Decoder的能力受限。因为翻译前后,源语言和目标语言不一定长度一致。
  3. 时间步编解码器的结构缺乏有效的理论支撑和经验指导,导致设计困难,模型效果不好。

注意力机制直观理解

如同前面讲过的人工翻译是一部分一部分看,一部分一部分翻译一样,注意力机制旨在实现在计算某个时间步的输出时,将注意力集中在一段序列上,段的大小可以由一个窗口来决定,并且为该段序列每一个时间步都赋以权值,以决定它们对最终输出的影响权重。这样使得前面所述问题得到一定程度的解决。

注意力机制

实例说明:

在这里插入图片描述
在这里插入图片描述

如图所示,在计算Encoder的输出上下文c0c^0c0时,维持窗口大小为4,即一个时间步输出由四个时间步输入决定。 c0=∑i=14α0^ihi c^0=\sum_{i=1}^4\hat{\alpha_0}^ih^i c0=i=1∑4​α0​^​ihi

那么每个时间步的权重α0i\alpha_0^iα0i​如何计算,通过一个match机制来实现,具体而言,可以使用一个小型的网络协同训练来得到一个具体match函数。

在这里插入图片描述
在这里插入图片描述

图中z是上一个时间步的输出,吴恩达notation里写作s<t−1>s^{<t-1>}s<t−1>。

可以使用softmax来实现:

在这里插入图片描述
在这里插入图片描述

使用softmax是为了窗口内部所有时间步权重相加等于1。

除此之外还有一些其他的实现方式:

在这里插入图片描述
在这里插入图片描述
  • 余弦相似度
  • 小型网络(前述)
  • 使用只有一个权重的计算公式,权重可以交由原网络来训练

如上所述,重复以上过程指导所有时间步的输出都计算完成,这样就得到了最终结果的序列。

虽然使用attention机制会明显增加计算量,但是整个模型的输出结果质量得到有效提升。因为与单纯的Encoder-Decoder模型不同。面对大量的features我们只关注窗口内部那部分features,而且窗口内部每一个时间步如何影响最后的序列生成都由权重控制,这使得整个过程更加的科学合理。

注意力机制的应用

虽然我们以NLP为例,但注意力机制在其他领域也有一些应用。

  • 文本翻译(Text Translation) 吴恩达课程为例,Attention机制被应用在翻译一个单词时应该重点关注哪些原词。
  • 语义蕴含(Entailment) Attention机制被用来关联假设和前提两者中词与词之间的对应关系。
  • 语音识别(Audio Recognition) Attention机制被用来关联每个输入语音序列的某些部分和相应音素的对应关系。
  • 文本摘要(Text Summary) Attention机制被用来关联输入文本中的一些重要词汇和生成的摘要里的词汇之间的对应关系。
  • 图像描述(Image Caption) 在计算机视觉领域,Attention机制可以帮助卷积神经网络决定在生成文本描述时应该重点关注图像的哪一部分。

参考文献

吴恩达深度学习系列-注意力机制

台大李宏毅机器学习课程-Attention-based model

Neural Machine Translation by Jointly Learning to Align and Translate. Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio. 2014.

深度学习中 的 Attention机制

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 注意力机制(Attention Mechanism)
    • 为什么要引入Attention Mechanism?
    • 注意力机制直观理解
    • 注意力机制
    • 注意力机制的应用
    • 参考文献
    相关产品与服务
    NLP 服务
    NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档