统计语言模型(Statistical Language Model)
传统的统计语言模型是表示语言基本单位(一般为句子)的概率分布函数,这个概率分布也就是该语言的生成模型[1,2]。在这里仅讨论n-gram语言模型和神经网络语言模型(Neural Network Language Model,NNLM)。前者通过前n-1个上下文词出现的频次和它们共同出现的频次关系来表示简化计算,使复杂度大大降低。后者通过计算词向量来实现,在该过程中,使用一个三层的神经网络结构来训练词向量。
word2vec的原理
词向量的作用已经不需赘述,谷歌提出了两种模型[3,4]:
1、CBOW(Continuous Bag-of-Words Model,连续词袋模型)
这是一种与前向 NNLM 类似的模型,不同点在于 CBOW 去掉了最耗时的非线性隐层且所有词共享隐层。如下图所示。可以看出,CBOW 模型是预测 P(w |Context(w) ),即前后上下文预测中间的字。
2、Skip-Gram
Skip-Gram 模型的图与 CBOW 正好方向相反,预测概率为P(w |Context(w) ),即中间的字预测前后上下文。
疑问:为什么要使用 Hierarchical Softmax 或 Negative Sampling ?
不管是CBOW还是Skip-Gram模型,都要使用Hierarchical(分层) Softmax 或者Hierarchical Softmax(负采样)的方法才能完成词向量的训练。原因是p(wo |wi )的结果是一个多分类的logistic regression,即 softmax 模型,对应的 label 是One-hot representation,只有当前词对应的位置为 1,其他为 0。普通的方法是 p(wo |wi ) 的分母要对所有词汇表里的单词求和,这使得计算梯度很耗时。另外一种方法是只更新当前 wo 、wi 两个词的向量而不更新其他词对应的向量,也就是不管归一化项,这种方法也会使得优化收敛的很慢。
Hierarchical Softmax 使用哈夫曼编码构造的一连串两分类。但是在训练过程中,模型会赋予这些抽象的中间结点一个合适的向量,这个向量代表了它对应的所有子结点。因为真正的单词公用了这些抽象结点的向量,所以Hierarchical Softmax 方法和原始问题并不是等价的,但是这种近似并不会显著带来性能上的损失同时又使得模型的求解规模显著上升。
Negative Sampling 也是用二分类近似多分类 , 区别在于使用的是one-versus-one 的方式近似,即采样一些负例,调整模型参数使得模型可以区分正例和负例。换一个角度来看,就是 Negative Sampling 有点懒,他不想把分母中的所有词都算一次,就稍微选几个算算,选多少,就是模型中负例的个数,怎么选,一般就需要按照词频对应的概率分布来随机抽样了。
cw2vec
cw2vec是蚂蚁金服2018年提出的基于笔画的中文词的word embedding 方法[5]。文中将中文笔画划分为5类,每个词语使用 n-gram 窗口滑动的方法将其表示为多个笔画序列。每个 gram 和词语都被表示成向量,用来训练和计算他们之间的相似度。
该实验中使用组成目标词语的所有 gram 向量和词语向量的内积和来表示词语之间的相似度,为了简化计算文中也采用了负采样的方法。在使用负采样的分布 U(w) 时,为了防止数据稀疏性问题,常采用 U(w)的3/4次方,实验也取得了良好的效果。
一个 word embedding 的可视化:链接
Tricks:
1)在相同语料和vector 维度下,skip-gram在semantic下表现极为出色,在syntactic下也非常好。
2)CBOW在syntactic下表现很不错(但还是弱于skip-gram),但在samentic下的表现去非常糟糕。
3)在固定C=5的情况下,所有基本相同的情形,skip-gram的是训练时长差不多是CBOW的三倍。
4)对于CBOW,训练时长与语料规模基本成1倍关系,与维度也基本成1倍关系。
5)对于skip-gram,训练时长与语料规模基本成1倍关系,与维度基本成1.5倍关系。
6)在大规模语料上,通过NNLM训练高维度词向量,几乎不可能,成本太大了。
7)在大规模语料+高维度情况下,此时CBOW在syntactic上的表现开始不弱于skip-gram了。
综上,skip-gram 训练时间长,但是效果较CBOW好。
参考:
【1】word2vec的数学原理
【2】Deep Learning实战之word2vec
【3】Efficient Estimation of Word Representations inVector Space
【4】stributed Representations of Words and Phrasesand their Compositionality
【5】cw2vec: Learning Chinese Word Embeddings with Stroke n-gram Information