【精度】自然言语处理基础之attention

图灵汇官网

在上一篇文章中,终极君介绍了用于神经机器翻译的经典模型——seq2seq模型。接下来,我们将继续探讨在seq2seq模型中引入的注意力机制(Attention)。这一改进极大地弥补了原模型的不足之处。

注意力机制在自然语言处理领域具有重要意义,已在多种应用场景中证明其有效性。

让我们先回顾一下上一篇文章中的seq2seq模型的Encoder-Decoder架构:

在翻译过程中,目标序列的每一个单词都与一个语义向量C相关联,这导致了一些问题。而在注意力模型中,连接编码器和解码器的部分不再是单一的语义向量C,而是根据解码器生成的序列,动态地关注编码器的不同部分(如C1、C2、C3)。

接下来,我们将通过2017年斯坦福大学自然语言处理公开课的相关章节来详细解释注意力机制。

不得不提的是,Chris Manning教授的讲解非常透彻。有兴趣的同学可以点击链接观看完整视频。

现在直接进入重点内容:

我们的例子是将英语句子“I am a student”翻译成法语。经过编码解码后,已经翻译出了第一个词“Je”。

接下来,我们需要生成t时刻的隐层状态。注意力机制的核心在于关注解码器t-1时刻的隐层状态,并对其在编码器中的隐层状态进行评分(打分函数将在后续内容中介绍),通常是对编码器最底层的隐层状态进行评分。

可以看到,在编码器中,“I am a student”对应的最底层隐层状态的分数分别为:3,5,1,1。

然后,将这些分数通过softmax函数进行归一化,得到每个隐层状态的概率分布:0.3,0.5,0.1,0.1。

将这些概率分布进行加权求和,得到上下文向量Ct(Context vector)。

接下来,将上下文向量Ct输入到解码器中,与其他向量一起计算出t时刻的隐层状态ht。

最终得到t时刻翻译的单词“suis”。

注意力机制的具体评分函数有多种方法,其中最基本的评分方法是计算两个向量的点积。

通过以上步骤,同学们应该对注意力机制的基本原理有了清晰的认识。下节课,我们将在此基础上进一步探讨注意力机制的应用。

希望这些内容对你有所帮助。

本文来源: 图灵汇 文章作者: 梁有崴