自然语言处理之Hierarchical Attention

一、简介

  • 今天,基本上所有的NLP方面的应用,如果想取得state-of-art的结果,就必须要经过attention model的加持。比如machine translation, QA(question-answer), NLI(natural language inference), etc, etc…. 但是这里有个问题:统上的attention的应用,总是要求我们的task本身同时有源和目标的概念。比如在machine translation里,我们有源语言和目标语言,在QA里我们有问题和答案,NLI里我们有sentence pairs ……而Attention常常被定义为目标和源的相关程度。
  • 但是还有很多task不同时具有源和目标的概念。比如document classification, 它只有原文,没有目标语言/文章, 再比如sentiment analysis(也可以看做是最简单的一种document classification),它也只有原文。那么这种情况下attention如何展开呢?这就需要一个变种的技术,叫intra-attention(或者self-attention), 顾名思义,就是原文自己内部的注意力机制。
  • 文本分类问题一直是自然语言处理(NLP)中一个广受人们关注的问题。可能好多刚接触深度学习做NLP的项目就是使用循环神经网络(RNN)对IMDB影评进行分类。但使用循环神经网络时一般会遇到一个问题,那就是当所要处理的序列较长时,就会导致网络容易忘记之前的东西,这在机器翻译、对话系统中会经常出现,为解决这一问题,大佬们就根据心理学原理提出了“注意力”机制,使得网络工作过程中可以像人一样将注意力放在不同部位。那么对于文本分类能否使用“注意力”机制呢?答案是肯定的,这篇论文就针对文本分类问题提出了层级注意力模型结合双向RNN实现对文本的分类,其效果明显好于其他方法。

二、网络结构

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

本文针对的是任务是文档分类任务,即认为每个要分类的文档都可以分为多个句子。因此层级“注意力”模型的第一部分是来处理每一个分句。对于第一个双向RNN输入是每句话的每个单词Wit,其计算公式如下所示:
在这里插入图片描述
但是对于一句话中的单词,并不是每一个单词对分类任务都是有用的,比如在做文本的情绪分类时,可能我们就会比较关注“很好”、“伤感”这些词。为了能使循环神经网络也能自动将“注意力”放在这些词汇上,作者设计了基于单词的注意力模型,其计算公式如下:
在这里插入图片描述
首先,通过一个线性层对双向RNN的输出进行变换,然后通过softmax公式计算出每个单词的重要性,最后通过对双向RNN的输出进行加权平均得到每个句子的表示。

句层面的“注意力”机制

句层面的“注意力”模型和词层面的“注意力”模型有异曲同工之妙。其计算公式如下所示:
在这里插入图片描述
文档分类
最后就是使用最常用的softmax分类器对整个文本进行分类了
在这里插入图片描述
损失函数为:
在这里插入图片描述

代码链接:github1,github2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值