二阶相似性的目标函数(6)计算复杂度太高,当计算条件概率

需要求所有其余节点的和,为了解决这个问题我们采用负采样的方法。根据边的噪音分布选取几个负样本。具体来说就是将目标函数变为如下

(7)其中第一部分为选中的边,第二部分为负样本,K为负样本的数量。我们将Pn(v)

,其中dv是节点v的出度之和

 

对于目标函数(3)

存在一些平凡解:

(不知道为啥) 我们仍然可以用负采样的方法 只不过把

换成

我们采用异步随机梯度下降的算法来优化等式(7)如果采样的边(i,j)对于节点i的嵌入向量ui的梯度为

注意梯度和边的权重相乘,这就有一个问题:权重的变化会很大,如果在词的共现网络中,一些词共现次数很多,而一些词只共现过几次,就会出现很大的梯度差异,因而学习率也无法确定。如果我们根据较小的权重选一个较大的学习率,那么在大的权重上面相乘就会造成梯度爆炸,如果我们根据较大的权重而选择了较小的学习率,那对于小的权重的梯度就会变得较小。

 

 

通过边采样进行优化

如果所有边的权重都是一样的,那么我们选择学习率就没有上面的问题了,一个简单的方法就是将加权的边展开成w个二元边,但是这样做同时也增加了占用的内存,特别是权重特别大的时候。为了解决这个问题我们还是对边进行采样,将采样的边展开成二元边。采样的概率为原边权重的比例。通过这种边采样的方法,所有边的目标函数是相同的。这个问题就变成了如何通过他们的权重对边进行采样。

W=(w1,w2,....,w|e|)表示变得权重序列,可以计算出总的权重Wsum,然后在[0,Wsum]之间随机去一个值 ,看它落到哪个区间 [wj j=0到i-1的和,wj j=0到i的和)。这种方法的时间复杂度为O(|E|),当E很大时消耗的时间很大。我们根据边的权重来采样通过alias table 方法,当进行重复采样时时间复杂度只为O(1)。

在alias table中进行边采样需要的时间是个常数,负采样的时间复杂度O(d(K+1)) K是负采样的数量,因此总的复杂度O(dK)。实际上,我们发现用于优化的步骤数通常与边的数量成正比。因此LINE的复杂度O(dKE)与E为线性关系并且不依赖与V。边采样的方法提高了梯度下降的效率。