深度理解机器学习19-自然语言处理前沿
·评估长句中的梯度消失。
·将注意力机制模型描述为最先进的自然语言处理领域。
·评估一个特定的注意力机制架构。
·使用注意力机制开发神经机器翻译模型。
·使用注意力机制开发文本摘要模型。
注意力机制
神经机器翻译任务中,一个句子被一个单词一个单词地传递到编码器中,产生一个单独的思维向量,它将整个句子的意思嵌入到一个单独的表示中。然后解码器使用这个向量来初始化隐藏状态,并逐词产生翻译。在简单的编码器-解码器机制中,只有一个向量(thought vector)包含整个句子的表示。句子越长,单个思维向量就越难保持长期依赖性。LSTM装置的使用只是在一定程度上减少了问题。近来发展了一个新概念来进一步缓解梯度消失问题,这个概念被称为注意力机制。
简而言之,深度学习中的Attention可以广义地解释为重要性权重的向量:为了预测或推断一个目标元素(例如图像中的像素或句子中的单词),我们使用Attention向量来估计目标元素与其他元素相关联的程度,并将这些元素的值乘以Attention向量进行加权后得到的总和作为目标元素的近似值。
Attention机制诞生于神经机器翻译领域。在Attention出现之前,seq2seq模型是该领域广泛使用的模型。seq2seq模型诞生于语言建模领域(Sutskever, et al. 2014)。 广义上讲,它旨在将输入序列(源)转换为新的序列(目标),并且两个序列都可以具有任意长度。例如,在文本或音频中的多种语言之间进行机器翻译、生成问答对话框,甚至将句子解析为语法树等,都属于这种转换任务。
试图翻译前面的句子时,传统的编码器-解码器的功能如下:1)逐字把句子传递给编码器。2)编码器产生一个单独的思维向量,代表整个句子编码。对于一个长句子(如前一个句子),即使使用LSTM,编码器也很难嵌入所有依赖项。因此,句子的前一部分没有句子的后一部分编码得那么强,这意味着句子的后一部分最终对编码有着决定性的影响。3)解码器使用思维向量来初始化隐藏状态向量以生成输出翻译。
对于翻译编码器-解码器模型,在生成逐词输出的同时,在给定的时间点,并非输入句子中的所有单词对于输出单词的确定都是重要的。注意力机制实现了一种方案,它正好做到了这一点:在确定输出时,用每个点上的所有输入单词来衡量输入句子的不同部分。一个训练有素的具有注意力机制的网络将学会对句子的不同部分应用适当的权重。这种模式允许输入句子的整个部分在确定输出的每一点上始终可用。因此,解码器可以访问特定于确定输出句子中每个单词的“思维”向量,而不只是访问一个思维向量。这种注意力机制的能力与传统的基于LSTM/GRU/RNN的编码器–解码器形成了鲜明的对比。
注意力机制模型
与基本的编码器-解码器机制相比,如下所示:
·解码器的初始状态由最后一个编码器单元的编码器输出状态初始化。最初的NULL单词用于开始翻译,第一个单词产生为“Er”。这与以前的编码器-解码器模型相同。
·对于第二个字,除了来自前一个字的输入和前一个解码器时间步长的隐藏状态之外,另一个向量作为输入被馈送到单元。这个向量通常被认为是“上下文向量”,是所有编码器隐藏状态的函数。在图8-3中,它是所有时间步长编码器隐藏状态的加权总和。
·在训练阶段,由于每个解码器时间步长的输出是已知的,我们可以学习网络中的所有参数。除了一般的参数之外,对应于正使用的RNN风格,还可以学习注意力功能特定的参数。如果注意函数只是隐藏状态编码器向量的简单求和,则可以学习每个编码器时间步的隐藏状态权重。
态编码器向量的简单求和,则可以学习每个编码器时间步的隐藏状态权重。
·在推断时,在每一个时间步长,解码器单元可以将最后一个时间步长的预测字、前一个解码器单元的隐藏状态和上下文向量作为输入。