深入浅出,详细理解Attention Model的基本原理!

近年来,Attention Model在自然语言处理领域大火,在多项NLP任务中取得了显著的成绩,成为构成Transformer,BERT等多个语言模型的基石。本文将主要介绍一下Attention Model的基本原理及计算过程。

深入浅出,详细理解Attention Model的基本原理!_第1张图片

seq2seq模型入门

在NLP领域,Bahdanau首先将Attention机制引入神经网络机器翻译(NMT)中,而NMT任务是一个典型的sequence to sequence(简称seq2seq)任务。所以在介绍Attention之前,我们先来简单回顾一下经典seq2seq模型以及其所面临的瓶颈。

seq2seq的任务目标是:输入一个序列,输出另一个序列。这种任务形式普遍存在于翻译、对话、文本摘要生成等多种NLP任务中。seq2seq模型基本可以归纳为经典的Encoder-Decoder结构。该结构的经典表示如下图所示:

深入浅出,详细理解Attention Model的基本原理!_第2张图片

Encoder-Decoder网络结构

该结构由两个RNN组成。其中,Encoder部分RNN只在序列结束时输出一个语义向量C,该向量可以看成拥有输入序列的全部上下文语义信息。将C复制N份,与输出序列上一个时刻的预测值yt-1一起,作为Decoder部分每个RNN序列的输入。Decoder部分在t时刻的隐藏层状态ht由ht-1, yt-1, c共同决定,即以下公式:

采取该网络结构,相当于:将在给定yt-1, yt-2,……,y1和输入语义向量c的情况下,求yt时刻输出概率最大值的问题,等价于给定Decoder当前隐状态ht,上一个时刻预测输出yt-1,输入语义向量c的情况下,求yt时刻输出概率最大值。即以下公式:

取对数似然条件概率,即得到整个模型的优化目标:

深入浅出,详细理解Attention Model的基本原理!_第3张图片

Attention机制介绍

然而,上述模型有一个很大的问题:对于输出序列而言,每一个时刻传入的输入语义向量均为同样的值。而这很显然跟我们的生活常识不符,例如:当我们翻译一句话中某个单词时,跟它相邻词的参考价值,往往要大于远离它的词。所以为了解决这个问题,NMT框架中引入了Attention机制。通过参数,来控制每一个词在语义向量中的权重,从而提升最终效果。其网络结构如下:

深入浅出,详细理解Attention Model的基本原理!_第4张图片

Attention Model

其中下半部分为Encoder结构,这里采用双向RNN构成,前向RNN顺序输入单词,后向RNN反序输入单词。将同一时刻的两个RNN单元的隐状态做拼接形成最终的隐状态输出ht,这样ht既包含当前单词前一个时刻的信息,也包含后一个时刻的信息。上半部分为Decoder结构,为一个单向的RNN。中间部分就是Attention,采用如下公式计算:

深入浅出,详细理解Attention Model的基本原理!_第5张图片

其中,si-1为Decoder上一个时刻的隐状态,hj为j时刻Encoder隐藏层输出状态。使用一个网络结构a训练,得到的分值eij表示j时刻输入与i时刻输出之间的匹配程度。之后用一个softmax函数归一化,得到的标准概率表示alpha ij即为hj在翻译yi中的重要性表示。最后以对应的alpha作为权值,加权计算每一个时刻的输入语义向量ci,即体现了每一个输入单词,在翻译不同输出单词中的重要性。

以上就是关于Attention Model的基本原理的介绍。看了之后是不是感觉也没有很复杂呢?

你可能感兴趣的:(深入浅出,详细理解Attention Model的基本原理!)