cs224w 3-1 Node embedding
引入
我们输入一张图,对图按不同的层级做特征工程,之后进行算法训练,完成预测;
我们大部分的时间都花在了特征工程上面,我们都在想一种能够更简单更简洁表达图的特征的方法?我们能使特征工程这一步自动化吗?
我们将自动学习图上面的特征的一些方法成为 Feature Representation Learning 或 嵌入Embedding;
我们的任务是,将节点映射到embedding的空间中去;
1.两个节点相似那么其embedding也相似;
2.embedding相当于编码了图中的信息;
3.可以将embedding用于很多种下游的预测任务;(节点分类,链接预测,图分类等等等)
举个例子:下图就是将图嵌入到2维的embedding中;
学习节点嵌入 Learning node embedding
1.我们拥有一个图G(V=4)和一个邻接矩阵A;
2.我们的任务是encode节点以便于它们在embedding space中保持相似性(类似空间中的相似性)
similarity需要被定义,embedding是点积(单位向量之间点积代表角度);
我们的重点就是定义
S
i
m
i
l
a
r
i
t
y
Similarity
Similarity并设计出这种编码器
E
N
C
(
u
)
ENC(u)
ENC(u);
3.基于上面所说的,我们要学习节点嵌入,首先,定义Encode(ENC)编码节点到embedding space中;其次,要定义一个相似度函数Similarity;然后,定义Decode (DEC)解码衡量两个embedding之间的相似度,此处的DEC是简单的点积;最后,我们优化参数以便于解码后的相似度与原网络的相似度近似;
注:d一般是64-1000维
4.embedding和one-hot
Z的行数表示embedding的维数,列表示节点的数目;
V是一个one-hot编码;(除了表示它的位置为1,其他都为0)
可以将embedding理解为一个稠密向量,one-hot是稀疏向量(只有一个1,其他都为0);
在我的理解里是用one-hot会导致维数过多(如有一万个节点,1w1w),参数多,很难适用于大型的图上,所以我们将用embedding对它进行降维(1wd);
我们有很多方法来进行这个操作:Deepwalk,Node2vec等等或者一些深度网络GNN来实现;