【论文阅读】One For All: Toward Training One Graph Model for All Classification Tasks
目录
- 0、基本信息
- 1、研究动机
- 2、创新点——One For All :unique features
- 3、准备
- 4、具体实现
- 4.1、用TAGs统一来自不同领域的图数据
- 4.2、用NOI(NODES-OF-INTEREST)统一不同图任务
- 4.2.1、NOI子图
- 4.2.2、NOI提示结点
- 4.3、用于图的上下文学习(ICL)的图提示范式(GPP)
- 5、训练和评估过程
- 未完待续
0、基本信息
- 会议:2024-ICLR-UNDER_REVIEW
- 评分:6,6,6,10
- 作者:Anonymous authors
- 文章链接:ONE FOR ALL: TOWARDS TRAINING ONE GRAPHMODEL FOR ALL CLASSIFICATION TASKS
- 代码链接:ONE FOR ALL: TOWARDS TRAINING ONE GRAPHMODEL FOR ALL CLASSIFICATION TASKS
1、研究动机
设计一个能够解决多个任务的模型是人工智能长期发展的一个目标。最近,LLMs因其强大的学习能力,在执行跨领域的下游任务上取巨大的成功,但是在图领域上还没有一个统一的模型解决图结构数据上不同的任务。
面临的挑战——
(1)来自不同领域的图数据集通常在特征表示上不同。
具体来说,来自不同领域的图数据特征有不同的维度,大小,分布和语义意义,几乎不可能使用一个相同的模型直接学习这些数据的表征。
(2)图领域中不同的下游任务涉及图的不同的部分,以及需要指定任务的知识和方法。
图上任务可以分为,结点级,边级和图级的任务,图神经网络在不同类任务上成功背后的原因是不同的。结点级任务——节点特征恰当的平滑;边级or图级任务——编码局部结构很重要。一个优秀的结点级任务模型不一定能够在边级or图级任务上表现优秀。
总之,现有的模型不能够有效地学习不同的任务。
(3)如何设计一个统一的方法执行跨领域和上下文学习的图任务模型仍然是不清楚的
针对上述挑战,作者提出一个通用的解决方案——one for all(OFA),用于建立和训练具有跨领域上下文学习能力的模型。
2、创新点——One For All :unique features
(1)文本属性图(TAG)
OFA使用文本属性图(TAGs)将来自不同领域的图数据整合到一个大的TAG数据集,并利用LLMs的能力从所有领域中共同学习。
9个常见的来自不同领域的数据集,用文本描述图中所有的结点和边,然后使用单个LLM将来自不同领域的文本嵌入到同一个嵌入空间。
(2)NOI子图 和NOI提示结点
NOI(nodes-of-interest)子图 和NOI提示结点,不仅统一了不同类型的图任务,而且提高了基础模型学习图中结构信息的能力。
(3)图提示范式 (GPP)
图提示范式 (graph prompting paradigm,GPP)——插入一个提示图到原始的输入图中的特定任务的方式。提示图中的节点包含关于下游任务的所有相关信息(由文本描述,并由与输入图相同的LLM编码器编码)。然后,修改后的图形成为基础模型的实际输入。
因此,OFA是自适应的,根据提示图以执行不同的任务。训练后,用户可以用自然文本描述任何图形,并应用OFA管道来预测可能看不见的类。
3、准备
文本属性图(TAGs)
将TAG定义为一个图,图中的每个节点和每条边都与一个文本句子相关联。
TAG: G = ( V , E , R ) \mathcal{G}=(\mathcal{V},\mathcal{E},\mathcal{R}) G=(V,E,R), V = { v 1 , … , v ∣ V ∣ } \mathcal{V}=\{v_1,\dots ,v_{|\mathcal{V}|}\} V={v1,…,v∣V∣}是结点集合, R = { r 1 , … , r R } \mathcal{R}=\{r_1,\dots,r_{\mathcal{R}}\} R={r1,…,rR}是关系集合, E = { e 1 , … , e ∣ E ∣ } \mathcal{E}=\{e_1,\dots,e_{|\mathcal{E}|}\} E={e1,…,e∣E∣}是边集合。一条边 e i j = ( v i , r , v j ) ∈ E e_{ij}=(v_i,r,v_j)\in \mathcal{E} eij=(vi,r,vj)∈E由源结点 v i ∈ V v_i\in \mathcal{V} vi∈V,关系 r ∈ R r\in \mathcal{R} r∈R和目的结点 v j ∈ V v_j\in \mathcal{V} vj∈V组成。
s v i s_{v_i} svi定义为与结点 v i v_i vi相关的文本句子, s e i j s_{e_{ij}} seij表示与边 e i j ∈ E e_{ij}\in \mathcal{E} eij∈E相关联的文本句子。
N k ( v ) \mathcal{N}_k(v) Nk(v)定义为结点 v v v的 k k k跳内所有邻居结点的集合。
学习情景——分类问题
定义一个数据集 D = { ( d i , y i ) } 1 D \mathcal{D}=\{(d_i,y_i)\}_1^D D={(di,yi)}1D, D D D为数据集中数据的数量, d i d_i di是一个数据样本, y i ∈ Y y_i\in\mathcal{Y} yi∈Y是 d i d_i di的标签, Y \mathcal{Y} Y是所有数据标签的集合。将数据集划分为训练集,验证集和测试集,即 D t r a i n , D v a l , D t e s t \mathcal{D}_{train},\mathcal{D}_{val},\mathcal{D}_{test} Dtrain,Dval,Dtest.对应的标签集合为 Y t r a i n , Y v a l , Y t e s t \mathcal{Y}_{train},\mathcal{Y}_{val},\mathcal{Y}_{test} Ytrain,Yval,Ytest.
关注三种学习情景
(1)监督学习
该模型将在 D t r a i n D_{train} Dtrain上进行训练,并在 D v a l D_{val} Dval上进行评估,来选择最好的模型。最后,使用 D t e s t D_{test} Dtest对模型的性能进行评估。验证集和测试集数据中的所有标签都在训练过程中已知,即 Y t r a i n = Y t e s t \mathcal{Y}_{train} = \mathcal{Y}_{test} Ytrain=Ytest(???)
(2)少样本学习
少样本学习的训练和评估过程与监督学习类似,但是,在少样本学习中, Y t r a i n ∩ Y t e s t = ∅ \mathcal{Y}_{train}\cap \mathcal{Y}_{test}=\emptyset Ytrain∩Ytest=∅.
少样本学习通常处理 N-way K-shot任务,其中,使用 N ∗ K N*K N∗K数据 { ( d i , y i ) } 1 N ∗ K \{(d_i,y_i)\}^{N*K}_1 {(di,yi)}1N∗K作为支持样本,使得每个不同的类都提供有 K K K个标记数据,其中, N N N是不同类的总数。接下来,给定这些支持样本,模型需要将查询集合 Q = { d i } 1 n \mathcal{Q} = \{d_i\}^n_1 Q={di}1n中的数据分类到这 N N N个类中。
(3)零样本学习
这可以被看作是少数学习的特殊情况。在零次学习中,对于任何 N-way K-shot任务,将 K = 0 K = 0 K=0,因为没有支持样本。
zero-shot learning 是机器学习中的一种策略,其目标是使模型能够理解并识别它在训练阶段未曾遇到过的类别。
few-shot learning旨在在只给出非常少量已知类别的标注数据时,通过学习如何利用这些数据来泛化到未知类别上,完成分类任务。
one-shot learning在只给出单个样本时,通过学习如何利用这个样本来泛化到未知类别上,完成分类任务。
(4)语境学习
语境学习是指通过给预先训练好的语言模型提供特定任务的例子或语境,对其进行微调的过程。这种方法利用了预先训练的模型的知识和泛化能力,并对其进行调整,以便更好地执行手头的具体任务。
对于语言模型,这主要是通过提示机制来实现的。预训练的LLM模型将由提示文本 C C C提供的提示作为输入,然后,通过生成以C为条件的句子的其余部分来给出任务的答案。
在语境学习过程中,模型可以通过:
- 使用语义先验知识,在给定的上下文样例下预测标签
- 从给定的样例里学习输入-标签映射
ICL主要思路是,给出少量的标注样本,设计任务相关的指令形成提示模板,用于指导待测试样本生成相应的结果。
4、具体实现
overview
(1)来自不同领域的图数据聚合到具有相同形式的文本属性图TAG,并使用单个LLM模型将所有的TAGs嵌入到相同的空间中;
(2)通过NOI子图和NOI提示结点统一图域中不同类型的任务,这样图模型能够自动的考虑到任务相关的信息;
(3)图提示范式(GPP)将任务信息有机地注入到图数据中,从而实现上下文学习。
下面来分别介绍:
4.1、用TAGs统一来自不同领域的图数据
尽管不同领域图的属性不同,但所有属性都可以用自然语言来描述。这种优势在于,通过使用文本来描述节点和边,我们可以应用LLM将不同的图形属性编码到同一空间中。
用于任何结点和边文本特征生成的标准化形式:
给定一个文本属性图 G \mathcal{G} G,文本特征 s v i s_{v_i} svi总是从文本特征结点(Feature node)开始,表示该结点是具有原始图特征的输入结点,而不是提示结点。接下来是特征类型的文本描述(feature description)和特征的内容(feature content),如果一个结点具有多个特征,则将他们通过分号连接起来。
边 e i j e_{ij} eij的文本特征 s e i j s_{e_{ij}} seij的构造是类似的,不过,文本的开始是特征边:
附录B
将LLM作为编码器,将所有的文本特征编码为一个固定长度的向量作为结点or边的最终输入特征。
也就是说,对于结点 v i v_i vi和边 e i j e_{ij} eij,他们的向量表征为:
x i = L L M ( s v i ) x_i=\mathbf{LLM}(s_{v_i}) xi=LLM(svi)
和
x i j = L L M ( s e i j ) x_{ij}=\mathbf{LLM}(s_{e_{ij}}) xij=LLM(seij)
因为LLM编码的输入特征包含域信息,所以后续的工作可以捕获和利用该信息。通常,任何类型的LLM都可以用作编码器,并且更强的LLM可能会产生更好的整体性能。在OFA中,为了简单起见,本文采用了句子转换器Transformer(Reimers & Gurevych,2019),它具有很强的学习句子嵌入的能力。
4.2、用NOI(NODES-OF-INTEREST)统一不同图任务
Nodes-of-Interest(NOI)是指任务中的一组目标结点,表示为 T \mathcal{T} T。NOI不局限于列出任务级别,其大小取决于预测目标。
4.2.1、NOI子图
NOI子图为由NOI结点组成的子图。
定义: S h ( v ) = { V v h , E v h , R v h } S_h(v)=\{\mathcal{V}_v^h,\mathcal{E}_v^h,\mathcal{R}_v^h\} Sh(v)={Vvh,Evh,Rvh}为结点 v v v周围 h h h跳ego-subgraphs,包含结点 v v v的 h h h跳邻居结点和所有互连的边。NOI子图 G h ( T ) \mathcal{G}_h(\mathcal{T}) Gh(T)包含NOI中所有结点的ego-subgraphs:
G h ( T ) = ⋃ v ∈ T S h ( v ) = { ⋃ v ∈ T V v h , ⋃ v ∈ T E v h , ⋃ v ∈ T R v h } \mathcal{G}_h(\mathcal{T})=\bigcup_{v\in\mathcal{T}}\mathcal{S}_h(v)=\{\bigcup_{v\in\mathcal{T}}\mathcal{V}_v^h,\bigcup_{v\in\mathcal{T}}\mathcal{E}_v^h,\bigcup_{v\in\mathcal{T}}\mathcal{R}_v^h\} Gh(T)=v∈T⋃Sh(v)={v∈T⋃Vvh,v∈T⋃Evh,v∈T⋃Rvh}
- 结点级任务——NOI就是结点本身, T = { v } \mathcal{T}=\{v\} T={v}且 G h ( T ) = S h ( v ) \mathcal{G}_h(\mathcal{T})=S_h(v) Gh(T)=Sh(v)
- 链接级任务—— T = { v i , v j } \mathcal{T}=\{v_i,v_j\} T={vi,vj}且 G h ( T ) = S h ( v i ) ∪ S h v j \mathcal{G}_h(\mathcal{T})=S_h(v_i) \cup S_h{v_j} Gh(T)=Sh(vi)∪Shvj
- 图级任务——NOI包含图上所有结点,NOI子图 G h ( T ) = ( V , E , R ) \mathcal{G}_h(\mathcal{T})=(\mathcal{V},\mathcal{E},\mathcal{R}) Gh(T)=(V,E,R)
4.2.2、NOI提示结点
NOI提示结点统一不同任务中处理和readout过程。NOI提示节点与任务提示文本相关联:
文本由相同的LLM进行编码。NOI提示结点与NOI中所有结点相连,并通过信息传递汇总NOI和任务描述中的信息。然后将类结点附加到下游任务的提示结点中。
3.3节会详细介绍class node。每个class node保存与特定类相关的文本信息:
NOI子图和NOI提示节点的结合实现了对所有节点级、边级和图级任务的统一读取和处理。此外,连接到NOI的NOI提示节点可以被视为标记技巧,其提升了原始图模型的表达能力,以更好地学习NOI周围的结构信息。同时,NOI提示节点上的任务提示文本允许图模型根据特定任务调整读出参数,这在现有工作中是不可行的。
4.3、用于图的上下文学习(ICL)的图提示范式(GPP)
LLMs通过提示进行情境学习,使模型不需要微调就能够执行不同学习情景的各种下游任务。
上下文学习的核心原则是使输入数据与下游任务保持一致。因此,图提示范式(GPP)就是操作输入图,使模型能够从输入本身获取任务相关的信息。这种范式赋予图模型对可见和不可见类的上下文学习能力。
提示图, p = ( V p , E p , R p ) \mathcal{p}=(\mathcal{V}_p,\mathcal{E}_p,\mathcal{R}_p) p=(Vp,Ep,Rp),有两种结点,第一种结点为NOI提示节点,假设我们查询目标NOI子图 G h q ( T q ) = ( V q h , E q h , R p ) \mathcal{G}_h^q(\mathcal{T}^q)=(\mathcal{V}_q^h,\mathcal{E}_q^h,\mathcal{R}_p) Ghq(Tq)=(Vqh,Eqh,Rp),则NOI提示结点为 p q p_q pq。GPP在NOI提示结点和NOI中的每个结点之间添加一条边,定义为 E c r o s s q = { ( t , r t 2 p , p q ) , ( p q , r p 2 t , t ) ∣ t ∈ T q } \mathcal{E}^q_{cross}=\{(t,r_{t2p},p_q),(p_q,r_{p2t},t)|t\in \mathcal{T}^q\} Ecrossq={(t,rt2p,pq),(pq,rp2t,t)∣t∈Tq}, r p 2 t r_{p2t} rp2t和 r p 2 t r_{p2t} rp2t分别是从NOI到NOI提示结点的边和反向边的关系。
提示图中第二种结点类型是class node。每个class node保存与特定类相关的文本信息:
类节点 i i i定义为 c i c_i ci,在每个类节点和NOI提示结点添加边,定义为:
E q u e r y q = { ( p q , r q 2 c , c i ) , ( c i , r c 2 q , p q ) ∣ i ∈ [ N ] } \mathcal{E}^q_{query}=\{(p_q,r_{q2c},c_i),(c_i,r_{c2q},p_q)|i\in [N]\} Equeryq={(pq,rq2c,ci),(ci,rc2q,pq)∣i∈[N]}, N N N是类的数量, r q 2 c r_{q2c} rq2c和 r c 2 q r_{c2q} rc2q分别是从NOI提示结点到类结点的边和反向边的关系。
一个提示图为:
V p = { p q } ⋃ { c i ∣ i ∈ [ N ] } , E p = E q u e r y ⋃ E c r o s s q , R p = { r t 2 p , r p 2 t , r q 2 c , r c 2 q } . \mathcal{V}_{p}=\{p_{q}\}\bigcup\{c_{i}|i\in[N]\},\mathcal{E}_{p}=\mathcal{E}_{query}\bigcup\mathcal{E}_{cross}^{q},\mathcal{R}_{p}=\{r_{t2p},r_{p2t},r_{q2c},r_{c2q}\}. Vp={pq}⋃{ci∣i∈[N]},Ep=Equery⋃Ecrossq,Rp={rt2p,rp2t,rq2c,rc2q}.
然后,输入到后续图模型的提示图是输入图和提示图的组合,表示为 G m = ( V q h ⋃ V ^ p , E q h ⋃ L ^ p , R q h ⋃ R p ) . \mathcal{G}_{m}=(\mathcal{V}_{q}^{h}\bigcup\hat{\mathcal{V}}_{p},\mathcal{E}_{q}^{h}\bigcup\hat{\mathcal{L}}_{p},\mathcal{R}_{q}^{h}\bigcup\mathcal{R}_{p}). Gm=(Vqh⋃V^p,Eqh⋃L^p,Rqh⋃Rp).
使用图学习模型来处理提示图,并使用类节点的嵌入来进行二进制分类。具体地,令 h c i h_{c_i} hci是来自图学习模型的类节点 c i c_i ci的向量表示。我们预测NOI属于类别 i i i的可能性通过:
P [ NOI belongs to class i ] = σ ( MLP ( h c i ) ) P[\text{NOI belongs to class }i]=\sigma(\text{MLP}(h_{c_i})) P[NOI belongs to class i]=σ(MLP(hci))
MLP是一个多层感知机,其一维输出表示 h c i h_{c_i} hci的分类分数。
注意,因为NOI提示节点和类节点连接到NOI并包含任务文本描述,所以固定长度的向量 h c i h_{c_i} hci包含关于输入图和任务的信息,使得预测依赖于任务。虽然现有的图学习方法需要为不同的任务使用不同的池化机制,但这种公式化将不同级别的任务转化为类节点上相同的二进制分类任务,因此所有任务都可以一起训练。对于多类问题,我们比较不同类的预测得分来做出决策。
l = a r g m a x i ( M L P ( h c i ) ∣ i ∈ [ N ] ) l=\mathrm{argmax}_i\left(\mathrm{MLP}(h_{c_i})|i\in[N]\right) l=argmaxi(MLP(hci)∣i∈[N])
l l l是NOI的预测类别。
GPP也可以解决少样本问题,未看见类的支持NOI子图帮助更好的分类查询子图,支持NOI子图定义为 G h i , k ( T k i ) \mathcal{G}_h^{i,k}(\mathcal{T}_k^i) Ghi,k(Tki),对于第 i i i类和第 k k k个支持样本,NOI T k i T^i_k Tki属于第 i i i类。
对于查询NOI提示节点,我们通过以下方式将每个支持NOI子图连接到其对应的支持NOI提示节点 p i , k p_{i,k} pi,k:
E c r o s s s = ⋃ i ∈ [ N ] , k ∈ [ K ] E c r o s s i , k = ⋃ i ∈ [ N ] , k ∈ [ K ] { ( t , r t 2 p , p i , k ) , ( p i , k , r p 2 t , t ) ∣ t ∈ T k i } . \mathcal{E}_{cross}^s=\bigcup_{i\in[N],k\in[K]}\mathcal{E}_{cross}^{i,k}=\bigcup_{i\in[N],k\in[K]}\{(t,r_{t2p},p_{i,k}),(p_{i,k},r_{p2t},t)|t\in\mathcal{T}_k^i\}. Ecrosss=i∈[N],k∈[K]⋃Ecrossi,k=i∈[N],k∈[K]⋃{(t,rt2p,pi,k),(pi,k,rp2t,t)∣t∈Tki}.
为了增强分类,将支持NOI提示结点连接到其NOI所属的类节点,即, E s u p p = { ( p i , k , r s 2 c , c i ) ∣ i ∈ [ N ] , k ∈ [ K ] } \mathcal{E}_{supp}=\{(p_{i,k},r_{s2c},c_i)|i\in[N],k\in[K]\} Esupp={(pi,k,rs2c,ci)∣i∈[N],k∈[K]}。由于查询NOI提示节点和类节点之间的关系类型 r s 2 c r_{s2c} rs2c和 r q 2 c r_{q2c} rq2c不同,该模型能够区分查询和信息,支持NOI。少镜头提示图 P \mathcal{P} P的总体组件是
V p = { p q } ⋃ { p i , k ∣ i ∈ [ N ] , k ∈ [ K ] } ⋃ { c i ∣ i ∈ [ N ] } , \mathcal{V}_p=\{p_q\}\bigcup\{p_{i,k}|i\in[N],k\in[K]\}\bigcup\{c_i|i\in[N]\}, Vp={pq}⋃{pi,k∣i∈[N],k∈[K]}⋃{ci∣i∈[N]},
E p = E c r o s s q ⋃ E q u e r y ⋃ E c r o s s s ⋃ E s u p p , R p = { r t 2 p , r p 2 t , r q 2 c , r c 2 q , r s 2 c } \mathcal{E}_p=\mathcal{E}_{cross}^q\bigcup\mathcal{E}_{query}\bigcup\mathcal{E}_{cross}^s\bigcup\mathcal{E}_{supp},\quad\mathcal{R}_p=\{r_{t2p},r_{p2t},r_{q2c},r_{c2q},r_{s2c}\} Ep=Ecrossq⋃Equery⋃Ecrosss⋃Esupp,Rp={rt2p,rp2t,rq2c,rc2q,rs2c}
提示图可以以与上面讨论的类似的方式构造。与前面提到的场景一样,类节点的输出嵌入用于进行二进制分类。OFA通过将支持NOI提示节点连接到相应的类节点来利用少量支持示例,并且模型综合类节点上的示例信息和任务语义信息以进行更准确的预测。请注意,少数样本情景中类节点表示仍然与零样本情景中的表示一致,因此它们也可以一起训练。
总而言之,NOI表示与任务相关的节点集合,并且提取的NOI子图包括NOI的邻域信息。然后,NOI提示节点通过图学习模型总结NOI中的信息,因为所有NOI节点都连接到NOI提示节点。NOI提示符节点稍后连接到一组带有文本描述的类节点。在图模型处理之后,类节点表示包含类信息、任务信息和NOI信息,它们可以用于独立地进行预测,就像LLM的提示输入包含输入、目标和任务描述一样。
设计了一个能够识别不同边缘类型的GNN作为OFA中的图模型。
5、训练和评估过程
不管任务类型,所有输入都被标准化为提示文本属性图 G m G_m Gm,OFA首先使用LLM将图中的所有文本嵌入到向量表示中:
x i j = L L M ( s e i j ) , ∀ e i j ∈ E m , x i = L L M ( s v i ) , ∀ v i ∈ V m x_{ij}=LLM(s_{e_{ij}}),\forall e_{ij}\in\mathcal{E}_{m},\quad x_{i}=LLM(s_{v_{i}}),\forall v_{i}\in\mathcal{V}_{m} xij=LLM(seij),∀eij∈Em,xi=LLM(svi),∀vi∈Vm
然后,通过一个多个的信息传递层处理嵌入文本,得到 G m \mathcal{G}_m Gm中每个结点的最终嵌入:
h v i l + 1 = W s e l f h v i l + ∑ r ∈ R m ∑ v j ∈ N 1 r ( v i ) 1 ∣ N 1 r ( v i ) ∣ W r ( R e L U ( h v j l + x i j ) ) h_{v_{i}}^{l+1}=\boldsymbol{W}_{\mathrm{self}}h_{v_{i}}^{l}+\sum_{r\in\mathcal{R}_{m}}\sum_{v_{j}\in\mathcal{N}_{1}^{r}(v_{i})}\frac{1}{|\mathcal{N}_{1}^{r}(v_{i})|}\boldsymbol{W}_{r}(\mathrm{ReLU}(h_{v_{j}}^{l}+x_{ij})) hvil+1=Wselfhvil+r∈Rm∑vj∈N1r(vi)∑∣N1r(vi)∣1Wr(ReLU(hvjl+xij))
其中, h v i 0 = x i h_{v_i}^0=x_i hvi0=xi, W s e l f W_{self} Wself和 W r W_r Wr是用于自环和关系的可训练的变换矩阵, N 1 r ( v i ) \mathcal{N}_1^r(v_i) N1r(vi)是连接到具有关系类型 r r r的 v i v_i vi的直接邻居。GNN是R-GCN的拓展。
设计了一个简单的注意力层来总结从 h 1 h_1 h1到 h L h_L hL的所有层输出。最终的结点表征为:
h v i = H ⋅ S o f t m a x ( ( W k H ) ′ ⋅ W q x i ) ′ , H = [ h v i 1 . . . h v i l . . . h v i L ] h_{v_i}=\boldsymbol{H}\cdot Softmax((\boldsymbol{W}_k\boldsymbol{H})'\cdot\boldsymbol{W}_qx_i)',\quad\boldsymbol{H}=[h_{v_i}^1\quad...\quad h_{v_i}^l\quad...\quad h_{v_i}^L] hvi=H⋅Softmax((WkH)′⋅Wqxi)′,H=[hvi1...hvil...hviL]
W k W_k Wk和 W q W_q Wq是key和query可训练的权重。
最后,我们收集每个类节点 { h c i ∣ ∀ v ∈ [ N ] } \{ h_{c_i}| \forall v \in[N]\} {hci∣∀v∈[N]}的输出节点嵌入并且使用MLP预测头对每个类节点执行二进制分类,类 i i i的可能性为:
p i = σ ( M L P ( h c i ) ) p_i=\sigma(\mathsf{MLP}(h_{c_i})) pi=σ(MLP(hci))
σ \sigma σ为sigmoid函数。对于多分类问题,所有类别的概率为:
l p = argmax ( ( p i ∣ i ∈ [ N ] ) ) , l_p=\operatorname{argmax}\left((p_i|i\in[N])\right), lp=argmax((pi∣i∈[N])),
l p l_p lp为模型的最终预测。
对于 G m \mathcal{G}_m Gm的训练损失函数为:
L G m = − 1 N ∑ i = 1 N y i ⋅ l o g ( p i ) + ( 1 − y i ) ⋅ ( 1 − l o g ( p i ) ) \mathcal{L}_{\mathcal{G}_{m}}=-\frac{1}{N}\sum_{i=1}^{N}y_{i}\cdot log(p_{i})+(1-y_{i})\cdot(1-log(p_{i})) LGm=−N1i=1∑Nyi⋅log(pi)+(1−yi)⋅(1−log(pi))
其中, N N N为 G m \mathcal{G}_m Gm中类的数量。
未完待续
相关文章:

【论文阅读】One For All: Toward Training One Graph Model for All Classification Tasks
目录 0、基本信息1、研究动机2、创新点——One For All :unique features3、准备4、具体实现4.1、用TAGs统一来自不同领域的图数据4.2、用NOI(NODES-OF-INTEREST)统一不同图任务4.2.1、NOI子图4.2.2、NOI提示结点 4.3、用于图的上下文学习&am…...

Python多线程爬虫——数据分析项目实现详解
前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:https://www.captainbed.cn/z 「个人网站」:雪碧的个人网站 ChatGPT体验地址 文章目录 前言爬虫获取cookie网站爬取与启动CS…...

unity全局音量管理/全局音量设置与音量设置界面(含静音功能)
前言 本文将会介绍如何使用audiomixer实现全局音量控制,并且会介绍如何实现游戏内的含静音功能的音量设置界面。 本人也是个初学者,在看过一些关于音量管理的教程后,发现使用audiomixer实现全局音量控制可能是最方便、功能最完备、强大的&a…...

C++ vector 数组转换、查找、最大最小值、排序、排行的几种用法
C vector中常用到排序、取最值,一些场景可能还会要计算某个元素的排行,以下就是一些实际例子,精简、有效。 【1】会涉及到数组转vector: vector<int> v(arr, arr N); // N为数组size,可用sizeof(arr)/sizeof(i…...

vmware 安装Rocky-9.3系统
安装系统截图 安装完成,启动 查看版本和内核 开启远程登陆授权 1、编辑配置文件 #提升权限,输入su,并输入密码 su #编辑ssh文件开启root远程登陆 vi /etc/ssh/sshd_config找到以下内容:#PermitRootLogin prohibit-password 添加:…...

C++提高编程——模板
本专栏记录C学习过程包括C基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注。 当前章节处于: ---------第1阶段-C基础入门 ---------第2阶段实战…...

单线程、同步、异步、预解析、作用域、隐式全局变量、对象创建、new
单线程 进程 cpu 资源分配的最小单位一个进程可以有多个线程 线程 cpu调度的最小单位线程建立在进程的建立基础上的一次程序的运行单位 线程分为:单线程 多线程 单线程:js是单线程 (同一个时间只能完成一个任务)多线程&…...

《设计模式的艺术》笔记 - 外观模式
介绍 外观模式中外部与一个子系统的通信通过一个统一的外观角色进行,为子系统中的一组接口提供一个一致的入口。外观模式定义了一个高层接口,这个接口使得子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。 实现 myclas…...

sql 查询时间范围内的数据
要查询特定时间范围内的数据,您可以使用 SQL 中的 BETWEEN 运算符。以下是一个示例查询,它从名为 your_table 的表中检索在 start_date 和 end_date 之间创建的所有记录: SELECT * FROM your_table WHERE created_date BETWEEN start_date AN…...

TestNG中的@BeforeSuite注释
目录 什么是BeforeSuite注解? BeforeSuite带注释的方法何时执行? BeforeSuite annotation有什么用? 所以,是时候集思广益了 我们可以在一个类中使用多个BeforeSuite注释方法吗? BeforeSuite放在超类上时如何工作…...

[学习笔记]刘知远团队大模型技术与交叉应用L3-Transformer_and_PLMs
RNN存在信息瓶颈的问题。 注意力机制的核心就是在decoder的每一步,都把encoder的所有向量提供给decoder模型。 具体的例子 先获得encoder隐向量的一个注意力分数。 注意力机制的各种变体 一:直接点积 二:中间乘以一个矩阵 三:…...

图像处理工具包Pillow的使用分享
Pillow 是 Python 中一个流行的图像处理库,它是 PIL(Python Imaging Library)的一个友好的分支版本。Pillow 提供了许多功能,使得图像处理变得容易和方便。下面是一些基本用法和示例: 安装 Pillow 首先,你…...

python进程间通信——命名管道(Named Pipe、FIFO)
文章目录 Python中的命名管道:深入理解进程间通信1. 命名管道简介2. 创建和删除命名管道3. 写入命名管道4. 读取命名管道5. 示例:进程间通信write_to_pipe.pyread_from_pipe.py测试运行 6. 注意事项和限制命名管道的半双工机制命名管道读写任意一方未打开…...

03 OSPF 学习大纲
参考文章 1 初步认识OSPF的大致内容(第三课)-CSDN博客 2...

HJ7 取近似值【C语言】
【华为机试题 HJ7】取近似值 描述输入描述:输出描述:示例1示例2参考代码1参考代码2参考代码3描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。 数据范围:保证输入的数字在 32 位浮点数范…...

php基础学习之常量
php常量的基本概念 常量是在程序运行中的一种不可改变的量(数据),常量一旦定义,通常不可改变(用户级别)。 php常量的定义形式 使用define函数:define("常量名字", 常量值);使用cons…...

2024最新面试经验分享
目录 重点掌握的知识点JavaMySQLRedis 微服务分布式系统项目亮点场景题/设计题短链抢红包多租户 开放性问题自我介绍为什么跳槽团队规模如何带团队如何看待加班职业规划 主要针对Java程序员,当然也包含一些通用的内容。 重点掌握的知识点 需要重点掌握的知识点必须…...

《WebKit 技术内幕》之八(1):硬件加速机制
《WebKit 技术内幕》之八(1):硬件加速机制 1 硬件加速基础 1.1 概念 这里说的硬件加速技术是指使用GPU的硬件能力来帮助渲染网页,因为GPU的作用主要是用来绘制3D图形并且性能特别好,这是它的专长所在,它…...

子表单扫码录入,显著节省填写时间
01/17 主要更新模块概览 扫 码 识 别 新 增 字 号 登 录 配 置 匹 配 搜 素 扫码识别 路径:表单设计 >> 字段属性 功能简介 之前对子表单扫码录入,是单独在组件内设置扫码,操作需重新点击扫码功能,手工新增子表数据&a…...

【Redis】Ubuntu安装配置
目录 一、安装Redis 1.1 从APT仓库安装Redis 二、启动&关闭&重启 三、Redis核心配置 3.1 CONFIG命令 3.2 redis.conf文件说明 一、安装Redis 1.1 从APT仓库安装Redis 从APT仓库可以安装最新的Redis稳定版,步骤如下: 【1】安装需要用到的…...

idea远程服务调试
1. 配置idea远程服务调试 这里以 idea 新 ui 为例,首先点击上面的 debug 旁边的三个小圆点,然后在弹出的框框中选择 “Edit”,如下图所示。 然后进入到打开的界面后,点击左上角的 “” 进行添加,找到 “Remote JVM De…...

Google Colab运行Pytorch项目
Google Colab运行Pytorch项目 连接google drive切换到某一文件夹显示当前目录文件安装依赖执行py文件numpy相关numpy.random.randn() 参考文章:文章1 文章2 连接google drive from google.colab import drive import os drive.mount(/content/drive)切换到某一文件…...

Android Studi安卓读写NDEF智能海报源码
本示例使用的发卡器:https://item.taobao.com/item.htm?id615391857885&spma1z10.5-c.w4002-21818769070.11.1f60789ey1EsPH <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmln…...

Demo: 实现PDF加水印以及自定义水印样式
实现PDF加水印以及自定义水印样式 <template><div><button click"previewHandle">预览</button><button click"downFileHandle">下载</button><el-input v-model"watermarkText" /><el-input v-mo…...

每日OJ题_算法_二分查找①_力扣704. 二分查找
目录 二分查找算法原理 力扣704. 二分查找 解析代码 二分查找算法原理 二分查找一种效率较高的查找方法。但是,二分查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。一般步骤如下: 首先,假设表中元素是按升…...

【Python】--- 基础语法(1)
目录 1.变量和表达式2.变量和类型2.1变量是什么2.2变量的语法2.3变量的类型2.3.1整数2.3.2浮点数(小数)2.3.3字符串2.3.4布尔2.3.5其他 2.4为什么要有这么多类型2.5动态类型特征 3.注释3.1注释的语法3.2注释的规范 结语 1.变量和表达式 对python的学习就…...

详解gorm中DB对象的clone属性
详解gorm中DB对象的clone属性 Gorm 版本:v1.22.4 Where函数源码 // Where add conditions func (db *DB) Where(query interface{}, args ...interface{}) (tx *DB) {tx db.getInstance()if conds : tx.Statement.BuildCondition(query, args...); len(conds) &…...

数据库(MySQL库表操作)
目录 1.1 SQL语句基础(SQL命令) 1.1.1 SQL的简介 1.1.2 SQL语句的分类 1.1.3 SQL语句的书写规范 1.2 数据库操作 1.2.1 查看 1.2.2 自建库 1.2.3 切换数据库 1.2.4 删库 1.3 MySQL字符集 1.3.1 MySQL字符集包括: 1.3.2 utf8 和 u…...

内网穿透的应用-如何使用Docker部署Redis数据库并结合内网穿透工具实现公网远程访问
文章目录 前言1. 安装Docker步骤2. 使用docker拉取redis镜像3. 启动redis容器4. 本地连接测试4.1 安装redis图形化界面工具4.2 使用RDM连接测试 5. 公网远程访问本地redis5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主要介绍如何在Ub…...

计算机网络复试
第1章 概述 时延:发送(传输)时延传播时延 链路中每多一个路由器,就增加一个分组的发送时延 第2章 物理层 2.4 编码与调制->编码(基带调制)->曼彻斯特编码 ->带通调制->混合调制->正交振幅调制QAM 信道极限容量 奈氏准则 无噪声最大速…...