NLP_task9: Attention

1  Attention基本原理

      在“Neural Machine Translation By Jointly Learning To Align And Translate”中,为解决RNN-Encoder-Decoder的基础上target端输入固定长度的问题,提出了Align方式,这也是Attention的开始。这篇paper中,它将输入句子编码成一系列向量,并在解码翻译时自适应地选择这些向量的子集。 这使得神经翻译模型不必将源句的所有信息(无论其长度)压缩成固定长度的矢量。

     其结构流程如图:

     这篇paper是在RNN-Encoder-Decoder基础上,对source端输入到target端的sequence做了处理。得到target端的token与source端的token能够多对一或者一对多的方式。例如:source端句子1:我出生于中国,并热爱着这片土地。target端句子2:I was born in China and love this land. 对齐的方式是希望,source端的字词与target端对应的字词之间的联系大于其他,即source端的'我'与target端的'I'之间的权重大于与其他词之间的权重。

    关于attention在不同领域也有一些说法上的不同:在计算机视觉中,attention机制,是基于人类视觉,人们在观察某事物时,总会特别关注于一两个点,或者具有显著特点的地方,因此,引入计算机学习中,希望model学会关注图片中特别的地方,并称之为注意力机制。在翻译学习中,希望source端和target端句子内对应字词之间可以相互对应或者之间的联系可以大于其他,即source端与target端相互对应的字词之间的权重更大。在文本分类问题中,希望输入的文本得到训练后可以更多注意哪些能够代表类别的句子或者词语,给这些词语更大的权重,以提高分类的效果,这一点有些与情感分析类似,但情感分析会更需要掌握整个句子或者文本的情感走向,以得到整体的情感倾向,而不仅仅是个别字词或者句子。

    关于attention,下面将已有的几种类型提出(下面部分来自于某知乎总结,之前整理的,忘记了出自于哪里。若有冒犯,先在这里致歉):

1)全局注意力机制

      全局注意力机制,是指attention的计算权重与source端和target端所有的隐藏向量相关。其结构及其部分公式如图:

2)局部注意力机制

     局部注意力机制,是指attention的计算权重与source端和target端部分的隐藏向量相关。其结构及其部分公式如图:

        全局注意力机制和局部注意力机制在结构图上比较相似,不同在于计算的公式,局部注意力机制计算出将哪些隐藏单元纳入计算的attention权重中去,较之全局注意力机制,多了一层计算。

3)自注意力机制(self-attention)

     Self Attention与传统Attention机制的不同:传统的Attention有source端和target端的隐变量(hidden state)计算Attention,得到的结果是源端的每个词与目标端每个词之间的依赖关系。Self Attention分别在source端和target端进行,仅与source input或者target inout自身相关,捕捉source端或target端自身的词与词之间的依赖关系;然后把source端得到的self attention加入到target端得到的Attention中,捕捉source端和target端词与词之间的依赖关系。综上所述,self attention可以不仅得到源端与目标端词与词之间的依赖关系,同时还可以有效获取源端或目标端自身词与词之间的依赖关系。

    self-attention是在Goggle的'Attention Is All You Need '中提出,其结构如图:

对于“Attention is All You Need”这篇文章的理解可见博客:self-attention----Attention is all you need论文解读

这篇文章的demo解读可见:一步步解析Attention is All You Need!

4)层级注意力机制

     层级注意力机制是指模型计算多层的注意力,其结构如图:

       在该架构中,自注意力机制使用了两次:在词层面与句子层面。该方法因为两个原因而非常重要,首先是它匹配文档的自然层级结构(词——句子——文档)。其次在计算文档编码的过程中,它允许模型首先确定哪些单词在句子中是非常重要的,然后确定哪个句子在文档中是非常重要的。

更多关于attention: 请看知乎

2 HAN的原理

    HAN是在“Hierarchical Attention Networks for Document Classification”此文中提出,paper中的模型架构如图:

     如图所示,该篇paper的结构:word vector--->embedding--->BiGRU--->word attention--->BiGRU--->sentence attention--->Dense layer

     文章中提出的HAN(Hierarchical Attention Networks)是指先对word Encoder进行计算attention权重,将得到的句子内重要的字词构成sentence,作为输入,并计算attention,进而得到文本内容中重要的句子。其思想本质是,对于一篇文本而言,其中的一些句子可能是十分重要的,而对于一些句子而言某些词语也是十分关键的,因此,那么对应的是,句子中重要的字词构成的句子,文本中重要的句子构成的文本,就在一定程度上能够表达文本整体的信息了。

关于HAN:请看知乎文档分类之HAN

3  利用Attention模型进行文本分类

    此处用“Hierarchical Attention Networks for Document Classification”中的attention处理IMDB数据集,其代码见githup:HANDemo

论文:Hierarchical Attention Networks for Document Classification

           Attention Is All You Need

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值