当前位置: 代码迷 >> 综合 >> DatawhaleChina - Task 9 : Attention原理
  详细解决方案

DatawhaleChina - Task 9 : Attention原理

热度:61   发布时间:2023-12-08 17:17:07.0

前言

基本的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文本分类(机器如何读懂人心)

  相关解决方案