selfattention记录

一、Hierarchical Attention用于文本分类

分层构建加上了两个Attention层,用于分别对句子和文档中的单词、句子的重要性进行建模。其主要思想是,首先考虑文档的分层结构:单词构成句子,句子构成文档,所以建模时也分这两部分进行。其次,不同的单词和句子具有不同的信息量,不能单纯的统一对待所以引入Attention机制。而且引入Attention机制除了提高模型的精确度之外还可以进行单词、句子重要性的分析和可视化,让我们对文本分类的内部有一定了解。

在分类任务中,如果我们给模型一篇文章,我们想问模型的问题是:1. 在这篇文章中,哪些句子更重要,能够决定它的分类? 2. 在这篇文章的某个句子中,哪些词语最重要,能够影响句子在文章里的重要性?

selfattention记录_第1张图片
selfattention记录_第2张图片
这里的 α α 就是每一个词或句子的权重(重要程度), h h 是lstm的输出,加权后即可加大对分类结果重要的词的向量输出, W,bμ W , b , μ 是随机初始化的Variable变量(需要训练)
selfattention记录_第3张图片

二、self-ttention记录

1、优点

self attention:相比 recurrent 不存在梯度消失问题,这点显然。对比 CNN 更加适合文本,因为能够看到更远距离的信息,这点展开说明——因为文本语义的抽象不同于图像语义的抽象,后者看下一层的局部就行,前者经常需要看很远的地方。比如现在 “苹果” 这个词我要对它做一个抽象,按 “苹果公司” 抽象还是按 “水果” 抽象呢?这个选择可能依赖于几十个 step 之外的词。诚然,CNN 叠高了之后可以看到很远的地方,但是 CNN 本来需要等到很高层的时候才能完成的抽象,self attention 在很底层的时候就可以做到,这无疑是非常巨大的优势。

你可能感兴趣的:(NLP)