Attention 与Hierarchical Attention Networks 原理

1. Attention 注意力机制

注意力机制即Attention mechanism在序列学习任务上具有巨大的提升作用,在编解码器框架内,通过在编码段加入A模型,对源数据序列进行数据加权变换,或者在解码端引入A模型,对目标数据进行加权变化,可以有效提高序列对序列的自然方式下的系统表现。

1.1 什么是Attention?

当我们人在看一样东西的时候,我们当前时刻关注的一定是我们当前正在看的这样东西的某一地方,换句话说,当我们目光移到别处时,注意力随着目光的移动也在转移,这意味着,当人们注意到某个目标或某个场景时,该目标内部以及该场景内每一处空间位置上的注意力分布是不一样的,如下图。这一点在如下情形下同样成立:当我们试图描述一件事情,我们当前时刻说到的单词和句子和正在描述的该事情的对应某个片段最先关,而其他部分随着描述的进行,相关性也在不断地改变。从上述两种情形,读者可以看出,对于Attention的作用角度出发,我们就可以从两个角度来分类Attention种类:空间注意力 (Spatial
Attention )时间注意力(Temporal Attention)
。这种分类更多的是从应用层面上,而从Attention的作用方法上,可以将其分为Soft AttentionHard Attention,这既我们所说的,Attention输出的向量分布是一种one-hot的独热分布还是soft的软分布,这直接影响对于上下文信息的选择作用。

在这里插入图片描述

1.2 加入Attention的动机

再解释了Attention原理之前,我们讨论一下为什么要加入Attention模型。

  1. 序列输入时,随着序列的不断增长,原始根据时间步的方式的表现越来越差,这是由于原始的这种时间步模型设计的结构有缺陷,即所有的上下文输入信息都被限制到固定长度,整个模型的能力都同样收到限制,我们暂且把这种原始的模型称为简单的编解码器模型
  2. 编解码器的结构无法解释,也就导致了其无法设计。

1.3 Attention 原理

1.3.1 Encoder-Decoder框架

要了解深度学习中的注意力模型,就不得不先谈Encoder-Decoder框架,因为目前大多数注意力模型附着在Encoder-Decoder框架下,当然,其实注意力模型可以看作一种通用的思想,本身并不依赖于特定框架,这点需要注意。
Encoder-Decoder框架可以看作是一种深度学习领域的研究模式,应用场景异常广泛。图2是文本处理领域里常用的Encoder-Decoder框架最抽象的一种表示。
图2 抽象的文本处理领域的Encoder-Decoder框架
图2 抽象的文本处理领域的Encoder-Decoder框架

文本处理领域的Encoder-Decoder框架可以这么直观地去理解:可以把它看作适合处理由一个句子(或篇章)生成另外一个句子(或篇章)的通用处理模型。对于句子对<Source,Target>,我们的目标是给定输入句子Source,期待通过Encoder-Decoder框架来生成目标句子Target。Source和Target可以是同一种语言,也可以是两种不同的语言。而Source和Target分别由各自的单词序列构成:
在这里插入图片描述

在这里插入图片描述

1.3.2 Attention模型

1.3.2.1 Soft Attention模型

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

在这里插入图片描述
图3 引入注意力模型的Encoder-Decoder框架
在这里插入图片描述
其中,Lx代表输入句子Source的长度,aij代表在Target输出第i个单词时Source输入句子中第j个单词的注意力分配系数,而hj则是Source输入句子中第j个单词的语义编码。假设下标i就是上面例子所说的“ 汤姆” ,那么Lx就是3,h1=f(“Tom”),h2=f(“Chase”),h3=f(“Jerry”)分别是输入句子每个单词的语义编码,对应的注意力模型权值则分别是0.6,0.2,0.2,所以g函数本质上就是个加权求和函数。如果形象表示的话,翻译中文单词“汤姆”的时候,数学公式对应的中间语义表示Ci的形成过程类似图4。
在这里插入图片描述
图4 Attention的形成过程

这里还有一个问题:生成目标句子某个单词,比如“汤姆”的时候,如何知道Attention模型所需要的输入句子单词注意力分配概率分布值呢?就是说“汤姆”对应的输入句子Source中各个单词的概率分布:(Tom,0.6)(Chase,0.2) (Jerry,0.2) 是如何得到的呢?
为了便于说明,我们假设对图2的非Attention模型的Encoder-Decoder框架进行细化,Encoder采用RNN模型,Decoder也采用RNN模型,这是比较常见的一种模型配置,则图2的框架转换为图5。

在这里插入图片描述

图5 RNN作为具体模型的Encoder-Decoder框架
那么用图6可以较为便捷地说明注意力分配概率分布值的通用计算过程。

在这里插入图片描述

对于采用RNN的Decoder来说,在时刻i,如果要生成yi单词,我们是可以知道Target在生成Yi之前的时刻i-1时,隐层节点i-1时刻的输出值Hi-1的,而我们的目的是要计算生成Yi时输入句子中的单词“Tom”、“Chase”、“Jerry”对Yi来说的注意力分配概率分布,那么可以用Target输出句子i-1时刻的隐层节点状态Hi-1去一一和输入句子Source中每个单词对应的RNN隐层节点状态hj进行对比,即通过函数F(hj,Hi-1)来获得目标单词yi和每个输入单词对应的对齐可能性,这个F函数在不同论文里可能会采取不同的方法,然后函数F的输出经过Softmax进行归一化就得到了符合概率分布取值区间的注意力分配概率分布数值。

参考链接

上述内容来自以下两个链接:
https://blog.csdn.net/joshuaxx316/article/details/70665388
https://blog.csdn.net/hpulfc/article/details/80448570
Self Attention模型可以参考以下链接
https://blog.csdn.net/hpulfc/article/details/80449561

2. Hierarchical Attention Networks(HAN)

2.1 Non-Attention

在介绍HAN 之前,我们先来了解一下使用两个神经网络分别对句子和文档的建模,采用一种自下向上的基于向量的文本表示模型。
首先使用CNN/LSTM来建模句子表示,接下来使用双向GRU模型对句子表示进行编码得到文档表示,这里论文中提到在情感分类任务中,GRU往往比RNN效果要好。模型架构如下图所示:

在这里插入图片描述
再上图中,词向量是从语料库中使用Word2vec模型训练出来的,保存在词嵌入矩阵中。然后使用CNN/LSTM模型学习句子表示,这里会将变长的句子表示成相同维度的向量,以消除句子长度不同所带来的不便。也就是说之后的GRU模型的输入是长度相同的句子向量。
卷积模型如下图所示,filter的宽度分别取1,2,3来编码unigrams,bigrams和trigrams的语义信息。最后使用一个Average层捕获全局信息并转化为固定长度的输出向量。
在这里插入图片描述
接下来进行文本层面建模,使用GRU模型,输入是变长的句子向量,输出固定长度的文本向量,这里会对最后每个单元的输出向量进行取平均操作,虽然会忽略句子顺序的信息,但是相对来说较为简单方便,如下图所示,其中GNN代表GRU的一个基础计算单元:
在这里插入图片描述

2.2 HAN模型

HAN 模型的主要思想和上面的差不多,也是分层构建只不过加上了两个Attention层,用于分别对句子和文档中的单词、句子的重要性进行建模。其主要思想是,首先考虑文档的分层结构:单词构成句子,句子构成文档,所以建模时也分这两部分进行。其次,不同的单词和句子具有不同的信息量,不能单纯的统一对待所以引入Attention机制。而且引入Attention机制除了提高模型的精确度之外还可以进行单词、句子重要性的分析和可视化,让我们对文本分类的内部有一定了解。模型主要可以分为下面四个部分,如下图所示:

在这里插入图片描述
整个网络结构包括四个部分:

1)词序列编码器

2)基于词级的注意力层

3)句子编码器

4)基于句子级的注意力层

整个网络结构由双向GRU网络和注意力机制组合而成,具体的网络结构公式如下:

  • 词序列编码器
    给定一个句子中的单词 w i t w_{it} wit ,其中 i 表示第 i 个句子,t 表示第 t 个词。通过一个词嵌入矩阵 W e W_e We 将单词转换成向量表示,具体如下所示:
    在这里插入图片描述

  • 词级的注意力层
    在这里插入图片描述
    上面式子中, u i t u_{it} uit h i t h_{it} hit 的隐层表示, a i t a_{it} ait 是经 softmax 函数处理后的归一化权重系数, u w u_w uw 是一个随机初始化的向量,之后会作为模型的参数一起被训练, s i s_i si 就是我们得到的第 i 个句子的向量表示。

  • 句子编码器
    在这里插入图片描述

  • 句子级注意力层
    在这里插入图片描述
     最后得到的向量 v 就是文档的向量表示,这是文档的高层表示。接下来就可以用可以用这个向量表示作为文档的特征

在这里插入图片描述

参考链接

内容来自以下链接
https://blog.csdn.net/liuchonge/article/details/73610734
https://www.cnblogs.com/jiangxinyang/p/9709245.html
https://blog.csdn.net/qq_24305433/article/details/80427159

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值