word2vec 相比之前的 Word Embedding 方法好在什么地方?

之前看觉得word2vec的方法好厉害,用Hierarchical Softmax和负采样加速训练计算。 后来发现其实Hierarchical Softmax在Hinton 08的那篇《A scalable hierarchical distributed language model》就提到过,然后负采样的方法在Collobert 08年的《A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Learning》也有。 之前的这两篇文章也都是word embedding相关的,也有开源代码,就想…
关注者
428
被浏览
18,390

4 个回答

Word2vec训练方面采用的HSoftmax以及负采样确实可以认为是创新不大。但Word2vec流行的主要原因也不在于此。主要原因在于以下3点:
1. 极快的训练速度。以前的语言模型优化的目标是MLE,只能说词向量是其副产品。Mikolov应该是第一个提出抛弃MLE(和困惑度)指标,就是要学习一个好的词嵌入。如果不追求MLE,模型就可以大幅简化,去除隐藏层。再利用HSoftmax以及负采样的加速方法,可以使得训练在小时级别完成。而原来的语言模型可能需要几周时间。
2. 一个很酷炫的man-woman=king-queen的示例。这个示例使得人们发现词嵌入还可以这么玩,并促使词嵌入学习成为了一个研究方向,而不再仅仅是神经网络中的一些参数。
3. word2vec里有大量的tricks,比如噪声分布如何选?如何采样?如何负采样?等等。这些tricks虽然摆不上台面,但是对于得到一个好的词向量至关重要。

举一个生活中的例子,语言模型和word2vec的关系可以类比于单反相机和美颜手机,它们的受众不一样。就照片质量(MLE)而言,单反肯定好。但如果更关心美颜(词嵌入)和便携性(训练速度),美颜手机就更受欢迎。

更多的资料可以参考:
nndl.github.io/ch12.pdf
词嵌入模型效果好不好的关键之一,是用上下文词预测当前词的formulation,即采用的回归函数。

Hinton等07年和08年的log bilinear language model之前的工作都采用的是 softmax([上下文词向量,当前词向量]的线性变换) 的形式,softmax里边可以简化认为是一些向量的线性和。但几个向量的线性和不能很好的抓住这几个向量在隐空间一些维度上取值接近的特点,所以效果并不好。

07年的Three New Graphical Models for Statistical Language Modelling里,三个模型之一是log bilinear language model (LBL), 题目中08年的论文扩展了这个方法,得到Hierarchical Log Bilinear Language model. 为了叙述简单,下面把这两种方法统称为LBL。LBL使用了 softmax(上下文词向量的线性变换 * 当前词向量) 的形式,点乘在抓两个向量在一些维度上取值接近方面,比相加要好得多,这是词向量模型发展的一个重大突破。

word2vec使用的也是LBL。那么和之前的方法有什么区别呢?08年的Hierarchical LBL里,用的是这样的回归函数:
P(w_n=w|w_1,\cdots,w_{n-1})=\sigma(v_w \cdot \sum_{i=1}^{n-1} C_i v_{w_i} + b_w)
这里的Ci都是矩阵,不同位置对应不同的矩阵。
word2vec的CBOW用的是(skip-gram我觉得和CBOW基本是等价的,效果也类似,但CBOW的概率解释好些,所以拿它来比较):
P(w_n=w|w_1,\cdots,w_{n-1})=\sigma(\frac{1}{n-1} v_w \cdot \sum_{i=1}^{n-1} \tilde{v}_{w_i})
可见它移除了变换矩阵Ci和偏移量bw. 实际上我们事后诸葛来看,变换矩阵Ci也的确是多余的,因为 两个词经常一块出现<=>两个词在某方面有相似语义<=>两个向量在某些维度取值类似,那么直接点乘就可以了,用Ci变换一下,反而有可能把本来相似的维度变得不同,从而让学出来的向量不能很好满足“相似词在有些维度上取值相近”的训练效果。

显而易见,移除Ci会极大的提高运算速度,使word2vec在大语料上训练非常可行。两个LBL模型训练语料都是1000w单词左右,而word2vec即使用wikipedia这样>20亿词规模的语料也只需几小时,大语料下得出的词向量当然会抓住更多的语法语义规律,从而更准确。

所以我觉得,word2vec的成功,印证了一句话:Less is more.