Hierarchical Attention Networks for Document Classification学习笔记

Hierarchical Attention Networks for Document Classification学习笔记

这篇博客是在阅读了 Hierarchical Attention Networks for Document Classification 这篇论文之后所做的总结体会,若有任何不准确的地方,烦请大家斧正。
[TOC]

0. 概述

这篇论文提出了一个用于文本分类的层次化Attention网络。这个模型有两个鲜明的特点:
1. 它有类似于文本层次结构的层次结构。
2. 它有两个层次化的attention机制,分别应用于单词水平和句子水平,使它能够在建立文本表示的时候对不同重要性的内容倾注不同注意力。
这篇论文的主要贡献就在于这个新的神经结构,the Hierarchical Attention Network(HAN)。这个结构是迎合有关文本结构的两种主要观点:
1. 因为文本有分层结构(句子中的单词,文本中的句子),同样地,通过先建立句子的表示,然后再把它们聚合成文本的表示。
2. 文本中不同的单词和句子信息量不同。另外,单词和句子的重要性是高度依赖上下文的,同一个单词或者句子在不同的上下文里可能重要性就不同。因此,该模型包含了两个层次的attention机制——单词和句子。
与前人研究的关键不同在于此系统使用上下文来发现标志序列何时相关,而不是简单的过滤标志(序列),脱离了上下文。

1. HAN网络

HAN的整体结构如下图展示,包含四个部分:单词序列编码器,单词水平attention层,句子编码器和句子水平attention层。
该图片由原论文截取

1.1 基于GRU的序列编码器

Gated Recurrent Unit(GRU)使用门机制来追踪序列特征,而不是使用分离的记忆单元。有两种门:重置门rt和更新门zt。它们一起控制信息是怎样更新到状态的。t时刻GRU是这样计算新的状态的:
该图片由原论文截取
这是用前一个状态ht-1和当前用新的序列信息计算的新状态ht~之间计算的线性插值。zt决定保持多少过去的信息,增加多少新的信息。zt是这样更新的:
该图片由原论文截取
xt是t时刻的序列向量。备选项ht~是用一种类似于循环神经网络(RNN)的方法计算的:
该图片由原论文截取
这里rt是重置门,它控制着过去的状态对备选状态有多少影响。如果rt是0,那么它就忘记了之前的状态。rt是这样更新的:
该图片由原论文截取

1.2 层次化attention结构

此次研究中关注的是文本分类。假设一篇文本含有L个句子,每个句子包含Ti的单词。wit(t∈[1, T])表示第i个句子的单词。该模型把原文本转化为向量表示,在这个上面建立一个分类器来实现文本分类。

1.2.1 单词编码器

一个有wit的句子,先用向量矩阵We把单词转换为向量,xij = We.wij。使用一个双向的GRU通过总结两个方向的单词信息来获得的单词的含义,因此就在含义中包含了上下文的信息。双向GRU包含从wi1到wiT读句子si的前向GRU f→ 和从wiT到wi1读句子的反向GRU f← :
该图片由原论文截取
通过连接前向隐藏层 hit→ 和反向隐藏层 hit← 得到了所给单词wit的含义表示,例如,hit = [hit→,hit←] 这总结了以wit为中心的整个句子的信息。
需要注意的是这里用的是词向量。也可以用GRU从字符角度创建词向量得到更完整的模型,此处简化。

1.2.2 单词 Attention

并不是所有单词对句子意思的表示影响相同。因此,引进attention机制来提取对句子意思重要的单词,把这些有信息的单词的表示聚集起来形成句子向量。
该图片由原论文截取
先通过一个一层的MLP得到单词解释hit,从而将hit作为一个隐藏表示来得到uit,然后我们用一个单词水平的上下文向量uw衡量单词的重要性作为uit的简化,之后通过一个softmax函数得到了一个正则化的重要性权重αit。接下来,计算句子向量si,它是基于权重的单词解释的加权求和。上下文向量uw可以看作是一个固定查询“有信息的单词是什么”的高层次的表示。uw是随机初始化的,并在训练过程中连带地训练。

1.2.3 句子编码器

给出句子向量si,用类似的方法可以得到文本向量。用一个双向GRU来编码这些句子:
该图片由原论文截取
连接hi→和hi←来得到句子i的含义,例如,hi = [hi→, hi←]。hi总结了句子i周围邻近的句子,但是还是关注句子i。

1.2.4 句子 Attention

为了找到对正确分类文本有作用的句子,再次使用attention机制并引进句子水平的上下文us,用这个向量来衡量句子的重要性。
该图片由原论文截取
v是文本向量,它总结了文本中句子的所有信息。类似地,句子水平的上下文向量可以随机初始化并在训练过程中顺带学习。

1.3 文本分类

文本向量v是一个文本的高级表示,并且可以用作文本分类的特征:
该图片由原论文截取
用分类正确的概率的负对数作为训练损失:
该图片由原论文截取

2. 实验

该论文实验中在6个较大的文本分类数据集中做了测试。公共有两种任务:情感分析和主题分类。训练测试验证比为——8:1:1 。
将实验结果与基础的方法做比较,包括传统的方法,比如线性方法,SVMs等等。
关于实验过程和结果不再赘述,之后可能自己实现的时候会增加讲解,有兴趣的朋友可以查看原论文。

3. 结论

这篇论文提出了用于文本分类的HAN结构。
模型聚集重要的单词形成句子向量,再把重要的句子向量聚集成文本向量,从而建立了文本向量。实验结果显示模型比前人的方法要更好。

猜你喜欢

转载自blog.csdn.net/Doron15/article/details/81771623