动机
在很多深度学习任务中,embedding方法是一个基础且常用的方式,一般产出embeding的方法有几种:
- end2end:直接将sparse特征放到模型中,初始化对应大小的emb空间,通过完整的模型迭代优化emb
- 预训练:通过预先的模型进行训练如word2vec
本文关注于预训练部分的生成embedding的方法,graphSage。
图方法总述
在大规模图学习emb是近期比较火热并且确实比传统的word2vec有效的方式,如:deepWalk,node2vec的randomWalk等
图方法可以分为两种学习方式:
- 直推式学习:上边举得例子属于这种方法,这种方法不能直接对新节点进行泛化。因为它是基于固定的图结构进行学习,如果新加节点需要重新训练。
- 归纳学习:是指一般的学习任务,在位置数据上也有预测能力。GraphSAGE(Graph SAmple and aggreGatE)是一种归纳学习的图方法。
GraphSage
GraphSAGE的核心思路是:
『聚合节点邻居特征的信息』
GraphSage 前向过程-生成节点embedding
例子
下图红色节点是目标要生成emb的节点
agg方法步骤
- 采样:邻居采样降低复杂度,一度和二度采样(一度连接采样3个,二度链接采样5个)
- 聚合:分别聚合一度节点和二度节点得到两个emb;
- 输入网络预测:将聚合后的两个emb输入网络的到目标中心的emb。
代码流程
Algorithm 表示要得到emb的节点特征(可以认为是节点id和它相关的sideinfo)
表示采样聚合深度
步骤简要来说就是将目标节点的按照深度进行聚合得到个emb再concat送入网络中预测得到emb
聚合的方法
指每一层节点的agg方法,主要有几种:
- mean:average pooling
- logit聚合(我自己取的名):就是将每层的每个节点的emb取平均后走一个加权的logit
- LSTM
- 不同emb的维度分块加权聚合:里有emb的前10维表示类别,后10维表示品牌,name这两组group可以用不同的权重和pooling方法聚合。
GraphSAGE的损失函数
可以分为有监督和无监督。
基于图的无监督
无监督主要根据图的结构学习,希望节点u与邻居v的embedding相似,与没有交集的不相似
无监督loss
- 为节点u通过GraphSAGE生成的embedding。
- 节点v是节点u随机游走访达“邻居”。
- 表示负采样:节点是从节点u的负采样分布采样的,Q为采样样本数。
- embedding之间相似度通过向量点积计算得到
基于图的有监督
无监督损失函数的设定来学习节点embedding 可以供下游多个任务使用,若仅使用在特定某个任务上,则可以替代上述损失函数符合特定任务目标,如交叉熵。
反向传播-参数学习过程
与普通的神经网络一样用的Adam
参数和比较见附录的链接
网友评论