★ 前言 ★
word2vec的核心是神经网络的方法,采用 CBOW(Continuous Bag-Of-Words,即连续的词袋模型)和 Skip-Gram 两种模型,通过训练,可以把对文本内容的处理简化为 K 维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似度。
举个例子,第21届世界杯落幕,法国队取胜。假设反过来想,给你一个法国队的关键词,你会联想到哪些词呢?一般而言,应该是世界杯、冠军、姆巴佩、德尚、克罗地亚等等;这也就涉及相似词语、相关词语的选取了,这类算法非常多。也有许多人用了很简单的办法就能求得两样东西的相似性,比如购物车里物品的相似度,最简单的办法就是看看同时买了这样东西的用户还同时买了什么,用简单的数据结构就很容易实现这样的一个算法,但也会忽略一些问题。
归结到数学问题上,最经常用的是把每个词都归结到一个坐标系下,再用距离公式(如:皮尔逊公式)可方便的求出各个词语之间的相似度。
这就是word2vec的方法,word2vec 通过训练,可以把对文本内容的处理简化为 K 维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似度。算法的关键步骤就是如何求出词语的向量空间。
下面我们就来了解一下word2vec的基本模型和方法吧。
给定一个特定顺序的词串,统计语言模型计算该词串是一个有意义的句子的概率
p(w 1 , w 2 ,…, w t )=p(w 1 )·p(w 2 |w 1 )· … ·p(w t |w 1 , w 2 ,…, w t-1 )
p(“Today is Friday”)≈0.001 > p(“Today Friday is”)≈0.00000001
假设词典大小为N,句子的长度为t,则共有N t 种组合。每一种组合包含t个参数,总共需要计算和存储t·N t 个参数。
一个词出现的概率只与其前面n-1个词相关
p(w k |w 1 ,w 2 …w k-1 )≈p(w k |w k-n+1 ,w k-n+2 ,…,w k-1 )
=p(w k-n+1 ,w k-n+2 ,…,w k )/p(w k-n+1 ,w k-n+2 ,…,w k-1 )
≈count(w k-n+1 ,w k-n+2 ,…,w k )/count(w k-n+1 ,w k-n+2 ,…,w k-1 )
其中,是词w的输出向量(长度为N),i_w是词w在词典中的位置,y_w(i_w)是输出向量y_w上位于i_w的元素,N是词典的大小。
词向量比较
定义:词向量的大小与词典大小相同,词向量中,只有该词对应位置的元素为1,其余为零
优点:简单
缺点:语义鸿沟,维数灾难
定义:低维稠密实向量
优点:具有语义、语法相似性
缺点:缺乏解释性,计算复杂
复杂度估计
整个模型的大部分计算集中在隐藏层和输出层的矩阵向量计算以及输出层中的softmax归一化!
将Huffman编码为1的结点定义为负类,将编码为0的结点定义为正类,即
易知,一个结点被分为正类的概率是
,被分为负类的概率是
对于从根结点出发到“足球”叶子结点的4次二分类,每次分类结果的概率是
根据
其中,
由于
与Hierarchical Softmax相比,Negative Sampling不再使用复杂的Huffman树,而是利用随机负采样,来提高训练速度并改善所得词向量的质量。