3.2 基于矩阵分解的方法
基于矩阵分解的方法将语料中的文档、句子、模式等不同粒度的统计信息构建成不同的矩阵,如词-文档共现矩阵、词-词共现矩阵等。
词-文档共现矩阵是将词所在的文档作为上下文统计词与文档之间相关性的信息,矩阵中每行对应一个词,每列对应一个文档,矩阵中的每个元素是统计的语料中词和文档的共现信息。这种分布表示方法基于词袋假说,即文档中词出现的频率反映文档与词之间的相关程度,利用矩阵分解的方法将词和文档映射到同一个低维语义空间,获得词的向量化表示。代表性的方法是潜在语义分析(Latent Semantic Analysis,LSA)。LSA方法构建的词-文档共现矩阵X中,矩阵 X 的元素是从语料中统计的 TF-IDF 值(Term Frequency-Inverse Document Frequency)。其中,TF代表词频(Term Frequency)即词在文档中出现的频率;IDF代表逆文档频率(Inverse Document Frequency)即一个词普遍重要性的度量。TF-IDF 的主要思想是:如果某个词在一个文档中出现的频率高并且在其他文档中出现的频率低,则认为这个词具有很好的文档区分能力。在矩阵分解过程中,LSA 方法对共现矩阵X进行奇异值分解(Singular Value Decomposition,SVD),将矩阵X分解为三个矩阵:
X=UΛV
其中,U和V是正交矩阵。矩阵U代表词的向量空间,矩阵V代表文档的向量空间,Λ是记录矩阵X的奇异值的对角矩阵。SVD 方法对这三个矩阵进行降维生成低维的近似矩阵。LSA 方法最小化近似矩阵与原矩阵X的近似误差,具体过程为:假设矩阵X的秩为r,给定正整数k<r,选取Λ矩阵前k个数据构造矩阵Λk,构造矩阵满足:
其中, Uk是将词从高维空间映射到k维空间的潜在语义表示;Vk是将文档从高维空间映射到k维空间的潜在特征表示。当Xk与原始矩阵X近似误差最小时,LSA方法获得优化的矩阵Uk并将其作为词的低维度向量表示。
LSA方法通过降低向量空间的维度减少高维空间中的噪声,挖掘词的潜在语义特征。原始的高维度的共现信息是对文本数据的直接统计,是一种直接的、稀疏的词表示形式,反映从语料中统计的真实的词-文档共现信息。矩阵分解的方法构造低维语义空间,可获得一种间接的、稠密的词表示形式,反映的是词-文档的近似的共现信息。因此最终学习得到的词向量不是简单的词条出现的频率和分布关系,而是强化的语义关系的向量化表示。为了进一步提升学习效果,研究人员将多种矩阵分解方法应用到词-文档矩阵分解过程中。例如主题模型(Topical Model)方法将矩阵X分解为词-主题矩阵与主题-文档矩阵;NNSE(Non-Negative Sparse Embedding)方法使用非负分解(Non-negative Matrix Factorization)的方法,以在矩阵中的所有元素均为非负数为约束条件,进行矩阵分解。
词-词共现矩阵将目标词附近的几个词作为上下文,统计目标词与上下文中的各个词的相关性。通常,词-词共现矩阵中的每一行对应一个目标词,矩阵中的每一列代表上下文中的词;词-词共现矩阵中的元素代表语料中两个词之间的关联信息,由一个词可以联想到另外一个词则说明这两个词是语义相关的,反之为语义无关。早期的代表性方法是Brown Clustering方法,利用层级聚类方法构建词与其上下文之间的关系,根据两个词的公共类别判断这两个词的语义相近程度。2014年,彭宁顿(Pennington)等人提出了GloVe方法,这是目前最具有代表性的基于词-词共现矩阵的词语义表示方法。
GloVe方法将语料中的上下文信息构建为一个共现矩阵,矩阵中的元素X ij表示两个词wi和w j在语料中共同出现的次数。在具体实施过程中,GloVe 方法根据两个词在上下文窗口的距离d提出了一个衰减函数,从而降低了远距离的词共现权重。GloVe方法使用比率而非共现概率来表示词之间的关系。如图3.1所示,以词汇ice(冰)和steam(蒸汽)为例,在GloVe的共现矩阵中, wi和w j分别代表ice和steam;wk代表其他词,如solid(固体),gas(气体),water(水),fashion(时尚);P(k|ice)和 P(k|steam)代表共现概率,P(k|ice)/P(k|steam)代表比率。
图3.1 GloVe 方法的语料中词共现信息统计对比
● 当k=solid时,其与ice相关,与steam不相关,则比率P(k|ice)/P(k|steam)应该越大。
● 当k=gas时,其与ice不相关,与steam相关,则比率P(k|ice)/P(k|steam)应该越小。
● 当k=water时,其与ice和steam都相关,则比率P(k|ice)/P(k|steam)应该趋近于1。
● 当k=fashion时,其与ice和steam都不相关,则比率P(k|ice)/P(k|steam)应该趋近于1。
因此,在基于比率的计算过程中,GloVe方法将wi和w j作为目标词将wk作为上下文词,然后设计了基于比率的函数F:
其中wi和wj是词wi和w j作为目标词时的向量表示,是词wk作为上下文时的向量表示。由于在向量空间中词间具备线性关系,则函数F可以表示为:
在向量空间中,GloVe方法使用向量内积表示wi-wj和的关系:
同时,GloVe方法将目标词和上下文词在向量空间中的关系也表示为两个向量的内积:
在实施过程中, F选取exp函数,即:
其中, wi是词wi作为目标词时的向量表示;是词wk作为上下文词时的向量表示, bi和分别是两个词的偏置项。至此,GloVe设置带有权重的最小平方回归模型,并且目标函数为:
其中 f (Xik)是一个权重函数:
其中,α=0.75;xmax=100。
GloVe 方法为了尽可能保存词之间的共现信息,将词-词共现矩阵中的元素设置为统计语料中两个词共现次数的对数(即矩阵中第i行第j列的值为词wi与词w j在语料中的共现次数的log值),用以更好地区分语义相关与语义无关。在矩阵分解步骤中GloVe模型使用隐因子分解(Latent Factor Model)的方法,在计算重构误差时只考虑共现次数非零的矩阵元素。GloVe方法融合了全局矩阵和局部窗口,利用隐因子分解的方法对矩阵进行处理。该方法的优势是在生成词-词共现矩阵的过程中,既考虑了语料全局信息又考虑了局部的上下文信息,并且可以合理地区分词的语义相关程度。GloVe方法的训练结果在词相似度、词间关系推理、命名实体识别等任务中效果突出,也是目前最为流行的词向量库。
表3.1对基于全局统计信息的词嵌入构造方法进行了对比总结。总体来说,基于分布式语义的词嵌入方法的关键是对词与上下文的共现信息的描述,合理的相关性计算方法能够更好地体现词间的关联,进而有助于学习结构提取词的潜在特征,提升词嵌入语义特征的表达能力。早期的 LSA 方法,使用简单的TF-IDF 统计词在文档中的共现信息,是一种弱的关联信息,信息不全面。除了 TFIDF 外,还有很多其他衡量词与上下文相关性的方法。后续研究人员对PMI(Pointwise Mutual Information)方法进行了改进,以便更好地表达词-文档、词-词共现信息,并训练获得了高质量的词嵌入。例如 NNSE 方法利用改进的PMI方法描述词-上下文之间的相关性。
表3.1 基于全局统计信息的词嵌入构造方法比较