购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 分布式表示

分布式表示将一个词表示成一个定长的连续的稠密向量。该低维稠密向量表示的词之间存在“距离”概念,词向量能够包含更多信息。

一般而言,好的文本语义表示应有以下特点:①具有很强的表示能力,在同一个空间可表示多样化且复杂的语义;②使后续的学习任务变得简单,用一个简单的模型即可完成任务,而无需涉及复杂的人工特征工程或者构建复杂分类器;③在不同的数据上具有普适性。分布式表示方法中的词嵌入(word embedding)将词转化成一种分布式表示,又称为词向量。词向量语义模型简单易懂,将词转化为稠密向量,相似的词对应的词向量也相近。它在同一个语义空间下,能够对整个词汇表中的词进行很好的语义表示。

4.2.1 Word2vec

实现词嵌入主要有两种方法,即矩阵分解法(matrix factorization method)和基于浅窗口的方法(shallow window-based method)。矩阵分解法可理解为根据统计的方法,在庞大的训练语料中进行全局性的统计,并且对高频词进行加权限制。基于浅窗口的方法则是给定一个窗口,根据窗口内的上下文进行语义表示,其代表方法是Word2vec。Word2vec是一种从大量文本语料中以无监督方式学习语义知识的模型,使用了词嵌入的原理与方法,被广泛用于自然语言处理的任务。这种方法可以快速进行训练,对于大规模和小规模的语料均适用。

4.2.1.1 Skip-Gram和CBOW

如图4.1所示,Word2vec有Skip-Gram和CBOW两种模型。Skip-Gram模型是给定中心词,对上下文进行预测,Skip-Gram模型可以捕捉到每个单词周围的语境信息,对于训练数据中稀有的单词或词组效果更好。而CBOW模型则是给定上下文的词,对中心词进行预测,可以更好地处理高频词汇。由此可知,Word2vec词向量的表示是基于上下文信息进行建模的,因此同义词会学习到比较相似的词向量。如excellent、outstanding与superb为同义词,那么它们的词向量在向量空间中较为接近。与此同时,Word2vec也有利于单词词干化,同一单词的单复数、不同时态的向量投影是几乎重叠的。

图4.1 Skip-Gram和CBOW示意图 [ 1 ]

如图4.2所示,Skip-Gram模型包括输入层(input layer)、隐藏层(hidden layer)和输出层(output layer)。其输入是独热表示向量,通过隐藏层进行词嵌入,将词向量进行低维压缩,然后通过输出层将向量进行解码。分类或预测模型的建模并非最终目的,该任务的关键在于,在模型训练的过程中,通过模型学习到的参数(即隐藏层的权重矩阵)来获得词向量。

图4.2 Word2vec Skip-Gram模型图 [ 2 ]

假设从训练文档中抽取出10000个不重复的单词构成词表,并对这10000个单词进行独热编码,则每个单词可表征为一个10000维的向量,向量的其中一维为1,其他维为0。假设单词ants在词汇表中的第3位出现,那么ants的向量是一个第三维取值为1、其他维度皆为0的10000维的向量,可表示为ants=[0,0,1,0,…,0]。

如果以300个特征来表示一个单词,那么隐藏层的权重矩阵应有着10000行、300列。图4.2左侧每一列表示一个10000维的词向量和隐藏层单个神经元连接的权重向量,每一行则表示不同单词的词向量。为了有效地进行计算,模型中的隐藏层权重矩阵便成了一个“查找表”(lookup table)。进行矩阵计算时,模型查找输入向量中取值为1的维度下对应的权重。隐藏层的输出是每个输入单词的嵌入词向量。

通过上述介绍可以发现,Word2vec模型是一个参数量巨大的神经网络,10000行、300列的输入-隐藏层权重矩阵和隐藏层-输出层的权重矩阵都会有10000×300=300万个权重。在参数如此多的神经网络上进行梯度下降,训练速度是非常慢的。因此,在模型的训练阶段,Word2vec会采取一些策略来提高训练速度:①将常见的词块或者词组,作为一个整体进行处理与表示;②对高频词进行抽样,以减小训练样本数量;③对优化目标采用负采样策略,在对每个训练样本进行训练时,只对模型中少部分的参数进行更新,从而降低模型计算负担。

4.2.1.2 高频词采样

Word2vec模型设置窗口,以窗口内的中心词作为训练样本进行训练。但对于诸如“the”“a”等无法为上下文提供重要语义信息的高频通用词汇,需做特殊处理。考虑到此类通用的高频词,其出现概率远大于需要对其词向量进行学习建模的采样频率,Word2vec采用抽样的方法。抽样方法认为,对于在原始训练文本中的每一个单词,都存在被删除的概率,而这个被删除的概率与词频相关。某一单词被删除的概率计算如下:

式中, z ( w i )表示词频。词频越高,该词被删除的概率就越大。

4.2.1.3 负采样

训练一个神经网络意味着需要输入训练样本并不断调整神经网络中的权重,从而不断提高性能。权重的调整往往需要通过数以亿计的样本的训练,一方面消耗计算资源,另一方面在实际训练中效率较为低下。负采样被认为是可提高训练速度且改善所得词向量质量的一种方法,可有效解决上述问题。不同于每个训练样本都需更新所有的权重,负采样每次仅需更新一个训练样本的一小部分权重,就能大幅度降低梯度下降过程中的计算量,提高模型整体的训练效率。

当用训练样本(input word:″input″,output word:″output″)来训练神经网络时,可通过独热表示法对“input”和“output”进行编码。假设词表大小为10000,在输出层,我们期望对应“output”单词的神经元节点输出为1,其余9999个神经元节点输出为0。在此,这9999个神经元节点所对应的单词可被称为负单词。使用负采样时,将随机选择一小部分的负单词(如对小规模数据集,选择5~20个;对大规模数据集,选择2~5个)来更新对应的权重。与此同时,也会对正单词进行权重更新(如“output”)。

对于4.2.2.1节所举例的隐藏层-输出层的300×10000权重矩阵,如采用负采样方法,则仅需更新正单词——“output”和所选若干个负单词节点对应的权重,共计输出若干个神经元,即每次只更新若干个权重。相比起300×10000个权重,计算效率可大幅提升。

那么应如何选择负单词呢?在一元模型中,一个单词被选作负采样的概率与它出现的频次有关,出现频次越高的单词越容易被选作负单词。该概率的计算公式如下:

式中, f ( w i )表示单词的词频。式中的3 / 4是根据经验所选的。一个单词的负采样概率越大,那么它在词汇表中出现的次数就越多,被选中的概率则越大。

4.2.2 矩阵分解

矩阵分解法常被用于文本的话题分析,以发现文本与单词之间基于话题的语义关系。潜在语义分析(Latent Semantic Analysis, LSA)是矩阵分解技术中的一个典型方法,由Deer-wester于1990年提出,最初应用于文本信息检索,因此也被称为潜在语义索引(Latent Semantic Indexing, LSI),在推荐系统、图像处理、生物信息等领域被广泛应用。

文本信息处理中,传统的方法用单词向量来表征文本的语义内容,用单词向量空间的度量来表示文本之间的语义相似度。潜在语义分析则试图从大量的文本数据中发现潜在的话题,用话题向量来表征文本的语义内容,通过话题向量空间的度量从而更准确地表示文本之间的语义相似度。潜在语义分析的步骤总结如下:

1)基于窗口的划分,对窗口内的单词间共同出现的频次进行统计。假设有 m 篇文档,共有 n 个词,构建共现矩阵( m × n )。但该共现矩阵高维稀疏,特征空间随着文本中词汇的增加不断增大。

2)该共现矩阵通过奇异值分解可分解为三个矩阵,即 U ( m × r )、对角矩阵( r × r )和 V ( r × n )。在共现矩阵上进行降维,如图4.3所示。从转换的角度来看,奇异值分解在高维由词频向量权重构成的有限空间和低维的奇异值向量空间之间建立了一种映射关系。

3)经过分解后,每个文档由代表潜在语义信息的 r 维向量表示( r 远小于文档中的词个数 n )。 V 矩阵代表词在潜空间上的分布皆是通过共现矩阵分解得到的。提取前 r 个最大的奇异值及对应的奇异向量构成一个新矩阵,从而近似表示原文本库的项-文本矩阵。新矩阵有效降低了项和文本之间语义关系的模糊度,因此有利于信息检索。

图4.3 奇异值分解示意图 [ 3 ]

潜在语义分析方法可较好地对语义信息进行表示。但值得注意的是,奇异值分解的计算代价较大。对于一个 m × n 的矩阵,其计算复杂度是 O ( n 3 )。与此同时,奇异值分解难以合并新的词汇或文档,且没有考虑到词语间的出现顺序(即语法信息),难以实现文本含义的深入挖掘。

4.2.3 GloVe

实现词嵌入的两种方法,即矩阵分解法和基于浅窗口的方法都各有优点。GloVe(global vector for word representation)结合了两者的优点,是一种基于全局词频统计(count-based & overall statistic)的词表征方法,体现在使用滑动窗口遍历语料库,同时在滑动窗口内更新共现矩阵,这区别于潜在语义分析在全局构建共现矩阵,同时又采纳了窗口机制的优点,能够对局部上下文信息加以利用。

GloVe模型首先定义词与词之间的共现次数矩阵为 X ,其中 X ij 表示单词 j 是单词 i 的上下文的次数。 X i =∑ k X ik 表示单词 i 的上下文的所有单词的总个数。 P ij = P ( j | i )= X ij /X i P ij 表示单词 j 出现在单词 i 的上下文的比率。假定有两个中心词 i =ice(冰块)和 j =steam(蒸汽),以及共现词 k =solid(固体),由于共现词“固体”与“冰块”的关联要比与“蒸汽”强,因此比率 P ik /P jk 会较大。若 k =gas(气体),那么比率 P ik /P jk 会较小。如果 k =water(液体)或academic(学术),那么与两者都有关,或都无关。比率会接近1。

词向量的学习与词共现概率的比率 P ik /P jk 相关。比率的计算如下:

式中, w R d 是中心词词向量; 是上下文词向量。函数 F 对词向量空间中呈现比率 P ik / P jk 的信息进行编码。考虑到向量空间本质上是线性结构,因此可使用向量差分并利用两个中心词的差异,得到

式中,函数 F 的第一项是向量,第二项是标量。虽然 F 可被视为由神经网络等参数化的复杂函数,但这会混淆所试图捕获的线性结构。为避免该问题,可先取参数的点积以防止函数 F 以不适当的方式混合向量维度:

对于词-词共现矩阵,词和上下文词之间的位置可相互交换,即 X X 。首先,需使函数 F 满足同态性,即

对比上述公式,可得 。并利用指数函数做进一步处理:

由于改变 i k 的位置,会改变公式整体的对称性,为保持对称性,为 添加偏置

式(4.7)是对式(4.2)的极大简化。但当参数为零时,对数会发散。这个问题的一个解决方案是在对数中加入一个加法位移,即log( X ik )→log(1+ X ik ),从而保持稀疏性和避免发散。分解共现矩阵对数往往为所有同现事件赋予相同权重。那么对于单词 i 和单词 k 之间那些不常见或偶尔出现的组合,若其被拟合则容易带来噪声,这显然会有损模型的鲁棒性。为此,GloVe提出了一种新的加权最小二乘回归模型来为出现次数较少的组合分配较小的权重。首先,构造式(4.7)作为最小二乘问题。随后,将加权函数 f ( X ij )引入目标函数 / 损失函数中,其中 V 是语料库中词汇的总个数。模型最终的目标函数为

f ( X ij )为权重系数,应有以下特点:

1) f (0)=0。如 f 被视为连续函数,它应该随着 x →0快速消失,以至于 是有限的。

2) f ( x )应该是非递减的,如此一来,低频的共现词组不会被分配过高的权重。

3)对于较大的 x 值, f ( x )应相对较小,如此高频的共现词组不会被分配过高的权重。

据此,可将权重函数设置如下:

如图4.4所示,权重函数性能在很大程度上取决于截止值。 x max 的选择依赖于具体的数据集。确定了权重函数 f ( X ij ),就可最终确定式(4.9)中所示的模型目标函数。

图4.4 权重函数图 [ 3 ] EZj34Bgg8BPtN+T7IzQl7i6Dn5GfhOM7ou4AJXcAwjTayTi0CT6chNpjUd8hBQb2

点击中间区域
呼出菜单
上一章
目录
下一章
×