前言
基本的Attention原理。
HAN的原理(Hierarchical Attention Networks)。
利用Attention模型进行文本分类。
Attention原理
其实直接讲attention原理你应该是听不懂的,神经网络都是发展而来的,都是基于某种问题,而提出来某种方法来解决这类问题的,attention原理也是一样的,它也是因为某种原因提出来来解决这类问题的,我们来看看attention原理解决了那种问题。
Encoder-Decoder模型,seq2seq模型
上图其实从另一种角度思考问题就是一个N - M的神经网络,其中有两个关键词分别意思是:
- Encoder:神经网络层,对输入数据进行向量运算,一般均为RNN或RNN的变体构成。
- Decoder:同样也是神经网络层,对数据进行解析,所谓的解析也是向量运算,得到神经网络输出,一般为RNN或RNN的变体构成。
- 语义编码C:可以理解为就是一个神经元,保存Encoder阶段的数据,其实也可以不用这个C,放在这个位置其实就是将Encoder阶段与Decoder阶段解耦,它表示的含义非常有限。
这样看非常的抽象,但其实都是神经网络,看下机器翻译任务中网络动图来具体了解一下:
- encode阶段,第一个节点输入一个词,之后的节点输入的是下一个词与前一个节点的hidden state,最终encoder会输出一个context,这个context又作为decoder的输入。
- context每经过一个decoder的节点就输出一个翻译后的词,并把decoder的hidden state作为下一层的输入,每一层都有一个输出。
由于这种Encoder-Decoder结构不限制输入和输出的序列长度,因此应用的范围非常广泛,比如:
- 机器翻译。Encoder-Decoder的最经典应用,事实上这一结构就是在机器翻译领域最先提出的
- 文本摘要。输入是一段文本序列,输出是这段文本序列的摘要序列。
- 阅读理解。将输入的文章和问题分别编码,再对其进行解码得到问题的答案。
- 语音识别。输入是语音信号序列,输出是文字序列。
该模型对于短文本的翻译来说效果很好,但是其也存在一定的缺点,如果文本稍长一些,就很容易丢失文本的一些信息,为了解决这个问题,有人提出了Attention机制。
Attention机制
这是一个机器翻译的网络,我们可以看到,整个框架还是seq2seq框架,只不过在decoder阶段,输入层都会直接影响输出层,并且是有选择的影响,其实意思就是“知识”影响“Knowledge”,不影响“is”、“power”,严谨一点就是输入层有选择性的对某些输出层影响较大,对其他层影响特别小,甚至是没有影响,这就是attention机制的通俗讲解,也叫注意力机制,Attention与传统的Seq2Seq模型主要有以下两点不同:
- Attention机制中encoder阶段会提供了更多的数据给到decoder,encoder会把所有的节点的hidden state提供给decoder,而Seq2Seq模型只是提供encoder最后一个节点的hidden state。
- Attention机制中decoder阶段并不是直接把所有encoder提供的hidden state作为输入,而是采取一种选择机制,把最符合当前位置的hidden state选出来,具体的步骤如下:
(1)确定哪一个hidden state与当前节点关系最为密切
(2)计算每一个hidden state的分数值(具体怎么计算我们下文讲解)
(3)对每个分数值做一个softmax的计算,这能让相关性高的hidden state的分数值更大,相关性低的hidden state的分数值更低。
我们来通过详细的图和公式来窥探其中的奥秘。
HAN的原理
Attention文本分类
参考博客
完全图解RNN、RNN变体、Seq2Seq、Attention机制
Attention机制详解
Attention机制详解(一)——Seq2Seq中的Attention
深度应用Keras实现Self-Attention文本分类(机器如何读懂人心)