前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Attention based models

Attention based models

作者头像
张凝可
发布2020-05-18 16:27:00
3740
发布2020-05-18 16:27:00
举报
文章被收录于专栏:技术圈技术圈

Attention mechanism在深度学习中就像是万金油般的存在,涉及领域广泛,深受练丹师的喜爱。

推荐一篇综述 -> An Attentive Survey of Attention Models

我会大体介绍attention发展过程中几篇经典的paper,从机器翻译领域萌芽再到各个领域遍地开花.

Neural Machine Translation by Jointly Learning to Align and Translate 这是attention的经典之作,最初是针对机器翻译领域,在传统的encoder-decoder 结构中会将整个输入语句(source) 编码成一个固定长度的向量作为context 帮助decoder解码。无论输入语句多长,都被压缩为一个固定长度的向量,可能会丢失source中很多重要的信息,原文中用“squash”来形容这个过程,可想这种方式的暴力。

原文表述

而在这篇文章上,作者借鉴了人类“注意力”,使得在decoder中解码t时刻target的状态时,只对source中部分片段而不是全部,而注意哪些片段则是由模型、下游任务所决定。对于需要格外“注意”的赋予大权重,对于可有可无的赋予小权重(嵌入在模型中,是可微的)

从上图可以看出,在decoder 中t 时刻,yt的计算依靠与yt-1,st和ct, st,st是decoder中RNN在t时刻的隐状态。ct是根据当前时刻target 信息st与source 的hidden state 计算attention获得,意味着在decoder阶段并不是对encoder传过来的信息全盘皆收,而是根据需要有选择的侧重其中的某些部分,将目标端和源端联系了起来, 比如at,i表示目标端y t对源端xi的关注度,关注度越高说明xi对翻译yt越有用. 这里的attention计算方法被称为Additive attention (or multi-layer perceptron attention)

2. Effective Approaches to Attention-based Neural Machine Translation 这篇文章的提出了local attention是由于在机器翻译领域,对于输入语句比较长的情况,比如输入为段落、文档,可能会出现计算量比较大的问题,因为在decoder阶段每一个时刻的target都要同encoder输入数据中的所有hidden state计算attention, 进而计算ct。

这是一方面的原因。另一方面则是针对在hard attention 和 soft attention之间做一个调和,提出了local attention.

local

attention

文中提到了local attention的两种策略,一种是假设source 和 target是对齐的,那么pt = t. 一种是由的decoder中target的状态ht来决定。

上下文向量ct导出为窗口内源隐藏状态集合的加权平均值[pt-D,pt+D];D为经验选择。为了有利于pt附近的对准点,我们将高斯分布置于pt的中心。

除此之外,作者也探讨了global attention(我没看出和之前有什么区别)和score的几种计算方式,也就是at的计算:

3. Hierarchical Attention Networks for Document Classification 作者将attention 机制应用在word级别上来获得sentence representation 和sentence级别上获得document representation用于文档分类。

从上t图就可以非常直观地感受到hierarchial, attention机制不断从粒度上进行递进。

这里的attention是source2token,如果在word级别计算sentence representation, 注意力则是sentence中的每个token 对整个句子语义的重要度(注意力).

word-leve source2token attention

这里的uw是训练参数,可以理解为句子的整体表示,uw是一个向量。

sentence attention 同理

4. A STRUCTURED SELF-ATTENTIVE SENTENCE EMBEDDING

之前计算attention时得到的是一个向量,比如在source2token下计算句子中n个token对整个句子的重要性,那么每个token都会得到一个标量, n个token最终会形成n维的向量。在本文中,作者认为在计算每个token对整个句子(也可以是其他对象,比如target的si)的重要性时可以用一个向量来表示(这里向量的维度是r), 可以理解为在衡量token的重要时是在r个aspect上进行,当然这个r可以等于特征维度,来表示不同的特征的权重是不同。

至于操作过程,原始:

改进后:

Ws2只需要从一个da维的向量变成一个r*da维的矩阵即可。

attention weight 就从n维的向量a变成一个n*r的矩阵A了。

比较基本的到此为止我应该介绍差不多了,在之后的发展中,attention 机制在各个领域被应用,被改进,形成了各种各样,色彩缤纷的attention.

2017年对attention注意是一个不平凡的一年。

5. Recurrent Attention Network on Memory for Aspect Sentiment Analysis 简称RAM

这篇文章改进attention为:The results of multiple attentions are non-linearly combined with a recurrent neural network 。

这里应用aspect level 的情感分析,这里M为memory,其实就是 M = {m1,...,mt,...,mT} (考虑了句子中token与apect的位置关系--location weighted,不属于attention就不缀述了) 可以理解为长度为T的序列先输入到word embedding层之后又经过了下bi-lstm, 看上图的左侧。

作者将attention嵌入到了循环结构中,使得每个时刻得到的attention能够非线性组合起来。

从以上三个公式可以看出, 在计算attention时相对于之前的又多考虑了两个方面,一个是et-1,一个是v*(这里tao 不好表示,用*表示aspect在句子中的位置). et-1是t-1时刻的episode,v*为apect表示(其实就是h*)。e0等同于v*。

将it(AL)和et-1输入到GRU cell中获得et,得到et可以计算it+1(AL). 这里我理解it(AL)表示当前记忆中的信息,作为当前时刻的输入,而et-1在表示上一时刻得到的attention表示(蕴含了前t-1时刻的考虑memory影响的aspect), 经过n轮得到的aspect表示,用来做情感极性分类。 ps:水印源自我的知乎

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档