分享

自然语言处理进阶学习-Attention 模型

 黄昌易 2019-06-09

一、背景

今天打算讲述最近NLP中很火的一个概念,Attention(注意力机制),原意是指机器在做阅读理解、文本分类、翻译等任务时,应该要抓取重点,如阅读理解应该是抓取和问题相关的句子或者词语,文本分类如情感分析应该是主要将注意力集中在和情感相关的词上,翻译中应该主要翻译出主谓宾等主要句子成分。希望机器不是囫囵吞枣的阅读,而是基于任务针对性的的做语义的理解。有很多论文都表示各种Attention在不同的NLP任务中都有很好的效果,这篇文章主要讲述其中比较有名的两篇,《Attentive Pooling Networks》和《Attention Is All You Need》,第一篇主要是承上启下做同义词的匹配,是对上篇文章(自然语言处理入门学习十)中的CDSSM这个模型的改进,第二篇则是2017年的爆款论文,主要应用于机器翻译。

二、注意力机制在NLP中的应用

CDSSM是用来做句子的匹配的模型,主要是先将句子对使用两个向量来表征(CNN Embedding),然后将余弦函数用作两个句子之间的语义距离,最后将这个语义距离函数当做损失函数来不断优化。

2.1 Attentive Pooling Networks

《Attentive Pooling Networks》是一个做问答对匹配的模型,主要是在向量表征和余弦函数的距离之间添加了Attention层,这样问题向量表征上就能得到答案的信息,答案向量表征上就能得到问题的信息。如单独对“How old are you?”和“How are you?”问题的向量表征可能非常相近,但是现实可能是完全不同的两个问题。但是如果对“How old are you?“I am 18.”和“How are you?”“I’m fine”,将问题和答案的信息都考虑进来,这样就可以很明显的区分“How old are you?”和“How are you?”这两句话实际是两个问题。

自然语言处理进阶学习-Attention 模型

图1:Attentive Pooling Networks

文章中很巧妙的构造了Attentive Pooling层G,

自然语言处理进阶学习-Attention 模型

其中Q是问题的向量表征,A是答案的向量表征,U是参数矩阵,是可以通过神经网络学习得到的。然后分别做基于行的max-pooling和基于列的max-pooling,得到Attention层中重要的信息。

自然语言处理进阶学习-Attention 模型

这样问题向量中就会存在答案的信息,答案向量中就会存在问题的信息。然后再分别做softmax归一化之后再乘上开始问题和答案的向量表征,表示提取出看过问题和答案之后,问题和答案中的重要词语分别做的向量表征。

自然语言处理进阶学习-Attention 模型

Loss函数的计算和CDSSM的Loss函数计算一样。

再来反思这个模型最值得学习的地方,当我们在做问答对的匹配这个任务的时候,不能再单独的对问题和答案分别进行向量表征,而是得在看过问题和答案之后,觉得针对这个答案该问题应该注意哪几个词,针对这个问题,答案中重要的词又是哪几个,这样才能做出好的问题对匹配中的句子向量的表征。

着重介绍这篇文章的最大的目的是在于承上,是对CDSSM这个模型的改进,启下,是对于下一篇文章GAN在检索中的应用IRGAN做的铺垫。(IRGAN的QA检索中的判别模型和生成模型都是用的Attentive Pooling。)

论文中展示的这个模型的效果:

自然语言处理进阶学习-Attention 模型

三、参考文献

1、Attentive Pooling Networks

2、Attention Is All You Need

原文链接:https://zhuanlan.zhihu.com/p/40006082

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多