一.基于Hierarchical Softmax的word2vec模型的缺点
二.Negative SampliNg模型
三.Negative Sampling优化原理
四.Negative Sampling选取负例词原理
五.代码实现
六.总结
一.基于Hierarchical Softmax的word2vec模型的缺点
上篇说了Hierarchical Softmax ,使用霍夫曼树结构代替了传统的神经网络,可以提高模型训练的效率。但是如果基于Hierarchical Softmax的模型中所以词的位置是基于词频放置的霍夫曼树结构,词频越高的词在离根节点越近的叶子节点,词频越低的词在离根节点越远的叶子节点。也就是说当该模型在训练到生僻词时,需要走很深的路径经过更多的节点到达该生僻词的叶子节点位置,这样在训练的过程中,会有更多的θ_i向量要更新。举个例子,如图一所示:
图一
假设规定霍夫曼树编码,往左子树编码为0,右子树编码为1,假设现有一棵霍夫曼树,第一层右子树是一个叶子节点词w_1,该词霍夫曼编码是1,那么在训练过程只需要训练θ_1这个向量更新他只需要一个计算量。假如现在存在一个路径很深的叶子节点在第五层词w_2(根节点在第0层),其霍夫曼编码是010,那么训练到该叶子节点时需要计算并更新3个θ_i参数。这样对于生僻词的训练是很不友好的。
二.Negative SampliNg模型
Negative Sampling是word2vec模型的另一种方法,采用了Negative Sampling(负采样)的方法来求解。
Negative Sampling的网络结构(CBOW方式训练),如图二所示:
图二
Negative Sampling与Hierarchical Softmax最大的不同它放弃了投影层到输出层的霍夫曼树结构,以CBOW模型训练为例,Negative Sampling每次选取一个中心词是w_0,若neg别的词w_i,i=1,2,3…neg(一般neg值很小,不超过10),和他周围上下文共有2c个词,记为context(W)。其中中心词与context(w_0)相关,所以以context(