TensorFlow与自然语言处理应用
上QQ阅读APP看书,第一时间看更新

4.1 分布式表示

4.1.1 分布式表示的直观认识

这里有两个句子:

  • 北京是中国的首都。
  • 华盛顿是美国的首都。

从这两个句子中,我们可以直观地意识到(北京,华盛顿)和(中国,美国)这两对词在某种程度上是相关的,并且相应的词在每对中彼此以相同的方式相关,即:

北京:中国——华盛顿:美国

因此,分布式表示(Distributed Representation)的目的是找到一个变换函数φ,以便将每个词转换为其相关的向量,使得以下形式的关系成立:

φ(“北京”) - φ(“中国”) ≈φ(“华盛顿”) - φ(“美国”)

换句话说,分布式表示旨在将词转换为向量,其中向量之间的相似性与词之间的语义相似性相关。

注意

有的图书上将GloVe归入Word2Vec,这么归类也可以理解,词嵌入实现的技术模型有多种,不论是Word2Vec中的两个典型模型(Skip-gram和CBOW)还是GloVe模型,都是处理词嵌入任务的技术手段,但严格意义上Word2Vec和GloVe之间还是有些区别的。

4.1.2 分布式表示解读

早期的传统独热编码表示(One-Hot Encoding Representation,如图4-1所示),仅仅将词进行符号化,不包含任何语义信息,显然不利于工作任务的有效达成。与独热编码表示技术相对应的就是分布式表示,Harris于1954年提出了分布式假说(Distributional Hypothesis),其观点是上下文中相似的词其语义也相似。这样一来,在该理论指引下,我们可以把信息分布式地存储在向量的各个维度中,这种分布式表示方法具有紧密低维、句法和语义信息易获取的特点。Firth在1957年对分布式假说做了进一步阐述和明确:词的语义由其上下文决定。

图4-1 传统的独热编码技术表示

基于分布式假说的词表示方法,根据建模不同,大体可以分为三类:基于矩阵的分布表示、基于聚类的分布表示和基于神经网络的分布表示。尽管这些不同的分布表示方法使用了不同的技术手段获取词表示,但由于这些方法均基于分布式假说,所以它们的核心思想也都由两部分组成:一是选择一种方式描述上下文;二是选择一种模型刻画某个词(“目标词”)与其上下文之间的关系。

下面给出分布式表示方法的三个分类,这里不做过多解读,感兴趣的读者可以仔细研读来斯惟博士的论文《基于神经网络的词和文档语义向量表示方法研究》(中国科学院大学自动化研究所,2016年1月)。

1. 基于矩阵的分布表示

基于矩阵的分布表示主要是构建“词-上下文”矩阵,通过某种技术从该矩阵中获取词的分布表示。矩阵的行表示词,列表示上下文,每个元素表示某个词和上下文共现的次数,这样矩阵的一行就描述了该词的上下文分布情况。常见的上下文有:①文档,即“词-文档”矩阵;②上下文的每个词,即“词-词”矩阵;③n-元词组,即“词-n-元组”矩阵。矩阵中的每个元素为词和上下文共现的次数,通常会利用TF-IDF、取对数等方法进行加权和平滑。另外,矩阵的维度较高并且非常稀疏的话,可以通过SVD、NMF等手段进行分解降维,变为低维稠密矩阵。关于矩阵的分布表示见图4-2。

图4-2 基于矩阵的分布表示

2. 基于聚类的分布表示

通过聚类手段构建词与其上下文之间的关系,代表模型为布朗聚类(Brown Clustering)。

3. 基于神经网络的分布表示

(1)神经网络语言模型(Neural Network Language Model,NNLM)

Xu等人在2000年首次尝试使用神经网络求解二元语言模型。2001年,Bengio等人正式提出神经网络语言模型。该模型在学习语言模型的同时也得到了词向量,具体如图4-3所示。

图4-3 神经网络语言模型(NNLM)

其中,输入层的词向量顺序拼接为x=[e(ω(i-(n-1)));...;e(ω(i-2));e(ω(i-1))];隐藏层h和输出层y分别为:h=tanh(b1+Hx)y=b2+Wx+Uh;将y转成对应的概率值:

而对于整个语料而言,语言模型需要做以下最大化运算:

(2)Log双线性语言模型(LBL)

2007年,Mnih和Hinton在神经网络语言模型的基础上提出了log双线性语言模型(Log-Bilinear Language Model,LBL),如图4-4所示。

图4-4 Log双线性语言模型

(3)循环神经网络语言模型(RNNLM)

Mikolov等人提出的循环神经网络语言模型(Recurrent Neural Network based Language Model,RNNLM)直接对P()进行建模,RNNLM可以利用所有的上文信息预测下一个词,其模型结构如图4-5所示。

图4-5 循环神经网络语言模型(RNNLM)

(4)C&W模型

与前面的三个基于语言模型的词向量生成方法不同,Collobert和Weston在2008年提出的C&W模型(见图4-6),是第一个直接以生成词向量为目标的模型。

图4-6 C&W模型

就C&W模型(见图4-6)与NNLM(见图4-3)之间的差异而言,主要在于C&W模型将目标词置于输入层,且同时输出层也从语言模型的|V|个节点变为一个节点,该节点的数值表示对这组n元短语的评分。评分也仅有高低之分,而不存在概率的特性,所以,我们无需进行复杂的归一化操作。C&W模型使用这种方式把NNLM模型在最后一层的|V| × |h|次运算降为|h|次运算,这样就极大地降低了模型的时间复杂度。这个区别使得C&W模型成为神经网络词向量模型中最为特殊的一个,其它模型的目标词均在输出层,只有C&W模型的目标词在输入层。

(5)著名的Word2vec

Word2vec包含两个典型模型:Skip-gram(SG)和Continuous Bag-of-Words(CBOW),如图4-7所示。

图4-7 Word2vec工具中的两个模型

Word2vec是谷歌在2013年推出的一个NLP工具,是从大量文本语料中以无监督的方式学习语义知识的一种模型,它的特点是将所有的词向量化,这样我们就能以定量的方式去度量词与词之间的关系,挖掘词之间的联系,所以Word2Vec被大量用于自然语言处理(NLP)中。Word2Vec模型分为两个部分,第一部分是建立模型,第二部分是通过模型获取词向量。Word2Vec整个建模过程实际上与自编码器(Auto-Encoder)的思想很相似,即先基于训练数据构建一个神经网络,当这个模型训练好以后,我们先不会用这个训练好的模型处理新的任务,而真正需要的是这个模型通过训练数据所学得的参数,其实这与部分传统机器学习模型类似(比如,笔者博客《机器学习实践之预测数值型数据——回归》一文中提到的通过训练算法寻找回归系数),例如隐藏层的权重值矩阵,后面我们将会看到这些权重值在Word2Vec中实际上就是我们试图去学习的词向量(Word Vector)。

对于整个语料库而言,CBOW优化的最大目标为:

其中,P(ω|c)是CBOW模型根据上下文的表示来实现对目标词直接进行的预测,具体如下:

同样,对于整个语料库而言,Skip-gram模型通过上下文预测目标词,优化的最大化目标为:

其中,P(ω|ωj)为:

(6)Order模型

上面提到的CBOW模型和Skip-gram模型为了获得更高的性能,在神经网络语言模型或者log双线性语言模型的基础上去掉了隐藏层和词序信息。为了更好地分析词序信息对词向量性能的影响,这里有一个新模型,名为“Order”(见图4-8),意为保留了词序信息。该模型在保留词序信息的同时,去除了隐藏层。

图4-8 Order模型

伊万·布罗德罗夫(Ivan Vendrov)、瑞安基洛斯(Ryan Kiros)、Sanja Fidler、拉奎尔·乌塔森(Raquel Urtasun)发表在ICLR2016上的论文《ORDER -E MBEDDINGS OF IMAGES AND LANGUAGE》,提出了一种新的基于偏序关系的分布式表示向量构建方法,可以用于图像与文本等领域,并在上下位关系预测(Hypernym Prediction)、标题-图像检索(Caption-ImageRetrieval)和自然语言推理(Textual Entailment / Natural Language Inference)等三个任务上进行了实验,取得了不错的效果。文章的最大亮点在于基于偏序关系的向量(Order-Embedding)的构建,如果有时间,建议读者看看原文。

论文提出了一种全新的基于偏序关系的向量学习方法,将维持具有层次关系的向量之间的偏序关系作为学习的目标。上下位关系预测、标题-图像检索和自然语言推理等任务,本质上都是学习图像和文字上偏序关系的实例。如图4-9所示,图像标题即为图像的一种抽象表达,而标题本身的表达也抽象形成一个层次结构,这种层次结构即为一种偏序关系。上下位关系预测和自然语言推理等任务也自然能够转化为一个学习偏序关系的任务。

图4-9 视觉语义层次结构(部分)