Task9

本文介绍了Attention原理,通过计算输入序列与输出向量匹配度,经编码、匹配、归一化等步骤将重要信息传给decode。还提到tensorflow的两种Attention算法。此外,阐述了层级“注意力”网络结构,包括词和句“注意”部分,最后用softmax分类器进行文档分类。

一. Attention原理

Attention的原理就是计算当前输入序列与输出向量的匹配程度,匹配度高也就是注意力集中点其相对的得分越高,其中Attention计算得到的匹配度权重,只限于当前序列对,不是像网络模型权重这样的整体权重。
算法过程:
1)encode对输入序列编码得到最后一个时间步的状态c,和每个时间步的输出h,其中c又作为decode的初始状态z0。
2)对于每个时间步的输出h与z0做匹配也就是match操作,得到每个时间步的匹配向量α01,如下图。
在这里插入图片描述
3)对所有时间步的输出h与z0的匹配度α0,使用softmax做归一化处理,得到各个时间步对于z0的匹配分数。
4)求各个时间步的输出h与匹配分数的加权求和得到c0,作为decode的下一个时间步的输入,如下图所示。
在这里插入图片描述
5)计算各个时间步的输出h与z1的匹配度得到c1作为decode下一个时间步的输入,如此一步一步重复下去,如下图。
在这里插入图片描述
这样就可以把每个时间步重要的信息传给decode中,以上就是Attention机制的处理过程。其中match操作一般是求两个向量的相似度,通常有如下方法:
1)余弦相似度
2)一个简单的 神经网络,输入为hh和ww,输出为α
3)或者矩阵变换α=hTWzα=hTWz (Multiplicative attention,Luong et al., 2015)
在tensorflow1.0版本以后的api seq2seq库中,包含了两种Attention算法,他们的区别就是match操作的不同,因此也有人称他们为加法Attention和乘法Attention,具体内容下:
1)BahdanauAttention:论文https://arxiv.org/abs/1409.0473中的实现:
在这里插入图片描述
2)LuongAttention:论文https://arxiv.org/abs/1508.04025中的实现 :

图5

图中h是上文所说的每个时间步的输出向量,d是decode中每个时间步的状态,也就是上文中的z,c是match后计算的权值加和后的向量用于decode中每个时间步的输入,a就是match操作中经过softmax后的匹配权重,v是一个向量,相当于w一样的权重需要去学习。有上面两个公式可以看出,BahdanauAttention和LuongAttention的区别就是在match过程中的计算方式不同,一个是将decode的状态与encode的输出求和,一个是求乘,所以才有了加法Attention和乘法Attention的叫法。

二. 层级“注意力”网络

2.1 网络结构
层级“注意力”网络的网络结构如图1所示,网络可以被看作为两部分,第一部分为词“注意”部分,另一部分为句“注意”部分。整个网络通过将一个句子分割为几部分(例如可以用“,”讲一句话分为几个小句子),对于每部分,都使用双向RNN结合“注意力”机制将小句子映射为一个向量,然后对于映射得到的一组序列向量,我们再通过一层双向RNN结合“注意力”机制实现对文本的分类。
在这里插入图片描述
2.2 层级“注意力”
词层面的“注意力”机制本文针对的是任务是文档分类任务,即认为每个要分类的文档都可以分为多个句子。因此层级“注意力”模型的第一部分是来处理每一个分句。对于第一个双向RNN输入是每句话的每个单词,其计算公式如下所示:
在这里插入图片描述但是对于一句话中的单词,并不是每一个单词对分类任务都是有用的,比如在做文本的情绪分类时,可能我们就会比较关注“很好”、“伤感”这些词。为了能使循环神经网络也能自动将“注意力”放在这些词汇上,作者设计了基于单词的注意力模型,其计算公式如下:
在这里插入图片描述首先,通过一个线性层对双向RNN的输出进行变换,然后通过softmax公式计算出每个单词的重要性,最后通过对双向RNN的输出进行加权平均得到每个句子的表示。句层面的“注意力”机制句层面的“注意力”模型和词层面的“注意力”模型有异曲同工之妙。其计算公式如下所示:
2.3、文档分类
最后就是使用最常用的softmax分类器对整个文本进行分类了
在这里插入图片描述损失函数为:
在这里插入图片描述
代码参考:
https://github.com/magical2world/tf-hierarchical-rnn/blob/master/attention.py

参考博客:
https://www.cnblogs.com/hiyoung/p/9860561.html
https://blog.youkuaiyun.com/qq_24305433/article/details/80427159

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值