Word Vector

来源:互联网 发布:tcp拥塞控制算法 编辑:程序博客网 时间:2024/06/13 14:37

Word Vector 方法

通常情况下,我们需要解决的问题都是和数字来打交道。对于nlp而言,语言中包含很多非数字的词语,要想实现对一句话的理解,首要做的是将词语转化为向量。将词语转化为向量的方法主要有3大种。下面分别进行介绍:

1、One hot Encoding

即将词语转化为一个长度为单词库中单词数量相同的向量,该向量在该词的位置处值为1,其他位置处值为0。这种表达方式很简单,但缺点也是很明显的。向量维度较高,同时这些数字没有实际意义。比如hotel = [0 0 1], motel = [1 0 0],通过点积两个向量值为0,而两个词意是很接近的,显然不太符合实际需求。

2、SVD based method

SVD的基本思路是矩阵分解,那么首先我们需要获取矩阵。矩阵的形式有2种:word-document word-word。其中word-document矩阵的维度是MxV(其中M是指document的数量,V是指词库的数量)。而word-word matrix 也称作Window based Co-occurrence Matrix,统计的是以某词为中心词的情况下,在window size内其他词出现的次数。这主要是因为根据window的大小的不同,得到的矩阵也不同,维度是VxV。
得到矩阵后,处理的基本思路是:
a、将矩阵X做svd分解,X=USVT
b、选择U的前K列得到K维的词向量
这种方法可以表征词与词之间的关系,但同时也面临以下问题:
a、随着词库中新增词语以及语料库的增加,矩阵的维度可能是经常变化的。
b、矩阵可能是很稀疏的,因为大部分的词语使用频率较低
c、矩阵的维度是很高的
d、进行SVD分解时的复杂度较高
e、词频可能是极不平衡的
解决以上问题的一些思路:
a、忽略一些功能性的词语比如:the、 he、has等
b、计算词频时参考词语到中心词的距离加适当的权重
c、应用皮尔逊相关系数,取代原来的值,将负值设为0。

3、迭代方法:Word2Vec

这种方法的基本思路是通过将一些词向量看做参数,设计目标函数,利用一些优化方法去获得这些参数的值。
Word2Vec实际上包含2种算法和2种训练方法:
2种算法:continuous bag-of-words (CBOW) 和skip-gram。这两种算法的目的正好是相反的,CBOW是根据Contex word去预测中心词,而skip-gram则是根据中心词去预测Contex word的分布。
2个训练方法:negative sampling 和 hierarchical softmax.负值采样通过采集负样本来确定目标,而 hierarchical softmax通过有效的树形结构来计算算有词语的概率分布。

CBOW

这里写图片描述
其基本流程:
这里写图片描述
这里写图片描述
这里写图片描述
目标函数:
这里写图片描述

Skip-Gram Model

这里写图片描述
其流程与CBOW类似:
这里写图片描述
这里写图片描述
训练过程与CBOW稍有不同,这里应用了naive bayesian的假设:
这里写图片描述

Negative Sampling

上边的模型的求解看起来可以用梯度下降求解,但其实每次更新需要考虑V个document中word的相关和。如果V很大那么计算量将非常大,一个解决思路是直接估计。其基本思路是,对于每一次训练,当需要迭代单词库中的单词时,我们从分布(符合词频的大小)中只采样一些负样本。同时,负采样将(w, c)word w以及context c出现在训练数据中看做1,没有出现在训练数据中看做0,利用类似与logistic regression的原理来构建模型:
这里写图片描述
这里写图片描述

Hierarchical Softmax

Hierarchical Softmax与negative sampling相比的区别在Hierarchical Softmax趋向于出现频率较低的单词,而negative sampling趋向于出现频率较高且维度较低的单词。
这里写图片描述
在这个模型中,词语位于叶子节点,除叶子节点外的其他节点都是一个需要学习的向量。给定Wi向量,词W出现的概率P(W|Wi)表示从根节点开始随机游走至单词w所在的叶子节点的概率。假设将L(w) 看做从根节点开始到单词w过程中历经的节点个数,例如图中L(W2) = 3;n(W, L(W))看做单词W的父节点,且对应的的向量为vn(w,i)如n(w2,1) = root,同时对于内部节点n,任意挑选孩子节点ch(n)(通常是左子节点),那么概率P(W|Wi)可以表示为:
这里写图片描述
举例说明:
这里写图片描述
训练这个模型的思路依然是最小化上述概率的负对数,但是更新的数值不是叶子节点的词向量,而是从根节点到叶子节点中节点的向量。
该方法的速度取决于二叉树的构建方式以及叶子节点上对应的单词。

这里写图片描述

Global Vectors for Word Representation (GloVe)

Glove方法通过加权最小二乘模型训练对全局的word-word co-occurrence counts训练,因此能够充分利用统计特征。
这里写图片描述
该方法优化的目标函数:
这里写图片描述
这里写图片描述
优势:
1、利用了全局的统计信息
2、不计算softmax loss的分母,同时只计算matrix中的非零元素,节省大量的计算量

Word vector方法的评估

Word vector方法的评估分为内部评估和外部评估两种。
这里写图片描述
内部评估包括评估两个词语间的相关性,近义词查找等
这里写图片描述
外部评估包括情感分析、窗口分类等
窗口分类是指对于1个document,里边含有n个单词,每个单词的单词向量(维度为d)可以得到,那么我们只需将这些向量合成一个n*d的向量作为特征利用线性模型softmax或者非线性模型神经网络等进行训练

0 0