CS224W摘要16.Advanced Topics on GNNs
Posted oldmao_2000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CS224W摘要16.Advanced Topics on GNNs相关的知识,希望对你有一定的参考价值。
文章目录
CS224W: Machine Learning with Graphs
公式输入请参考: 在线Latex公式
Limitations of GNN
主要两个。
Limitation 1
两个节点有相同邻居或邻域结构,按理其表征应该相同:
但是实际上不一定,因为有些邻域相同但是表征不应该相同,特别是对称图结构,例如:
PS这个图上点虽然不清楚具体是哪里,但是看到NY的街道非常规整,因此也和上面的网格图类似。
这类任务叫:Position-aware tasks
Limitation 2
两个节点不同相同邻居或邻域结构,按理其表征应该不相同:
关于这个在第九讲里面有过证明,GNN的上限是WL test,因此普通GNN无法很好表达环状图形长度:
How to fix them
对于问题1:Create node embeddings based on their positions in the graph.
方法:Position-aware GNNs
对于问题2:Build message passing GNNs that are more expressive than WL test.
方法:Identity-aware GNNs
大概思路:
两个不同的输入,节点、边、图都标记得不一样。希望得到一个模型,获得不同的表征,例如:
Two inputs: nodes
v
1
v_1
v1 and
v
2
v_2
v2.
Different labels: A and B.
Goal: assign different embeddings to nodes
v
1
v_1
v1 and
v
2
v_2
v2.
错误思路
非常intuition,直接每个节点不同独热编码:
得到的计算图当然也不一样,我们也会得到不同的表征:
但是这个方法行不通,因为:
1.scalability差,每个节点需要
O
(
N
)
O(N)
O(N)维度来作为表征,
N
N
N是节点数量,大型图不能这样玩,说好映射到低维空间的哈。
2.没有inductive,这个玩法只能在当前图玩,新点加入全部要重新计算一遍。
Position-aware GNNs
Structure-aware task
节点按他们的结构进行标签,例如两边的B都有两个A做邻居。
我们常见的GNN对于Structure-aware task都适用,包括:GCN,GraphSage,GAT等。因为A和B的计算图明显不一样。
Position-aware task
节点按他们的位置进行标签,常见的有社区检测任务,上图左右两边是不同两个社区,因此他们各自标记也不一样。
普通GNN没法玩,因为上图中的A和B有相同的计算图(不考虑额外特征的情况下,GNN无法区分两个点的表征):
锚点原力解决方案
就好比要比较两个物体的大小,必须要有参照物一样的原理,锚点就是这里的参照物。
随机选择一个节点
s
1
s_1
s1作为锚点,通过两个节点
v
1
,
v
2
v_1,v_2
v1,v2相对锚点
s
1
s_1
s1的位置不同来解决Position-aware task,例如:
当然如果不止选定一个锚点,那么结果会更加鲁棒,相当于从不同坐标系(角度)来看节点位置:
锚点集
下面给出具体的Position-aware task解决方案描述:、
把节点到锚点的距离可以表示为到某个锚点集的距离,例如:下图中的锚点集
s
3
=
{
s
1
,
v
3
}
,
s
i
z
e
=
2
s_3=\\{s_1,v_3\\},size=2
s3={s1,v3},size=2
锚点集可使用更少的点,提供更精确的位置估计。
而且位置信息表征可以用距离来表示:
PS:锚点集尺寸大小选择通常是1.2.4.16这样增长的,然后组合起来,具体选择估计要实验,节点是随机选的(但是应该是相邻的)。
位置信息的处理
通过上面的方法我们了解了如何通过锚点集来获得节点的位置表征,这样做在实际效果上没有什么大问题,但是由于锚点集的变化,会引起节点的位置表征在维度,顺序上的变化,这个缺点会导致位置表征与NN不匹配的情况出现,例如,你训练好了一个吃100维输入的NN,然后锚点集变化,位置表征变成80维,NN就废了。
更加rigorous的解决方案是将通过锚点集得到的位置表征重新处理一下,例如经过一些aggregation处理,使得位置表征的维度固定,顺序无关。具体看相关论文1。
Identity-aware GNNs
这个主要是针对前面讲的structure-aware tasks的,虽然说传统GNN在这个任务上比较擅长,但是还有特殊的情况无法处理,共有三种情况:
Failure in three level
Node level failure
Edge level failure
Graph level failure
解决思路
将要表征的节点上色后展开为计算图:
对于节点级别,可以帮助node classification
边级别可以帮助link prediction
图级别可以帮助graph classification
思路有了,上模型:
Identity-aware GNN2
在表征计算过程中利用节点上色来鉴别不同节点。主要思想是:异质消息传递(看图例貌似是作用在目标节点和其他节点上?)。
正常的GNN会使用相同的消息聚合函数:
ID-GNN使用不同的消息聚合函数,不同函数代表不同颜色。
看下原理,假定两个节点有相同计算图,并有颜色标识(也不能说不同颜色,不同颜色就变成独热编码了,就是加上了标记即可),用了不同的消息聚合函数后,会得到不同的表征:
相对于GNN,ID-GNN可以识别出环形图周期,而GNN不行
ID-GNN-Fast
改进在不需要额外使用异质消息聚合函数,直接使用每一层计算图中目标节点出现的次数作为identity表征:
例如红色的
v
1
v_1
v1节点的identity information就是第一层出现1次,第二层出现0次,以此类推。把这个identity information可以做为节点的augmented feature,这样就可以用在各种不同的GNN模型(GCN, GraphSAGE, GIN)中了。
小结
ID-GNN是第一个基于消息传递机制,并且表达能力比1-WL test还牛的模型,而且还可以用于现有的模型。
DGL和PyG已经有ID-GNN的实现了。
GNN的鲁棒性
这节貌似讲对抗攻击:adversarial attacks
这个在图像上已经有过类似的案例:
在NLP和声音处理领域也有类似案例。
从本质上看,是模型预测出错了,鲁棒性不好。对于GNN而言,也存在类似问题,常见的对抗攻击出现在:
Recommender systems
Social networks
Search engines
GNN对抗攻击类型
分直接攻击和间接攻击。先给出简单定义:
目标节点:
t
∈
V
t\\in V
t∈V,攻击者想要修改标签的节点。
攻击节点(可有多个):
S
⊂
V
S\\subset V
S⊂V,攻击者能修改的节点
直接攻击
攻击节点就是目标节点:
S
=
{
t
}
S=\\{t\\}
S={t}
1.修改目标节点特征
2.1为目标节点添加连接。例如:买粉丝
2.2为目标节点去掉连接。例如:掉粉
间接攻击
目标节点不在攻击节点中:
t
∉
S
t\\notin S
t∈/S
1.修改攻击节点特征,例如劫持目标节点的邻居
2.1为攻击节点添加与目标节点的连接。
2.2去掉攻击节点不相关的边。
GNN对抗攻击
总览
攻击者目标:
Maximize(修改目标节点的标签预测结果)
条
件
:
改
动
最
小
manipulation is small
\\text{Maximize(修改目标节点的标签预测结果)}\\\\ 条件:改动最小\\text{manipulation is small}
Maximize(修改目标节点的标签预测结果)条件:改动最小manipulation is small
改动越大,越容易被发现,成功的攻击往往是比较隐蔽的攻击。
数学表达
以GCN的节点分类任务为例。
原始图的邻接矩阵为
A
A
A,特征矩阵为
X
X
X;
攻击后的邻接矩阵为
A
′
A'
A′,特征矩阵为
X
′
X'
X′。
假定:
(
A
,
X
)
≈
(
A
′
,
X
′
)
(A,X)\\approx(A',X')
(A,X)≈(A′,X′)
也就是攻击后图的改动非常小,并不影响原有图的统计属性,例如:度分布,特征统计等。
记目标节点为:
v
∈
V
v\\in V
v∈V
GCN对于原图的目标函数为:
θ
∗
=
arg min
θ
L
t
r
a
i
n
(
θ
;
A
,
X
)
\\theta^*=\\argmin_\\theta\\mathcal{L}_{train}(\\theta;A,X)
θ∗=θargminLtrain(θ;A,X)
这里的训练过程设置的参数
θ
\\theta
θ是攻击者无法改变的,模型训练好后进行部署,其神经网络参数不可改变,我们攻击者只能改变输入的图结构3。
GCN对于攻击前目标节点
v
v
v的原始预测分类结果为:
c
v
∗
=
arg max
c
f
θ
∗
(
A
,
X
)
v
,
c
c_v^*=\\argmax_cf_{\\theta^*}(A,X)_{v,c}
cv∗=cargmaxfθ∗(A,X)v,c
这里的
c
v
∗
c_v^*
cv∗是攻击目标节点
v
v
v的预测分类对应的最大概率(softmax的结果中的最大值)。
GCN对于被篡改后图的目标函数为: 以上是关于CS224W摘要16.Advanced Topics on GNNs的主要内容,如果未能解决你的问题,请参考以下文章 CS224W摘要10.Knowledge Graph Embeddings
θ
∗
′
=
arg min
θ
L
t
r
a
i
n
(
θ
;
A
′
,
X
′
)
(1)
\\theta^*{'}=\\argmin_\\theta\\mathcal{L}_{train}(\\theta;A',X')\\tag1
θ∗′=θargminLtrain(θ;A′,X′)(1)
GCN对于攻击后目标节点
v
v
v的攻击预测分类结果为:
c
v
∗
′
=
arg max
c
f
θ
∗
′
(
A
′
,
X
′
)
v
,
c
c_v^{*}{'}=\\argmax_cf_{\\theta^{*}{'}}(A',X')_{v,c}
cv∗′=cargmax