元路径随机游走
- 如果忽略节点类型进行随机游走,结果是会有偏的,数目较多的节点类型出现的概率更大
- 元路径随机游走:定义好一个游走类型路径,在上图中,路径可以定为APA,APVPA等,然后按照这个路径游走,即下一个节点只采样符合要求的节点类型:元路径通常为对称的。
- 优点:这种元路径随机游走策略可以确保不同类型的节点语义关系被恰当的并入skip-gram模型中
同质图下训练embedding
给定节点v
,计算它的邻居节点c
出现的概率,并使其最大化,公式如下图所示:
这个邻居可以是一阶或者二阶等
异构图下训练embedding
同样是给定节点v
,计算其邻居节点c
出现的概率,公式如下图所示:
但是该节点c
的选取必须在特定元路径下
比如给定下图元路径MIT,a1,p1,那么给定节点a1,就可以计算节点MIT出现的概率和p1出现的概率并使其最大化
游走概率计算
如下公式(3),计算给定节点vti
,求游走到节点vi+1
的概率
首先,第三个表示,vti和vi+1不相邻,那游走的概率就是0,第二个表示,两个节点相邻,但是vi+1不是元路径所规定的节点类别,那游走概率也是零,第一个就是即相邻又是元路径规定的节点类别,那一定是可以游走的,游走的概率就是所有满足此条件的节点的总数分之一。
举例:
下图中最后一个图,vi
相邻的节点有四个,其中3个绿色的是满足元路径规定的节点类型的,但是最后一个橙色的不满足,所以游走到vi+1的概率是1/3
按照定义的meta-path来游走,游走完就形成了语料,然后根据skip-gram就可以训练出每个节点的embedding
skip-gram
给定如下图的一个语料,假设窗口大小为5(给定节点左右两个节点出现的概率),当给定节点The的时候,计算quick和brown出现的概率,同样,在给定quick的时候,计算The,brown和fox出现的概率,以此类推。
subsampling
比如上面在训练的时候(quick, the): 没有学习到quick的任何上下文信息,因为the是没什么用的副词,这种语料对于我们来说也没有任何上下文相关性
所以提出subsampling就是:有一定的概率删掉这个词,概率和单词出现的频率有关
计算公式如下:
其中z(wi)
表示单词wi出现的概率,比如语料内有一亿个词,单词wi出现1000次,该z(wi)=1000/100000000=1e-6
P(wi)就是计算保留下单词 i
的概率
Negarive Sampling
通过subsampling就确定了用来训练的语料,下面就根据语料来计算word embedding
比如说给定(the, quick) 那the就是输入,quick就是label
如果使用one-hot编码,那根据语料的大小N,每个单词都可以表示成长度为N的向量,只有自己所在位置是1,其他位置都是0。
这样就会有一个问题,就是计算量非常大,比如下图的神经网络,在hidden layer和output layer之间计算量非常大
所以提出了一个负采样的方式进行训练,负采样就是在hidden layer到output layer的时候,保留output layer 值为1的神经元,并随机采样几个输出神经元作为输出,比如下图,采样输出为4个神经元
Selecting Negative Samples
出现频率越高的单词,被选中的几率就越大
被选中的概率是单词wi出现的概率除以语料所有单词出现的概率,作者发现在对每个语料出现的概率求一个3/4次方的效果最好