词嵌入模型效果好不好的关键之一,是用上下文词预测当前词的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里,用的是这样的回归函数:
这里的Ci都是矩阵,不同位置对应不同的矩阵。
word2vec的CBOW用的是(skip-gram我觉得和CBOW基本是等价的,效果也类似,但CBOW的概率解释好些,所以拿它来比较):
可见它移除了变换矩阵Ci和偏移量bw. 实际上我们事后诸葛来看,变换矩阵Ci也的确是多余的,因为 两个词经常一块出现<=>两个词在某方面有相似语义<=>两个向量在某些维度取值类似,那么直接点乘就可以了,用Ci变换一下,反而有可能把本来相似的维度变得不同,从而让学出来的向量不能很好满足“相似词在有些维度上取值相近”的训练效果。
显而易见,移除Ci会极大的提高运算速度,使word2vec在大语料上训练非常可行。两个LBL模型训练语料都是1000w单词左右,而word2vec即使用wikipedia这样>20亿词规模的语料也只需几小时,大语料下得出的词向量当然会抓住更多的语法语义规律,从而更准确。
所以我觉得,word2vec的成功,印证了一句话:Less is more.
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有