多层注意力模型:Hierarchical Attention Networks for Document Classification

1、简介

文本分类问题一直是自然语言处理(NLP)中一个广受人们关注的问题。可能好多刚接触深度学习做NLP的项目就是使用循环神经网络(RNN)对IMDB影评进行分类。但使用循环神经网络时一般会遇到一个问题,那就是当所要处理的序列较长时,就会导致网络容易忘记之前的东西,这在机器翻译、对话系统中会经常出现,为解决这一问题,大佬们就根据心理学原理提出了“注意力”机制,使得网络工作过程中可以像人一样将注意力放在不同部位。那么对于文本分类能否使用“注意力”机制呢?答案是肯定的,这篇论文就针对文本分类问题提出了层级注意力模型结合双向RNN实现对文本的分类,其效果明显好于其他方法。

2、层级“注意力”网络

2.1 网络结构

层级“注意力”网络的网络结构如图1所示,网络可以被看作为两部分,第一部分为词“注意”部分,另一部分为句“注意”部分。整个网络通过将一个句子分割为几部分(例如可以用“,”讲一句话分为几个小句子),对于每部分,都使用双向RNN结合“注意力”机制将小句子映射为一个向量,然后对于映射得到的一组序列向量,我们再通过一层双向RNN结合“注意力”机制实现对文本的分类。


图1

2.2  层级“注意力”

词层面的“注意力”机制

本文针对的是任务是文档分类任务,即认为每个要分类的文档都可以分为多个句子。因此层级“注意力”模型的第一部分是来处理每一个分句。对于第一个双向RNN输入是每句话的每个单词,其计算公式如下所示:


但是对于一句话中的单词,并不是每一个单词对分类任务都是有用的,比如在做文本的情绪分类时,可能我们就会比较关注“很好”、“伤感”这些词。为了能使循环神经网络也能自动将“注意力”放在这些词汇上,作者设计了基于单词的注意力模型,其计算公式如下:


首先,通过一个线性层对双向RNN的输出进行变换,然后通过softmax公式计算出每个单词的重要性,最后通过对双向RNN的输出进行加权平均得到每个句子的表示。

句层面的“注意力”机制

句层面的“注意力”模型和词层面的“注意力”模型有异曲同工之妙。其计算公式如下所示:



2.3、文档分类

最后就是使用最常用的softmax分类器对整个文本进行分类了


损失函数为:


3、实验及结果分析

3.1 数据集分析

作者分别对Yelp reviews、IMDB reviews、Yahoo answers、Amazon reviews进行实验。

表1


作者对这些数据集进行了分析,其中每个文档所包含的单词、句子的分布情况如表1所述。

3.2 对比实验结果

作者分别将该方法与其他方法进行了对比,其实验结果如表2所示,从表中可以看出,本文提出的HN-ATT方法相对于其他方法有着不错的提升。

表2


3.3 网络到底把“注意力”放在哪了?

作者为了探索网络到底学到了什么,分别分析了模型对于单词“good”及“bad”的分配情况。图2是对于单词“good”的权重分布情况,其中(a)是总体的分布情况,(b)-(f)分别是在由差评逐渐到好评的过度的过程中“good”的权重的变化情况。从图中可以看出,随着好评程度的不断上升,“good”所获得的权重越大,这说明,网络能够自动的将“注意力”放在和好评更相关的词汇上。


图2

作者同样对单词“bad”做了测试,测试结果如图3所示。图3显示出了和图2一样的实验结果,即网络会在差评的时候更加将“注意力”放在“bad”词汇上。


图3

3.4 注意力的可视化

为了进一步说明层级“注意力”模型的有效性,作者对网络所分配的注意力结果进行了可视化,如图4所示,其中蓝色的程度越深,说明该单词所获得的权重越大,粉色程度越深,说明该句子所获得的权重越大。从图中分析可以看出,像“delicious”、“terrible”、“amazing”这样的形容词会获得较大的权重,而其对应的句子也会获得较大的权重。因此该模型确实能够捕获到有助于对文本进行分类的词汇。


图4

4、 总结

刚看到这篇文章时简直要惊呆了,以前听说“注意力”机制一般都是应用在像机器翻译、对话系统、图片捕获这样的序对序模型中,一直认为它肯定也能用在文本分类中,看了这篇论文才知道原来早有大神想到了。其实细想一下可以发现,本文对文档进行分类的思路和人的思路很相似,我们人对文档进行分类时也是会先提炼出每句话中的重要此话,然后再提取每段中的那几句重要的话,然后是文章中的段··· 所以深度学习的发展还是要借助于人脑的研究滴☺☺☺

代码链接:https://github.com/magical2world/tf-hierarchical-rnn

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值