CS224W摘要03.Node Embedding
Posted oldmao_2000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CS224W摘要03.Node Embedding相关的知识,希望对你有一定的参考价值。
文章目录
CS224W: Machine Learning with Graphs
公式输入请参考: 在线Latex公式
上一节讲的是传统的图机器学习如何进行特征工程的(node-level, edge-level, graph-level features)
而这节课的目标是自动学习节点表征。
Encoder 和Decoder框架
基本的notation很简单:
V是节点集合,A是邻接矩阵,这里不为节点进行特征工程,或者添加额外信息。
Goal is to encode nodes so that similarity in the embedding space (e.g., dot product) approximates similarity in the graph.
上图显示了Encoder,Decoder就是相似度计算部分:
D
E
C
(
z
v
T
z
u
)
DEC(z_v^Tz_u)
DEC(zvTzu)
Encoder小例子
这里使用最简单的线性变换作为encoding方法为例子:
E
N
C
(
v
)
=
z
v
=
Z
⋅
v
ENC(v)=z_v=Z\\cdot v
ENC(v)=zv=Z⋅v
Z就是参数矩阵维度是
d
×
∣
V
∣
d\\times |V|
d×∣V∣;
v
v
v是节点的独热编码。
当然还有别的方法:DeepWalk, node2vec
Note
This is unsupervised/self-supervised way of learning node embeddings.
These embeddings are task independent. They are not trained for a specific task but can be
used for any task.
随机游走
notation
目标是要找到节点
u
u
u对应的表征
z
u
z_u
zu
P
(
v
∣
z
u
)
P(v|z_u)
P(v∣zu)从节点
u
u
u游走到节点
v
v
v的概率
z
u
T
z
v
z_u^Tz_v
zuTzv表示u和v同时出现在随机游走序列的概率
特点
1.即可获得邻居的local信息,也可以获取多跳邻居信息
Idea: if random walk starting from node 𝒖 visits 𝒗 with high probability, 𝒖 and 𝒗 are similar (high-order multi-hop information)
2.无需考虑节点对的采样,只用考虑随机游走策略
R
R
R,更加高效
Efficiency: Do not need to consider all node pairs when training; only need to consider pairs that co-occur on random walks.
算法描述
给定图
G
=
(
V
,
E
)
G=(V,E)
G=(V,E)
目标是学习到一种映射
f
:
u
→
R
d
f:u\\rightarrow\\R^d
f:u→Rd,记为
f
(
u
)
=
z
u
f(u)=z_u
f(u)=zu
目标最大化对数似然函数为:
max
f
∑
u
∈
V
log
P
(
N
R
(
u
)
∣
z
u
)
\\underset{f}{\\max}\\sum_{u\\in V}\\log P(N_R(u)|z_u)
fmaxu∈V∑logP(NR(u)∣zu)
N
R
(
u
)
N_R(u)
NR(u)表示用随机游走策略
R
R
R对节点u进行遍历得到的邻居节点
我们希望学习到节点u的特征表达,特征表达可以预测其随机游走的邻居
上面的最大化对数似然函数可以写成:
L
=
∑
u
∈
V
∑
v
∈
N
R
(
u
)
−
log
(
P
(
v
∣
z
u
)
)
\\mathcal{L}=\\sum_{u\\in V}\\sum_{v\\in N_R(u)}-\\log(P(v|z_u))
L=u∈V∑v∈NR(u)∑−log(P(v∣zu))
上面加了负号求最小,其中
P
(
v
∣
z
u
)
P(v|z_u)
P(v∣zu)可以用softmax来求:
P
(
v
∣
z
u
)
=
exp
(
z
u
T
z
v
)
∑
n
∈
V
exp
(
z
u
T
z
n
)
P(v|z_u)=\\cfrac{\\exp(z_u^Tz_v)}{\\sum_{n\\in V}\\exp(z_u^Tz_n)}
P(v∣zu)=∑n∈Vexp(zuTzn)exp(zuTzv)
Optimizing random walk embeddings = Finding embeddings
z
u
z_u
zu that minimize
L
\\mathcal{L}
L
直接算计算量很大,
∑
u
∈
V
,
∑
n
∈
V
\\sum_{u\\in V},\\sum_{n\\in V}
∑u∈V,∑n∈V两部分都是对所有节点进行操作,使得复杂度高达
O
(
∣
V
∣
2
)
O(|V|^2)
O(∣V∣2)
负采样优化
这里主要针对黄色部分的进行优化,使得对所有节点的操作变成对某几个节点操作(k个采样的负样本):
log
exp
(
z
u
T
z
v
)
∑
n
∈
V
exp
(
z
u
T
z
n
)
≈
log
(
σ
(
z
u
T
z
v
)
)
−
∑
i
=
1
k
log
(
σ
(
z
u
T
z
n
i
)
)
,
n
i
∼
P
V
\\log\\cfrac{\\exp(z_u^Tz_v)}{\\sum_{n\\in V}\\exp(z_u^Tz_n)}\\approx\\log\\left(\\sigma(z_u^Tz_v) \\right)-\\sum_{i=1}^k\\log\\left(\\sigma(z_u^Tz_{ni}) \\right),n_i\\sim P_V
log∑n∈Vexp(zuTzn)exp(zuTzv)≈log(σ(zuTzv))−i=1∑klog(σ(zuTzni)),ni∼PV
负样本的采样不是随机的,而是根据节点的度作为采样概率的依据进行采样。度越大,被采样的概率越大。通常采样的负样本个数为:
k
=
5
∼
20
k=5\\sim20
k=5∼20
SGD
不解释,太多教程了
小结
1.Run short fixed-length random walks starting from each node on the graph
2. For each node 𝑢 collect
𝑁
R
(
𝑢
)
𝑁_R(𝑢)
NR(u), the multiset of nodes visited on random walks starting from 𝑢
3. Optimize embeddings using Stochastic Gradient Descent:
Node2Vec
对随机游走策略进行优化,定义了二阶有偏随机游走的方式来生成 𝑁 R ( 𝑢 ) 𝑁_R(𝑢) N以上是关于CS224W摘要03.Node Embedding的主要内容,如果未能解决你的问题,请参考以下文章
CS224W摘要10.Knowledge Graph Embeddings
CS224W摘要05.Message passin and Node classification