基于典型相关分析的词向量

本文为 seaboat 为 AI 研习社撰写的独家稿件,得到了其指点和审核,AI 研习社在此表示感谢。

在NLP领域中,为了能表示人类的语言符号,一般会把这些符号转成一种数学向量形式以方便处理,我们把语言单词嵌入到向量空间中就叫词嵌入(word embedding)。 比如有比较流行的谷歌开源的 word2vec ,它能生成词向量,通过该词向量在一定程度上还可以用来度量词与词之间的相似性。word2vec采用的模型包含了连续词袋模型(CBOW)和Skip-Gram模型,并通过神经网络来训练。 但这篇文章不深入讲 word2vec 的内容,而是看看另外一种词向量生成方式——基于典型相关分析的词向量。

one-hot形式的词向量

说到词向量就必须先看词向量的形式,一般有两类,分别是 one-hot 形式和分布式形式。前面我们说过词向量就是用来表示人类语言的一种数学化的方式,最简单的向量方式即是one-hot形式。

它的处理方式简单粗暴,一般就是统计词库包含的所有V个词,然后将这V个词固定好顺序,然后每个词就可以用一个V维的稀疏向量来表示,向量中只有在该词出现的位置的元素才为1,其它元素全为0。比如下面这几个词,第一个元素为1的表示中国,第六个元素为1的表示美国,第五个元素为1的表示日本。

中国 [1,0,0,0,0,0,0,0,0,……,0,0,0,0,0,0,0]
美国 [0,0,0,0,0,1,0,0,0,……,0,0,0,0,0,0,0]
日本 [0,0,0,0,1,0,0,0,0,……,0,0,0,0,0,0,0]

从中可以看到one-hot形式的维数通常会很大,因为词数量一般在10W级别,这会导致训练时难度大大增加,造成维数灾难。另外这么多维只以顺序信息并且只用1和0来表示单词,很浪费空间。再一个是这种方式的任意两个词都是孤立的,没法看出两个词之间的相似性。于是看看有没有改进的方法。

分布式词向量

鉴于one-hot形式词向量的缺点,出现了另外一种词向量表示方式——分布式词向量(distributed word representation)。 分布式词向量则干脆直接用普通的向量来表示词向量,而元素的值为任意实数,该向量的维数可以在事前确定,一般可以为50维或100维。这时的词向量类似如下(这里假设用5维来表示):

中国 [1.25, 0.2, 0.3, 0.5, 0.6]
美国 [0.1, 0.3, 0.5, 0.1, 1.5]
日本 [2.2, 0.2, 0.4, 0.6, 1.0]

其中每个元素的具体数值则由训练来确定。这样一来就克服了在深度学习中可能的维度灾难,而且充分利用了空间,如果使用适当的训练方法训练出来的词向量还可以直接根据两个词之间的距离来计算相似性。

典型相关分析

典型相关分析主要用于分析两组变量之间的关系,通过该方法能有效分析相关关系。

传统简单的分析方式是直接用协方差矩阵,比如我们有两组变量X=[X1,X2,...,Xm]和Y=[Y1,Y2,...,Yn]Y=[Y1,Y2,...,Yn],那么最原始的方法就是直接计算X和Y的协方差矩阵,矩阵有m*n个值。有了协方差矩阵就得到了两两变量之间的相关性,比如cij就是变量Xi和YjYj的相关性。但这种方式存在缺点,只考虑了变量之间单个维度之间的相关性,于是可采用经典相关分析改进。

经典相关分析是分别在两组变量中找出第一对线性组合,使他们具有最大相关性;接着再分别在两组变量中找出第二对线性组合,使他们具有第二大的相关性,并且它们分别与本组内的第一线性组合不相关。以此类推找出其他线性组合。

该方法的思想与主成分分析的思想相似,而其本质就是从两组变量中选取若干个有代表性的变量线性组合,用这些线性组合的相关性来表示原来两组变量的相关性。

核心思想

基于典型相关分析的词向量的核心思想,它认为一段文字中某个词的左右两边指定长度的窗口内的词组应该具有关联,也就是说某个词的左边若干单词组成上文,右边若干单词组成下文,从而应该让上下文的关系尽可能紧密。如图,假设窗口大小为2,则 w4 的左右两窗口包含的词组为上下文,类似的 w5 也有对应的上下文,每个词都有一个对应的词向量,那么要做的事就是最大化上下文两个矩阵的协方差。

模型训练

假设我们的语料包含了 n 个单词,表示为{w1,w2,...wn},我们的词典大小为 v,窗口大小为 h,再设词向量的维度为 k。单词左右两边的上下文组成的矩阵我们分别定义为Ln×vh 和 Rn×vhRn×vh,而整个语料的矩阵定义为Wn×v

现在我们要做的就是找出两个分别能最好代表左边窗口的矩阵 L 和右边窗口矩阵 R 的方向Φl和ΦrΦr,这两个方向应该使得这两个矩阵分别在对应方向上的投影的协方差最大,投影可以看成是在这两个方向保留了两个窗口矩阵的最具代表性的信息。于是最大化目标可以表示为,

Φl,ΦrE[<L,Φl><R,Φr>]E[<L,Φl>2<R,Φr>2]ΦlrmaxE[<Ll>2<Rr>2]E[<Ll><Rr>]

其中 E 表示经验期望,另外我们用 ClrClr 表示矩阵 L 和矩阵 R 的协方差矩阵,用 CllCll 表示矩阵 L 和矩阵 L 之间的协方差矩阵,用Crr 表示矩阵 R 和矩阵 R 之间的协方差矩阵,则有 Clr=LTRClr=LTR,Cll=LTLCll=LTL,Crr=RTRCrr=RTR

通过转换,上述最大化目标的解可以由下面等式给出,

Cll−1ClrCrr−1CrlΦl=λΦlCll−1ClrCrr−1CrlΦl=λΦl

Crr−1CrlCll−1ClrΦr=λΦrCrr−1CrlCll−1ClrΦr=λΦr

解上述方程,分别取得 k 个最大特征值的特征向量,组成左右窗口两个方向向量ΦLΦR,它们的结构为(vh × k)。然后将左窗口矩阵 L 和右窗口矩阵 R 分别投影到两个方向向量上,即S=[LΦlRΦr],得到单词对应的隐状态 S 矩阵,S 则是用 k 个最相关的成分来表示单词。最后再对 S 和语料矩阵 W 做典型相关分析,即 CCA(S,W),得到最终的词向量嵌入矩阵,结构为(v × k),此即为用 k 维向量表示原来的 v 个单词,实现词嵌入。

Φl,ΦrE[<L,Φl><R,Φr>]E[<L,Φl>2<R,Φr>2]

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2017-12-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏自然语言处理

一起走进条件随机场5(NLP重点理论)

矩阵表示形式前提条件:假设P(y|x)是线性链条件随机场,给定观测序列x,相应的标记序列y的条件概率。引进特殊的起点和终点状态标记y0 = start,yn+1...

10320
来自专栏灯塔大数据

塔秘 | 极简Python带你探索分类与回归的奥秘

前言 本文从分类和回归两个方面介绍了基本的监督学习方法,并用Scikit-Learn做了实例演示。 ? 为何使用人工智能和机器学习? 地球的未来在于人工智能和机...

438120
来自专栏量化投资与机器学习

【Python机器学习】系列之线性回归篇【深度详细】

谢谢大家的支持!现在该公众号开通了评论留言功能,你们对每篇推文的留言与问题,可以通过【写评论】给圈主留言,圈主会及时回复您的留言。 本次推文介绍用线性模型处理回...

1.2K90
来自专栏机器之心

入门 | 从感知机到深度神经网络,带你入坑深度学习

30260
来自专栏自学笔记

Finale

这几篇博客介绍的第一个feature transform方法就是kernel。kernel先出现是在SVM里面,原因就是为了减少 內积计算的复杂度,把特征转换和...

8930
来自专栏机器人网

【深度】一图看完深度学习架构谱系图

金成勳在 GitHub 上梳理出的谱系图如下,小编在此基础上对各个分支网络做了介绍、补充,希望对读者了解网络体系间的关联有所帮助。如有缺陷,欢迎大家留言补充。 ...

31550
来自专栏深度学习之tensorflow实战篇

聚类方法的区别解读:各种聚类分析呀呀呀

k 均值聚类法 快速高效,特别是大量数据时,准确性高一些,但是需要你自己指定聚类的类别数量 系统聚类法则是系统自己根据数据之间的距离来自动列出类别,所以通过系统...

29570
来自专栏程序生活

Word2Vec教程-Negative Sampling 负采样

41230
来自专栏GAN&CV

VGG网络结构分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/d...

1.6K40
来自专栏AI研习社

Word2Vec —— 深度学习的一小步,自然语言处理的一大步

Word2Vec 模型用来学习单词的向量表示,我们称为「词嵌入」。通常作为一种预处理步骤,在这之后词向量被送入判别模型(通常是 RNN)生成预测结果和执行各种有...

10310

扫码关注云+社区

领取腾讯云代金券