演讲链接:https://www.youtube.com/watch?v=nFCxTtBqF5U
PDF链接: https://simons.berkeley.edu/sites/default/files/docs/6449/christophermanning.pdf
去年,Christopher Manning教授发表了这个演讲。这是一个介绍性教程,没有太复杂的算法。 该主题分为四个部分:
- 人类语言特征
- 分布式词表征
- 双向LSTM现状
- RNN的一些应用
人类语言特征
人类语言最鲜明的特征之一是其有意义的表征。 无论一个人说什么,一个词或一个词组,它往往都有意义。 人类语言也有一个特殊的结构,使其易于学习,即使是孩子也可以快速学习。 与最先进的机器学习方法中使用的必要输入不同,人类语言更可能是离散/符号/分类表征。 因此,我们需要一种更有效、更有意义的方式来编码人类语言。
分布式词表征
词向量
就一些传统的机器学习方法而言,词被表示为向量空间中的离散向量(即one-hot编码),例如 [0 0 0 0 1 0 0 1] 可能是一个具备同样规模词汇量的大的向量。但这种方法存在一个问题,即缺乏相似性的自然概念。例如如果我们想要搜索“Dell notebook”,我们也可以接受词条“Dell laptop”,但实际上它们被表示为两个不同的离散向量 [0 0 0 1 0] 和 [0 0 1 0 0],正交性使我们无法在它们之间建立任何概念联系。
为了分享更多的统计数据并寻求类似单词/短语之间的更多相似性,密集向量被认为是现代NLP最成功的想法之一。神经网络使用密集向量来表示单词。
word2vec的详细信息
在神经网络中,用于学习密集词向量的标准概率建模基于以下公式:
这意味着该目标函数是使用中心词 c 及其语境词的softmax函数,其中o是语境词索引,u_o是对应的词向量,c是中心词索引,v_c是对应的词向量。 总体目标是尽量使该概率最大化,以便经过百万次反向传播后,具有相同周围词向量的词更容易在向量空间中具备相似的含义。
上图是学习后向量空间中的投影词向量。 因此,它不仅可以捕获相似性共现,还可以捕获一些细粒度维度含义,以便你可以在某些指定的方向上观察某些特定的语境连接。
BiLSTM现状
“基本上,如果你想做一个自然语言处理任务,不管它是什么,你都应该把数据放到一个BiLSTM网络中,通过注意力机制增强其信息流。”
以上图片是经典的RNN编码器-解码器网络。 首先,根据当前输入和前一个隐藏状态,计算每个时间步的源语句的编码器网络读入词和相应的隐藏状态。 然后解码器开始基于编码器的最后隐藏状态生成单词。 不幸的是,它不能很好地用于机器翻译,因为它无法捕捉源句子的长期依赖。
LSTM和GRU可以改善这一点,这是近年来最成功的两个RNN变体,用于解决长期依赖问题。 它们也被广泛称为“gated recurrent unit”。 门控机制控制哪些信息应该传递到下一步,以便预测出好的译文。
上图是GRU模块的数学公式。 GRU模块就像一个读/写寄存器。 它读取前一个隐藏状态的一部分,并与当前输入结合以构建候选更新(请参阅上面公式的第二行)。 然后它保留部分维度与先前隐藏状态相同,并通过候选更新更新剩余部分(请参阅上面公式的第一行)。 请注意,u_t和r_t是多变量伯努利分布,范围从0到1(以便做出选择:遗忘或更新)。
LSTM模块与GRU模块类似,但它具有更多的可训练参数。这里的思路也是基于先前隐藏状态和当前输入的候选更新值(参见上面公式中的第三个方程),它用于单元格计算(参见上述公式中的第二个方程)。当我们计算单元格时,可能会根据f_t遗忘前一个单元格状态的一部分,并且可以根据i_t添加部分候选更新。在计算单元格状态之后,我们可以基于单元和输出门计算当前隐藏状态(见上式中的第一个方程)。注意,f_t和i_t也是一个多变量伯努利分布,范围从0到1(以便做出选择:遗忘或更新)。
这里的魔法是“+”符号(参见上述GRU公式中的第一个公式和上述LSTM公式中的第二个公式)。它将整合新的候选隐藏状态和之前时间步中的部分隐藏状态,这意味着信息流可以基于前一步在多个方向上进行。通过这种方式,梯度将会更平滑地反向传播(更少的梯度消失问题),并且与传统的递归神经网络相比,该系统倾向于具有更长的短期记忆。
总之,基于门控,LSTM / GRU模块可以专注于某个特定的环境,并且遗忘对将来贡献较少的语境,因此整体而言,它可以暂时记住部分句子,以便为未来的学习做出贡献。
这是Sutskever等人 2014 [1] 提出的LSTM编码器-解码器结构,它已经在机器翻译方面有杰出的表现。 LSTM模块已被替换为网络内部单元,并具有更深的架构。其工作流程与之前相同:读入源句子,将其编码为隐藏嵌入,并由解码器生成该句子。 但是这里仍然有一个很大的限制:发送给解码器的整个记忆与编码器的最后一步相关联。 但是,这种架构可能引发两个问题:首先,这样信息流可能受到限制。 其次是对于更长的句子,编码器开始时的标记可能会在从左到右的过程中被遗忘。
为了克服这两个问题,人们提出了双向长短期记忆Bi-LSTM,它的思想是,在解码器的一个步骤中,根据语境向量提供附加控制,该语境向量处理来自源句子的所有信息(回看源句子并计算它们在每个编码器隐藏状态和当前解码器隐藏状态之间的相关程度)。通过加权,语境向量可以基于整个源句子而不仅仅是最终的编码器隐藏状态来影响当前解码器的隐藏状态,这可以增强记忆并使其在实践中非常成功。为了更好地表示源语句,在编码器中使用双向设计,在两个方向上运行LSTM。这有助于模型使用左右的语境词更好地表征源句子中的每个单词。在实践中,当你在每个方向获得每个单词的词向量时,只需将它们连接起来,总会出现一些改进(无论是最终准确率还是句法顺序)。
近年来,与传统的基于短语的机器翻译和基于句法的机器翻译相比,神经网络机器翻译(NMT)在单词记忆测试的新评估中取得了重大进展。 神经网络机器翻译有四个优点:
- 端到端培训:允许参数同时优化;
- 分布式词表征:更好地挖掘词组相似度;
- 更大的语境:可以推广到更大的语境(越大越好);
- 生成文本更流利:文本生成具有更好的句法意义。
RNN的一些应用
存在基于RNN的各种应用,如问答、阅读理解和情感分析等。最近有些人也使用卷积神经网络进行机器翻译[2]。
评论与观点
尽管基于神经的方法在最近的WMT评估中取得了重大进展,但在实践中,尤其是在实际的域内数据方面,神经机器翻译仍然不如基于统计的机器翻译有竞争力。 一方面,我希望人们能够为NMT系统开发构建更有意义的、全面的、各种类型的数据,另一方面,就自然语言处理而言,无论具体的任务是什么,语言和记忆的结构和模块化程度都需要不断增加,尤其是它的泛化能力和可解释性。
参考文献
[1] Sequence to Sequence Learning with Neural Networks, Ilya Sutskever, Oriol Vinyals, and Quoc Le, NIPS 2014
[2] Convolutional Sequence to Sequence Learning, Jonas Gehring, Michael Auli, David Grangier, Denis Yarats, and Yann N. Dauphin, arXiv preprint arXiv:1705.03122v1, 2017.