文章目录
0、基本介绍
- 作者:Xingtong Yu1*, Yuan Fang2†, Zemin Liu3, Xinming Zhang1†
- 会议:2024-AAAI
- 文章链接:HGPROMPT:Bridging Homogeneous and Heterogeneous Graphs for Few-shot Prompt Learning
- 代码链接:HGPROMPT:Bridging Homogeneous and Heterogeneous Graphs for Few-shot Prompt Learning
What?Why?How?
1、研究动机
提示学习作为一个有前景的方向,优化了微调的诟病——预训练模型和下游任务之间存在的差距,特别是在少数镜头情形中,不需要完全微调预训练模型,就可以取得不错的性能。但是现阶段提示学习主要解决的是同质图问题,忽视了现实生活中普遍存在的异质图问题。
本文提出HGPROMPT,一种基于少样本提示的框架,通过双模板设计,不仅实现了预训练任务和下游任务的统一(任务目标统一为链接预测),还统一了同质图和异质图(将异质图转化为多个同质图)。
2、创新点
将提示微调引入异质图情形。使用Graph Template 将异质图转化为同质子图集合,这样异质图提示微调就可以转化为同质图提示微调。对多个同质子图聚合阶段采用基于提示聚合方法,区分不同异质性的重要性。
其余部分基于GraphPrompt提出的方法,可以浏览我的这篇论文阅读笔记GraphPrompt(这两篇论文出自同一个实验室)。
3、准备
3.1、异质图和同质图
异质图,异质信息网络,表示为 G = ( V , E , R , ϕ , φ ) G=(V,E,R,\phi,\varphi) G=(V,E,R,ϕ,φ), V V V是结点集合, E E E是边集合,结点类型映射函数 ϕ : V → A \phi:V \rightarrow A ϕ:V→A和边类型映射函数: φ : E → R \varphi: E\rightarrow R φ:E→R,同时 ∣ A ∣ + ∣ R ∣ > 2 |A|+|R| >2 ∣A∣+∣R∣>2,我们假设结点特征矩阵为 X ∈ R ∣ V ∣ × d \mathbf{X} \in \mathbb{R}^{|V|\times d} X∈R∣V∣×d。同质图遵循相同的定义,只是 ∣ A ∣ = ∣ R ∣ = 1 |A| = |R| =1 ∣A∣=∣R∣=1,也就是说同质图中只存在一种类型的结点和边。
3.2、问题定义
3.2.1、设计的目标
- 同质图或异质图都可以以链接预测任务目标进行预训练。
- 对下游任务,处理异质图上的节点分类和图分类,目标是预测每个任务的测试集中未知类别实例的标签。
3.2.2、图示HGPROMPT
(a)Target scenarios
给定下游任务中的异构图,我们可以利用可以在异构图或同构图上训练的预训练模型。
(b)Dual-template
统一的图形模板,将异构图形转换为多个同构子图形
(c)Dual-prompt
特征提示修改子图READOUT操作的输入,不同的任务可能关注不同的要素。
异质提示修改从输入异质性图转换的多个同质子图的聚合权重,这是由于不同的任务关注的异质性不同。
4、模型
模型整体框架如下
给一些同质或异质图,我们的目标是使用链接预测来预训练GNN模型,因为链接在所有图中都是非常容易获得的,不需要进行标注。
同时,作者假设在同构图形上进行预训练的更一般的情形。统一预训练和下游任务阶段,出双模板设计方案:(1)graph template 将每个异构图转换为多个同构图;(2)task template应用任务模板将各种任务转换为公共子图相似性预测的链接预测任务。
在下游任务阶段,进一步提出了一个dual-prompt方案,包括一个feature prompt和heterogeneity prompt桥接跨任务的特征变化和异质性差异。
4.1、双模板统一
4.1.1、Graph template
通过图模板统一输入图异质性——将一个异质图
G
=
(
V
,
E
,
R
,
ϕ
,
φ
)
G=(V,E,R,\phi,\varphi)
G=(V,E,R,ϕ,φ)基于结点的类型转化为多个同质子图。具体来说,给定一个结点类型
i
∈
A
i\in A
i∈A从
G
G
G中提取一个同质子图
G
i
=
(
V
i
,
E
i
)
G^i=(V^i,E^i)
Gi=(Vi,Ei):
V
i
=
{
v
∈
V
∣
ϕ
(
v
)
=
i
}
;
V^i = \{v\in V|\phi(v)=i\};
Vi={v∈V∣ϕ(v)=i};
E
i
=
{
(
a
,
b
)
∈
E
∣
a
∈
V
i
∩
b
∈
V
i
}
E^i=\{(a,b)\in E|a\in V^i \cap b\in V^i\}
Ei={(a,b)∈E∣a∈Vi∩b∈Vi}
通过这种方式,异质图就转化为同质图集合
{
G
i
:
i
∈
A
}
\{G^i: i \in A\}
{Gi:i∈A},每一个子图都保留了异质性的一个方面,为了保持不同类型之间的相互作用,我们进一步考虑同质图
G
0
=
(
V
,
E
)
G^0=(V,E)
G0=(V,E),也就是他保留了
G
G
G的全部拓扑结构,但不区分类型。
将异质图转换为
∣
A
∣
+
1
|A|+1
∣A∣+1个同质图的过程称为应用图模板,表示为
G
T
:
\mathcal{GT}:
GT:
G
T
(
G
)
=
G
0
∪
{
G
i
:
i
∈
A
}
\mathcal{GT}(G)={G^0}\cup\{G^i: i \in A\}
GT(G)=G0∪{Gi:i∈A}
总而言之,图模板将下游异构图统一为与可以在预训练中使用的同构图相同的格式。当预训练中存在异构图时,也可以将相同的图模板应用于它们。
4.1.2、Task template
这里的Task template和GraphPrompt中统一的任务模板别无二样(本篇和GraphPrompt都是出自同一个组),具体可以参考我的博客GraphPrompt中的3.1、Unification Framework
为了统一不同的任务,我们主要遵循GraphPrompt通过将不同的任务实例转换为子图,并利用预测子图相似度的通用任务模板。
S
v
S_v
Sv定义为链接预测或者是结点分类中结点
v
v
v的上下文子图(图分类,
S
G
=
G
S^G=G
SG=G),
s
v
s_v
sv定义为子图
S
v
S_v
Sv的嵌入向量。如果
S
v
S_v
Sv是同构图,可以直接readout。如果
S
v
S_v
Sv是异构图,用Graph template获得一组同质图
G
T
(
S
v
)
\mathcal{GT}(S_v)
GT(Sv),对这些同质图执行单独的readout,然后再聚和成
s
v
s_v
sv:
s
v
=
A
G
G
(
{
READOU
(
S
v
i
)
∣
S
v
i
∈
G
T
(
S
v
)
}
)
\mathbf{s}_{v}=\mathrm{AGG}(\{\text{READOU}(S_{v}^{i})\mid S_{v}^{i}\in\mathcal{GT}(S_{v})\})
sv=AGG({READOU(Svi)∣Svi∈GT(Sv)})其中,子图
S
S
S的READOUT层被进一步定义为
S
S
S中的节点的特征上的聚合:
READOU
(
S
)
=
AGG
2
(
{
h
v
:
v
∈
V
(
S
)
}
)
\text{READOU}(S)=\operatorname{AGG}_2(\{\mathbf{h}_v:v\in V(S)\})
READOU(S)=AGG2({hv:v∈V(S)})
其中
h
v
h_v
hv表示节点
v
v
v在
READOUT
\text{READOUT}
READOUT层之前的嵌入,且
V
(
S
)
V(S)
V(S)是
S
S
S中的节点的集合。
然后,这三个任务可以重新表述为预测子图之间的相似性,具体详见GraphPrompt。
4.2、预训练任务
使用LP任务进行预训练,利用大规模图数据中丰富的链接进行自我监督训练。考虑一个三元组(0,1,2),其中(0,1)是有边链接,而(0,2)没有边链接。它可以用于基于Task template引导子图相似度的计算
sim
(
s
0
,
s
1
)
>
sim
(
s
0
,
s
2
)
\text{sim}(s_0,s_1)> \text{sim}(s_0,s_2)
sim(s0,s1)>sim(s0,s2)。一般来说,我们从预训练图中收集许多这样的三元组作为自我监督数据
D
p
r
e
\mathcal{D}_{pre}
Dpre。然后,预训练损失定义如下:
L
p
r
e
(
Θ
)
−
∑
(
v
,
a
,
b
)
∈
D
p
r
e
ln
exp
(
1
τ
sim
(
s
v
,
s
a
)
)
∑
u
∈
{
a
,
b
}
exp
(
1
τ
sim
(
s
v
,
s
u
)
)
\mathcal{L}_{pre}(\Theta)-\sum_{(v,a,b)\in\mathcal{D}_{pre}}\ln\frac{\exp\left(\frac{1}{\tau}\text{sim}(\mathbf{s}_v,\mathbf{s}_a)\right)}{\sum_{u\in\{a,b\}}\exp\left(\frac{1}{\tau}\text{sim}(\mathbf{s}_v,\mathbf{s}_u)\right)}
Lpre(Θ)−(v,a,b)∈Dpre∑ln∑u∈{a,b}exp(τ1sim(sv,su))exp(τ1sim(sv,sa))
其中τ是温度超参数, Θ \Theta Θ表示为GNN/HGNN的模型权重。
4.3、下游任务的双重提示
不同的任务关注输入图中的不同特征或异质性的不同方面,提出了双重提示:Feature prompt和Heterogeneity prompt.
4.3.1、feature prompt
这里的特征提示和GraphPrompt模型保持一致。
feature prompt 使不同的下游任务能够专注于不同的特征。具体来说,
P
feat
\text{P}^{\text{feat}}
Pfeat是一个指定任务的可学习向量,用作任务的特征提示。在提示下,子图
S
S
S的READOUT层变为
READOUT
(
{
p
feat
⊙
h
v
∣
v
∈
V
(
S
)
}
)
\operatorname{READOUT}(\{\mathbf{p}^\text{feat}\odot\mathbf{h}_v\mid v\in V(S)\})
READOUT({pfeat⊙hv∣v∈V(S)})其中,
⊙
\odot
⊙表示逐元素乘法。换句话说,提示特征基于任务的特定需求来修改特征重要性。
4.3.2、Heterogeneity prompt
在下游任务处理异质子图
S
S
S时,应用Graph template 分为不同的同质子图,其涉及到额外的层聚合每个同质子图的各个READOUT层的输出。由于存在异质性的各个方面,为了区分不同任务中方面的重要性,提出了一个Heterogeneity prompt来修改聚合层的输入。
具体来说
p
h
e
t
=
(
p
0
h
e
t
,
p
1
h
e
t
,
…
,
p
∣
A
∣
h
e
t
)
\mathbf{p}^{\mathrm{het}}=(p_{0}^{\mathrm{het}},p_{1}^{\mathrm{het}},\ldots,p_{|A|}^{\mathrm{het}})
phet=(p0het,p1het,…,p∣A∣het)定义为指定任务的可学习向量,作为表示特定任务的异质性提示。在提示下,对于某个子图
S
S
S,应用图模板后的聚合层变为
A
G
G
(
{
(
1
+
p
i
h
e
t
)
⊙
R
E
A
D
O
U
T
(
S
i
)
∣
S
i
∈
G
T
(
S
)
}
)
\mathrm{AGG}(\{(1+p_i^{\mathsf{het}})\odot\mathrm{READOUT}(S^i)\mid S^i\in\mathcal{GT}(S)\})
AGG({(1+pihet)⊙READOUT(Si)∣Si∈GT(S)})
这里给出了子图
S
S
S的嵌入向量
s
s
s。因此,提示能够基于任务性质来调整由每个子图
S
i
∈
G
T
(
S
)
S^i \in \mathcal{GT}(S)
Si∈GT(S)承载的每个方面的重要性。
4.3.3、提示微调
为了调整下游任务的dual-prompt,采用了基于子图相似性的损失,和预训练一样。考虑到具有标签的训练集合 D d o w n = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … } \mathcal{D}_{down}=\{(x_1,y_1),(x_2,y_2),\dots\} Ddown={(x1,y1),(x2,y2),…}的结点分类和图分类任务, x i x_i xi是一个结点或图, y i ∈ Y y_i\in Y yi∈Y是 x i x_i xi的类标签。提示微调损失函数定义为
L
d
o
w
n
(
p
feat
,
p
het
)
−
∑
(
x
i
,
y
i
)
∈
D
d
o
w
n
ln
exp
(
1
τ
s
i
m
(
s
x
i
,
s
~
y
i
)
)
∑
c
∈
Y
exp
(
1
τ
s
i
m
(
s
x
i
,
s
~
c
)
)
\mathcal{L}_{down}(\mathrm{p}^{\text{feat}},\mathrm{p}^{\text{het}})-\sum_{(x_{i},y_{i})\in\mathcal{D}_{\mathrm{down}}}\ln\frac{\exp\left(\frac{1}{\tau}\mathrm{sim}(\mathbf{s}_{x_{i}},\tilde{\mathbf{s}}_{y_{i}})\right)}{\sum_{c\in Y}\exp\left(\frac{1}{\tau}\mathrm{sim}(\mathbf{s}_{x_{i}},\tilde{\mathbf{s}}_{c})\right)}
Ldown(pfeat,phet)−(xi,yi)∈Ddown∑ln∑c∈Yexp(τ1sim(sxi,s~c))exp(τ1sim(sxi,s~yi))
子图和类原型嵌入
s
x
i
s_{x_i}
sxi和
s
~
c
\tilde{s}_c
s~c是基于提示向量
p
feat
,
p
het
\mathrm{p}^{\text{feat}},\mathrm{p}^{\text{het}}
pfeat,phet生成的。在提示微调阶段,仅调整提示向量,而预先训练的权重
Θ
\Theta
Θ被冻结而没有进行微调。