自然语言处理-分布表示

理论基础-分布假说

Harris 在1954 年提出的分布假说(distributional hypothesis)为这一设想提供了理论基础:上下文相似的词,其语义也相似[35]。
Firth 在1957 年对分布假说进行了进一步阐述和明确:词的语义由其上下文决定(a word is characterized by thecompany it keeps)[29]。

分布表示

基于分布假说得到的表示均可称为分布表示(distributional representation)。
根据建模的不同,主要可以分为三类:基于矩阵的分布表示(高维)、基于聚类的分布表示(高维)、基于神经网络的分布表示(低维)。【图灵将这三种分类分别称作:distributional representation、clustering based word representation、distributed representation】
它们的核心思想也都由两部分组成:一、选择一种方式描述上下文;二、选择一种模型刻画某个词(下文称“目标词”)与其上下文之间的关系。

1.基于矩阵的分布表示(又称分布语义模型)

这类方法需要构建一个“词-上下文”矩阵,从矩阵中获取词的表示。在“词-上下文”矩阵中,每行对应一个词,每列表示一种不同的上下文,矩阵中的每个元素对应相关词和上下文的共现次数。
在这种表示下,矩阵中的一行,就成为了对应词的表示,这种表示描述了该词的上下文的分布。由于分布假说认为上下文相似的词,其语义也相似,因此在这种表示下,两个词的语义相似度可以直接转化为两个向量的空间距离。

该方法分为三个步骤:
一、选取上下文。第一种:将词所在的文档作为上下文,形成“词-文档”矩阵。第二种:将词附近上下文中的各个词(如上下文窗口中的5个词)作为上下文,形成“词-词”矩阵。第三种:将词附近上下文各词组成的n-gram作为上下文,形成“词-n元词组”
二、确定矩阵中各元素的值。根据“词-上下文”共现矩阵的定义,里面各元素的值应为词与对应的上下文的共现次数。但一般采用多种加权和平滑方法,eg:tf-idf。
三、矩阵分解。常见分解技术:奇异值分解SVD、非负矩阵分解NMF、主成分分析PCA。

最新代表作:Global Vector模型(GloVe)

2.基于聚类的分布表示

该方法以根据两个词的公共类别判断这两个词的语义相似度。最经典的方法是布朗聚类(Brown clustering)。

3.基于神经网络的分布表示(词向量)

基于神经网络的分布表示一般称作 词向量、 词嵌入(word embedding)、分布式表示(distributed representation)。

1)语言模型

形式化讲,统计语言模型的作用是为一个长度为m 的字符串确定一个概率分布P(w1,w2, …,wm),表示其存在的可能性,其中w1 到wm 依次表示这段文本中的各个词。通常采用下式计算概率值:
自然语言处理-分布表示

n元模型对上述概率做了以下近似:
自然语言处理-分布表示

在语言模型中,为了更好地保留词序信息,构建更有效的语言模型,我们希望在n 元模型中选用更大的n。但是,当n 较大时,长度为n 序列出现的次数就会非常少,在估计n 元条件概率时,就会遇到数据稀疏问题,为了更好地解决n 元模型估算概率时遇到的数据稀疏问题,神经网络语言模型应运而生。

2)神经网络语言模型(NNLM)

NNLM与传统方法不同,它不通过计数的方法对n 元条件概率进行估计,而是直接通过一个神经网络结构,对其进行建模求解。

对语料中一段长度为n 的序列wi-(n-1),…,wi-1,wi,n元语言模型需要最大化以下似然:
自然语言处理-分布表示
wi为需要通过语言模型预测的词(目标词)。

输入:条件部分的整个词序列wi-(n-1),…,wi-1。输出:目标词的分布。

自然语言处理-分布表示

NNLM采用普通的三层前馈神经网络。
第一层为输入层x。Bengio提出使用词向量作为输入以解决数据稀疏问题,因此输入层为词wi-(n-1),…,wi-1的词向量的顺序拼接:x = [C(wi-(n-1));…;C(wi-2);C(wi-1)]。
第二层为隐藏层h,第三层为输出层。
自然语言处理-分布表示 为输入层到隐藏层的权重矩阵。
自然语言处理-分布表示 为隐藏层到输出层的权重矩阵。
|V|表示词表的大小,|e|表示词向量的维度,|h|为隐藏层的维度。b(1)、b(2)均为模型中的偏置项。
自然语言处理-分布表示 表示从输入层到输出层的直连边权重矩阵。(由于W 的存在,该模型可能会从非线性的神经网络退化成为线性分类器。Bengio 等人在文中指出,如果使用该直连边,可以减少一半的迭代次数;但如果没有直连边,可以生成性能更好的语言模型。因此在后续工作中,很少有使用输入层到输出层直连边的工作,下文也直接忽略这一项。)
输出层一共有|V|个元素,依次对应下一个词为词表中某个词的可能性,将对应词w的元素记作y(w)。由于神经网络的输出层并不直接保证各元素之和为1,输出层的y 并不是概率值。因此,在输出层y 之后,需要加入softmax函数,将y转成对应的概率值:
自然语言处理-分布表示

输出层的分量y(wi) 描述的是在上文为wi-(n-1),…, wi-1 的条件下,下一个词为wi 的可能性,该分量体现了上文序列与目标词之间的关系。通常,y(wi) 又被称作能量函数,记作E(wi;wi-(n-1):i-1):
y(wi)=b(2)+C’(wi)Ttanh(b(1)+H[C(wi-(n-1));…;C(wi-1)])=E(wi;wi-(n-1):i-1)。

对于整个语料而言,语言模型需要最大化:
自然语言处理-分布表示
训练时,NNLM使用随机梯度下降法训练参数。每次迭代随机从语料D中选取一段文本wi-(n-1),…,wi作为训练样本,使用下式进行一次梯度迭代:
自然语言处理-分布表示
α是学习速率;θ是模型中的所有参数,包括词向量和网络结构中的权重U、H、b(1)、b(2)。

3)log双线性语言模型(LBL)

2007 年,Mnih 和Hinton 在神经网络语言模型(NNLM)的基础上提出了log双线性语言模型(Log-Bilinear Language Model,LBL)。LBL 的模型结构是一个log 双线性结构,能量函数为:
自然语言处理-分布表示
LBL能量函数 VS NNLM能量函数区别:一、LBL 模型中,没有非线性的**函数tanh,而由于NNLM 是非线性的神经网络结构,**函数必不可少;二、LBL 模型中,只有一份词向量e,也就是说,无论一个词是作为上下文,还是作为目标词,使用的是同一份词向量。
改进模型有:层级log双线性语言模型(hierarchical LBL,HLBL)和基于向量的逆语言模型(inverse vector LBL,ivLBL)。

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

NNLM和LBL模型均为n元模型,RNNLM则直接对P(wi|w1,w2,…,wi-1)进行建模而不进行近似简化。
自然语言处理-分布表示
RNNLM核心在于隐藏层的算法:
自然语言处理-分布表示
ϕ 为非线性**函数,使用迭代的方式直接对所有上文进行建模。h(i) 表示文本中第i 个词wi 所对应的隐藏层,该隐藏层由当前词的词向量e(wi) 以及上一个词对应的隐藏层h(i-1) 结合得到。每一个隐藏层包含了当前词的信息以及上一个隐藏层的信息。输出层与NNLM计算方法一致。

5)C&W模型

与前面的三个基于语言模型的词向量生成方法不同,C&W是第一个直接以生成词向量为目标的模型。
自然语言处理-分布表示
C&W 模型的目标是更快速地生成词向量,因此它并没有采取语言模型的方式,去求解上述条件概率,转而采用了另一种更高效的方法,直接对n 元短语打分。对于语料中出现过的n 元短语,模型会对其打高分;而对于语料中没有出现的随机短语,模型会对其打低分。

对于整个语料,C&W模型需要最小化:
自然语言处理-分布表示
其中,(w,c) 为从语料中选出的一个n 元短语wi-(n-1)/2,…,wi+(n-1)/2,一般n为奇数,以保证上文和下文的词数一致;wi 为序列中的中间词,在该模型中为目标词;c 表示目标词w 的上下文;w′ 为字典中的某一个词。
正样本(w,c) 来自语料,而负样本(w′,c) 则是将正样本序列中的中间词替换成其它词。

形式化地,目标词w和上下文c分别为:
自然语言处理-分布表示
正负样本分别为:
自然语言处理-分布表示

输入层:目标词;输出层:只有一个节点,表示对这组n元短语的打分。

6) CBOW模型和skip-gram模型(word2vector)

为了模型拥有更高的性能,这两个模型同时去掉了隐藏层和词序信息。

1. CBOW模型

自然语言处理-分布表示

自然语言处理-分布表示
①采用C&W模型中的经验,使用一段文本的中间词作为目标词。
②在NNLM基础上做了两点简化:1)CBOW 没有隐藏层,去掉隐藏层之后,模型从神经网络结构直接转化为log 线性结构,与Logistic 回归一致。log 线性结构比三层神经网络结构少了一个矩阵运算,大幅度地提升了模型的训练速度。2)CBOW 去除了上下文各词的词序信息,使用上下文各词词向量的平均值,代替神经网络语言模型使用的上文各词词向量的拼接。即对于一段训练样本wi-(n-1),…,wi,输入为
自然语言处理-分布表示
CBOW 模型根据上下文的表示,直接对目标词进行预测:
自然语言处理-分布表示

对整个语料而言,CBOW优化目标是最大化:
自然语言处理-分布表示

2.Skip-gram模型

自然语言处理-分布表示

自然语言处理-分布表示
模型结构与CBOW模型一样,不同之处在于,,Skip-gram 模型每次从目标词w 的上下文c中选择一个词,将其词向量作为模型的输入x,也就是上下文的表示。

对整个语料的优化目标为最大化:
自然语言处理-分布表示
其中:
自然语言处理-分布表示

7)order模型

与CBOW和Skip-gram不同的是,为了更好地分析词序信息对词向量性能的影响,该模型在保留词序信息,同时也去除了隐藏层。
自然语言处理-分布表示

模型总结

自然语言处理-分布表示

参考文献:来斯惟-基于神经网络的词和文档语义向量表示方法研究