HAN(hierarchical attention network)是2016年提出的用于文档(document)分类的模型,该模型是一个多层注意力网络。由于文档是由句子(sentence)组成,句子是由词(word)组成,HAN先将句子分词后应用一层注意力机制得到句子的向量(sentence vector),然后再应用一层注意力机制得到文档的向量(document vector),最后使用全连接层进行分类。
论文链接:Hierarchical Attention Networks for Document Classification
文章目录
- 1 文章的主要贡献
- 2 网络结构
- 3 实验结果
- 4 参考文献
1 文章的主要贡献
提出了一个用于文档分类的多层注意力网络HAN(hierarchical attention network)。并通过将文档中的句子以及句子中的词的注意力分布进行可视化,证明了HAN可以很好的关注文档中对于分类重要的句子以及句子中重要的词。
2 网络结构
HAN的网络结构为:
可以看到HAN主要包含了三个部分,第一部分为word encoder和word attention,由组成句子的词通过编码以及注意力机制得到句向量;第二部分为sentence encoder和sentence attention,由组成文档的句子的向量通过编码以及注意力机制得到了文档向量;第三部分是一个用来分类的全连接层,全连接层中神经元的个数为分类的类别数。
下面将具体分析每一部分的公式:
论文先对文档进行分句,然后对句子使用Stanford的CoreNLP进行分词。word encoder和word attention
Embedding层
对于一个分句的词,输入到Embedding层转化为词向量,Embedding层参数使用的是word2vec在训练集和验证集上进行非监督训练后得到的We矩阵进行初始化。Embedding的维度为200。
Word Encoder
然后使用双向GRU(bidirectional GRU)来提取输入词的特征,具体公式为:
然后将两个方向的隐层状态进行串联(concatenate)得到这一时刻的隐层状态:
论文使用的Bi-GRU的维度为50。因此串联后得到的某一时刻的隐层状态的维度为100维。
Word Attention
这里使用的是一种全局注意力机制,先将每一时刻(即每一个词)的隐层状态hit进行一次线性变换后输入到tanh中得到uit,然后将uit的转置与词级别(word level)的的上下文向量uw(uw是先随机初始化然后在训练中学习更新)进行内积,再输入到softmax函数中就得到了每一个词的注意力权重ait,每个词的注意力权重ait组合就是这个句子中词的注意力分布at,at的维度与词的个数一致。最后将每个词的隐层状态与对应的注意力权重求权求和就得到了句子向量si,可见句子向量si的维度也为100。
下面的由句子向量得到文档向量的过程与上述步骤一致。sentence encoder和sentence attention
Sentence Encoder
Sentence Attention
最后的v为文档向量(document vector),维度也为100
全连接层
全连接层的神经元个数为分类的类别数,最后使用softmax函数得到各类别的概率分布
实验中使用随机梯度下降法SGD进行训练。
3 实验结果
注意力分布可视化的结果:
上面一行为情绪分类任务,下面一行为主题分类任务
4 参考文献
Hierarchical Attention Networks for Document Classification