Adaptive Subgraph Neural Networkwith Reinforced Critical Structure Mining

news2024/11/27 18:51:18

1 Introduction

graph mining area: 图挖掘领域
图具有广泛的局部结构:从节点、模体(motifs)到子图(subgraph)
主流研究表明:图的重要特征和突出模式是通过主要由一些关键局部结构(如模体和子图)决定反映出来的


  • 图核方式 Graph kernel methods: 通过核函数(kernel functions)分解图得到子图结构,然后直接利用它们来衡量图对的相似性,而不是转化成矢量形式(vectorization)
  • 图圣经网络方式 Graph neural networks (GNNs): 遵循消息传递机制(message-passing scheme)——在中心节点的邻域子图上递归聚合邻居信息
    • 缺陷: 大多数只通过边传播信息来表示节点,并且全局地combine这些i信息以形成图表示,但得到的图表示本质上是平坦的 flat—— 只能检测模糊模式,并且无法有效地捕获精确的可区分结构信息 —— 无法捕捉到图的层次结构或多尺度特征

目前,大部分研究依赖于启发式直觉判断或试错的方法来识别和利用图数据中的关键结构,同时也关注于一些基本的图结构,如 ego-networks 或 motifs

然而,以下挑战使关键结构检测任务变得不平凡:

  • Data-Specific and task-specific: 在不同的数据集和任务中,关键结构可能不同,因此很难预先定义它们的模式
  • Arbitrary size and shape: 关键结构可以是大小和形状各异的大型结构。设计固定的提取规则是困难的
  • Absence of annotations: 对于大多数数据集和应用场景,缺少关键结构的标注。由于缺乏注释,在学习过程中难以以监督信息的形式利用关键结构的宝贵信息;在无监督的情况下开采关键结构是很困难的,即使我们有一些专业知识,但这些知识也不能转移到其他任务中
  • Local-Scale and global-scale: 关键结构不仅应包含局部语义(在局部尺度上),而且还应在全局图属性(全局尺度)中发挥重要作用

2 RELATED WORK

2.1 Graph Neural Networks

  • 大多数全局融合节点特征以生成总体图形表示,无法捕获层次结构属性
  • 一些图池化方法试图提出一些层次结构信息提取的原则:
    • cluster based pooling :将节点聚类为组,然后根据组分配生成粗略图
      • 缺点: 这类方法通过隐式聚类来利用特征和结构信息,导致缺乏可解释性
    • selection based pooling : 通过计算重要节点的重要性分数来选择重要节点,以删除冗余信息
      • 缺点: 这类方法应用节点级策略,忽略了局部子结构的语义信息

2.2 Critical Structure Mining

  • Graph kernel:
    • 直接使用核函数从原始图结构中分解预定义的结构(例如walk 、最短路径、子图 )
    • 以核函数为形式的关键结构模式大多是手工制作的,并且是启发式的,导致灵活性和泛化性能较差
  • neighborhood subgraphs:
    • 子图大小预定义/限定
  • Motifs: 经常出现的子图模式
    • 仅限于通过预定义的motif提取规则将小的局部子结构枚举为局部特征,这需要利用领域专业知识进行手动设计
  • Graph transformers:
    • 通过自注意力机制捕获节点对之间的交互信息
    • 只能对节点之间的位置关系进行编码,无法识别节点之间的结构相似性,只能识别关键边
  • Find more flexible subgraphs

2.3 Find more flexible subgraphs

当前结合了强化学习(RL)的图神经网络(GNNs)专注于寻找关键关系或更好的GNN架构来处理节点级别的任务。在推进强化学习以发现更复杂的图级别任务的关键结构方面,研究仍然有限

2.4 GNNs with Mutual Information

Mutual Information(MI):提供了一种统一的方式来衡量两个变量之间的相关程度,它在许多应用中被广泛使用

大多数现有的结合互信息(MI)的图神经网络(GNNs)专注于节点级别或图级别的表示,而我们的模型专注于子图表示。此外,它们大多数利用MI进行自监督学习很少考虑表示和标签之间的MI,而我们的标签感知MI增强机制旨在使子图对下游任务更具预测性

3 ADASNN: ADAPTIVE SUBGRAPH NEURAL NETWORK

目标:设计出 一种用于图分类的自适应子图神经网络,能够检测关键子图作为整个图的代表性抽象,因此需要设计出一个灵活的架构,该架构满足:
+ 在没有标注监督信息的情况下检测任意大小和形状的关键子图
+ 在检测到的关键子图中保留整个图的属性

解决: 作者分别设计了一个强化子图检测模块 Reinforcement Subgraph Detection Module和一个两级互信息增强机制 Bi-Level MI Enhancement Mechanism

3.1 Problem Formulation

在这里插入图片描述
在这里插入图片描述

3.2 Pipeline of AdaSNN

使用 AdaSNN 进行图分类包括三个步骤:
在这里插入图片描述

  • 关键子图检测 Critical Subgraph Detection:从输入图中检测关键子图;
  • 子图草图和编码 Subgraph Sketching and Encoding:在检测到的子图上构建草图,并学习子图编码
  • 子图表示增强 Subgraph Representation Enhancement:进一步增强子图表示并用于分类

3.2.1 Step-1: Critical Subgraph Detection

开发了一个强化子图检测模块 Reinforcement Subgraph Detection Module,该模块学习从原始图中找到关键子图,并利用下游任务的反馈,而无需监督信息

问题:直接从图中采样节点并将其诱导的子图视为关键子图的方法面临挑战,主要因为图的大小可以变化很大,且图中节点之间的依赖关系复杂多变

做法

  • 首先,采样一组种子节点 { v i } i = 1 N \{v_i\}_{i=1}^{N} {vi}i=1N作为子图的中心节点,然后围绕这些种子节点采样子图
    • 子图采样任务分解为两个子任务即深度决策和邻域决策(depth decision and neighbor decision),然后设计了两个智能体即Depth-Agent and Neighbor-Agent来解决它们
    • 对每个中心节点 v i v_i vi,首先使用2层的GNN编码器将节点特征转换为节点编码作为初始化 ,然后检测 v i v_i vi为中心的子图

d i ⇐ π d ( G , v i ) , g i ⇐ π n ( G , v i , d i ) (1) d_i \lArr \pi^d(G,v_i),g_i\lArr\pi^{n}(G,v_i,d_i)\tag{1} diπd(G,vi),giπn(G,vi,di)(1)

其中, d i d_i di是子图的深度, g i g_i gi是检测到的子图, π d \pi^d πd π n \pi^{n} πn分别是Depth-Agent 和Neighbor-Agent学习到的策略

3.2 Step-2: Subgraph Sketching and Encoding

在获得关键子图 { g i } \{g_i\} {gi}后,将其压缩成草图 G s k e = ( V s k e , E s k e ) G^{ske}=(V^{ske},E^{ske}) Gske=(Vske,Eske),然后使用注意力机制来学习子图嵌入

  • 将每个子图视为草图中的一个超级节点 supernode
  • V s k e V^{ske} Vske之间的连通性由两个子图间的公共节点数决定:当 g i g_i gi g j g_j gj间的公共节点数超过一个常数 b c o m b_{com} bcom,两个子图对应的supernode间会被赋予一条边 e i , j e_{i,j} ei,j
    V s k e = { g i } , ∀ i = 1 , 2 , . . . , N ; E s k e = { e i , j } , ∀ ∣ V ( g i ) ⋂ V ( g j ) ∣ > b c o m (2) \begin{aligned} V^{ske} &= \{g_i\}, \forall i=1,2,...,N;\\ E^{ske} &=\{e_{i,j}\},\forall|V(g_i)\bigcap V(g_j)|>b_{com} \end{aligned} \tag{2} VskeEske={gi},i=1,2,...,N;={ei,j},∀∣V(gi)V(gj)>bcom(2)
  • 从两个角度学习子图的表示:子图内和子图间 intra-subgraph and inter-subgraph
    • intra-subgraph perspective :使用基于GNN的编码器 E \mathcal{E} E迭代更新得到关键子图内每个节点的表示 H ( g i ) H(g_i) H(gi),然后使用READOUT函数【作者使用 sum pooling】得到子图级表示 h i g h_i^g hig;其中 E \mathcal{E} E遵循消息传递机制框架
      H ( g i ) = E ( g i ) = { h i ( v j ) ∣ v j ∈ V ( g i ) } (3) H(g_i)=\mathcal{E}(g_i)=\{h_i(v_j)|v_j\in V(g_i)\}\tag{3} H(gi)=E(gi)={hi(vj)vjV(gi)}(3)
      h i l + 1 ( v j ) = U ( l + 1 ) ( h i ( l ) ( v j ) , A G G ( M ( l + 1 ) ( h i ( l ) ( v k ) ) ) , ∀ v k ∈ V ( g i ) a n d v k ∈ N ( v j ) ) (4) \begin{aligned} h_i^{l+1}(v_j)=U^{(l+1)}(h_i^{(l)}(v_j),AGG(M^{(l+1)}(h_i^{(l)}(v_k))),\forall v_k \in V(g_i) and v_k \in \mathcal{N}(v_j)) \end{aligned}\tag{4} hil+1(vj)=U(l+1)(hi(l)(vj),AGG(M(l+1)(hi(l)(vk))),vkV(gi)andvkN(vj))(4)
      h i g = R E A D O U T ( { h i L ( v j ) } , v j ∈ V ( g i ) ) (5) h_i^g=READOUT(\{h_i^L(v_j)\},v_j\in V(g_i)) \tag{5} hig=READOUT({hiL(vj)},vjV(gi))(5)
  • inter-subgraph perspective: 利用注意力机制来从子图的嵌入向量中了解子图之间的交互
    • 利用多头注意力机制【M个头】来计算子图 g i g_i gi g j g_j gj之间的注意力系数 α i j \alpha_{ij} αij
    • 子图表示被邻居子图更新得到 z g = { z i g } i = 1 N z^g=\{z_i^g\}_{i=1}^N zg={zig}i=1N
      z i g = 1 M ∑ m = 1 M ∑ e i j ∈ E s k e α i j m W i n t e r m h j g z_i^g={1\over M}\sum_{m=1}^M\sum_{e_{ij}\in E^{ske}}\alpha_{ij}^mW_{inter}^mh_j^g zig=M1m=1MeijEskeαijmWintermhjg

3.3 Step-3: Subgraph Representation Enhancemen

设计出一个Bi-Level Mutual Information (MI) Maximization Mechanism来增强子图表示,主要从Global-Aware MILabel-Aware MI两个角度进行增强

  • Global-Aware MI Maximization旨在鼓励子图表示了解整个图的全局属性 :目标是基于给定的数据集 G = { G } G=\{G\} G={G}最大化局部子图表示 z i g z_i^g zig和全局图表示 z G z^G zG之间的互信息MI
    m a x ∑ G ∈ G 1 N ∑ i = 1 N I ( z i g , z G ) (7) max\sum_{G\in G}{1\over N}\sum_{i=1}^N\mathcal{I}(z_i^g,z^G)\tag{7} maxGGN1i=1NI(zig,zG)(7)
  • Label-Aware MI Maximization旨在鼓励子图表示在图样本中具有判别性 : 目标是基于给定的数据集 G = { G } G=\{G\} G={G}最大化子图 z i g z_i^g zig和标签 Y Y Y之间的互信息MI,Y是子图 z i g z_i^g zig所属的图的标签
    m a x ∑ G ∈ G 1 N ∑ i = 1 N I ( z i g , Y ) (8) max\sum_{G\in G}{1\over N}\sum_{i=1}^N\mathcal{I}(z_i^g,Y)\tag{8} maxGGN1i=1NI(zig,Y)(8)

3.3 Reinforced Subgraph Detection Module

目标: 使用强化学习算法自适应地检测任意大小和形状的关键子图

通过Finite Horizon Markov Decision Process (MDP) M ( G , Y ) \mathcal{M}(G,Y) M(G,Y)来建模子图检测

分两个阶段对每个种子节点的子图进行采样:

  • 对一个中心节点 v t v_t vtDepth-Agent根据策略 π ( s t d ) \pi(s_t^d) π(std)生成一个行动 a t d a_t^d atd来指定该中心节点的子图的深度 k k k
  • 有了指定的 k = a t d k=a_t^d k=atd后,Neighbor-Agent 生成行动 ( a t n ( 1 ) , a t n ( 2 ) , . . . , a t n ( k ) ) (a_t^{n(1)},a_t^{n(2)},...,a_t^{n(k)}) (atn(1),atn(2),...,atn(k))来逐跳采样子图内的成员节点,这些节点是v点的k跳邻居

在这里插入图片描述

3.3.1 Depth-Agent

为给定的中心节点选择子图的深度,表示为 ( S d , A d , R d , T d ) (\mathcal{S}^d,\mathcal{A}^d,\mathcal{R}^d,\mathcal{T}^d) (Sd,Ad,Rd,Td)

  • S t a t e ( S d ) State(\mathcal{S}^d) State(Sd): 定义为当前中心节点 v t v_t vt的中心嵌入 h t h_t ht和其K-hop邻居的上下文嵌入 z N ( K ) ( v t ) z^{N^{(K)}(v_t)} zN(K)(vt),该上下文嵌入是 v t v_t vt的K-hop邻居内所有节点的平均向量;K 是一个预定义的超参数,它决定了子图的最大深度
    s t d = ( h t , z N ( K ) ( v t ) ) (9) s_t^d=(h_t,z^{N^{(K)}(v_t)})\tag{9} std=(ht,zN(K)(vt))(9)
  • A c t i o n ( A d ) Action(\mathcal{A}^d) Action(Ad): 决定关键字图的深度,一直是一个正整数且 1 ≤ a t d ≤ K 1\leq a_t^d \leq K 1atdK
  • R e w a r d ( R d ) Reward(\mathcal{R}^d) Reward(Rd):由于图神经网络(GNN)的黑盒特性,很难感知其状态,这使得累积奖励不可用;对于奖励函数,直接定义了一个离散的奖励函数 r d ( s t d , a t d ) r^d(s_t^d,a_t^d) rd(std,atd),该奖励函数是基于下游任务性能的提升作为目标,以推动性能的边界
    r d ( s t d , a t d ) = { + 0.5 , i f   Y t ^ = Y , − 0.5 , i f   Y t ^ ≠ Y , (10) r^d(s_t^d,a_t^d)=\left\{ \begin{matrix} +0.5,if \ \hat{Y_t}=Y,\\ -0.5,if \ \hat{Y_t} \neq Y, \end{matrix}\right. \tag{10} rd(std,atd)={+0.5,if Yt^=Y,0.5,if Yt^=Y,(10)
    其中, Y Y Y是ground-truth label, Y ^ \hat{Y} Y^是每个时期 t t t 的predicted label
  • T r a n s i t i o n ( T d ) Transition(\mathcal{T}^d) Transition(Td):选择完当前子图的深度后,Depth-Agent 会将种子节点集合中的下一个中心节点作为下一个状态进行采样;一旦采样了N个子图后,过程就会停止

3.3.2 Neighbor-Agent

逐跳选择子图的成员节点,深度由深度代理选定,表示为 ( S n , A n , R n , T n ) (\mathcal{S}^n,\mathcal{A}^n,\mathcal{R}^n,\mathcal{T}^n) (Sn,An,Rn,Tn)

  • S t a t e ( S d ) State(\mathcal{S}^d) State(Sd): 定义为当前子图 z g k − 1 z^{g_{k-1}} zgk1的中心嵌入和其第K跳的邻居节点的上下文嵌入 z N ( K ) ( v t ) z^{N^{(K)}(v_t)} zN(K)(vt)
    • z g k − 1 z^{g_{k-1}} zgk1是当前(k-1)-hop子图内所有节点的平均向量;设置 z g 1 z^{g_1} zg1是中心节点 v t v_t vt的表示 h t h_t ht
    • z N ( K ) ( v t ) z^{N^{(K)}(v_t)} zN(K)(vt) v t v_t vt的第k跳邻居的平均向量
      s t n ( k ) = ( z g k − 1 , z N ( K ) ( v t ) ) (11) s_t^{n(k)}=(z^{g_{k-1}},z^{N^{(K)}(v_t)})\tag{11} stn(k)=(zgk1,zN(K)(vt))(11)
  • A c t i o n ( A n ) Action(\mathcal{A}^n) Action(An): 子图采样动作可以分解为层次动作 a t n = ( a t n ( 1 ) , a t n ( 2 ) , . . . , a t n ( k ) ) a_t^n=(a_t^{n(1)},a_t^{n(2)},...,a_t^{n(k)}) atn=(atn(1),atn(2),...,atn(k))
  • R e w a r d ( R n ) Reward(\mathcal{R}^n) Reward(Rn): r n ( s t n , a t n ) r^n(s_t^n,a_t^n) rn(stn,atn),对下游图分类任务进行性能提升,客观度量关键子图效果
    r n ( s t n , a t n ) = { + 0.5 , i f   Y t ^ = Y , − 0.5 , i f   Y t ^ ≠ Y , (12) r^n(s_t^n,a_t^n)=\left\{ \begin{matrix} +0.5,if \ \hat{Y_t}=Y,\\ -0.5,if \ \hat{Y_t} \neq Y, \end{matrix}\right. \tag{12} rn(stn,atn)={+0.5,if Yt^=Y,0.5,if Yt^=Y,(12)
  • T r a n s i t i o n ( T d ) Transition(\mathcal{T}^d) Transition(Td): 由动作 a t n a_t^n atn选择完成员节点后,Neighbor-Agent将当前子图的表示以及下一条的节点表示为 s t + 1 n s_{t+1}^n st+1n;一旦代理采样了子图的k跳成员节点,该过程就会停止

强化学习算法选择DQN:

  • 一种无模型算法,用于学习一个最优策略,该策略能够从当前状态开始最大化所有步骤的期望总回报
  • 算法使用深度神经网络来近似状态-动作价值 Q ( s , a ) Q(s,a) Q(s,a)

目标: 训练 Depth-Agent 和 Neighbor-Agent 的 Q 函数
Q d ( s d , a d ) = E s d ′ [ R ( s d ′ ) + γ d max ⁡ a d ′ ( Q d ( s d ′ , a d ′ ) ) ] (13) Q^d(s^d,a^d)=\mathbb{E}_{s^{d'}}[\mathcal{R}(s^{d'})+\gamma^d\max_{a^{d'}}(Q^d(s^{d'},a^{d'}))]\tag{13} Qd(sd,ad)=Esd[R(sd)+γdadmax(Qd(sd,ad))](13)
Q n ( s n , a n ) = E s n ′ [ R ( s n ′ ) + γ d max ⁡ a n ′ ( Q n ( s n ′ , a n ′ ) ) ] (14) Q^n(s^n,a^n)=\mathbb{E}_{s^{n'}}[\mathcal{R}(s^{n'})+\gamma^d\max_{a^{n'}}(Q^n(s^{n'},a^{n'}))]\tag{14} Qn(sn,an)=Esn[R(sn)+γdanmax(Qn(sn,an))](14)

其中, γ d , γ d ∈ [ 0 , 1 ] \gamma^d,\gamma^d \in [0,1] γdγd[0,1]表示未来奖励的折扣因素

采用具有探索概率ε的 ε − g r e e d y ε-greedy εgreedy策略来获得策略 π d , π n \pi^d,\pi^n πd,πn:
π ( a t d ∣ s t d ; Q d ∗ ) = { r a n d o m a c t i o n , w i t h p r o b a b i l i t y ε arg max ⁡ a t d Q d ∗ ( s t d , a t d ) , o t h e r w i s e (15) \pi(a_t^d|s_t^d;Q^{d*})=\left\{ \begin{matrix} random action,with probability ε\\ \argmax_{a_t^d} Q^{d*}(s_t^d,a_t^d),otherwise \end{matrix}\right. \tag{15} π(atdstd;Qd)={randomaction,withprobabilityεargmaxatdQd(std,atd),otherwise(15)
π ( a t n ∣ s t n ; Q n ∗ ) = { r a n d o m a c t i o n , w i t h p r o b a b i l i t y ε arg max ⁡ a t n Q n ∗ ( s t n , a t n ) , o t h e r w i s e (16) \pi(a_t^n|s_t^n;Q^{n*})=\left\{ \begin{matrix} random action,with probability ε\\ \argmax_{a_t^n} Q^{n*}(s_t^n,a_t^n),otherwise \end{matrix}\right. \tag{16} π(atnstn;Qn)={randomaction,withprobabilityεargmaxatnQn(stn,atn),otherwise(16)

在这里插入图片描述

3.4 Bi-Level MI Enhancement Mechanism

动机: 由于AdaSNN的核心思想是提取关键子图作为图的代表性抽象,这些关键子图应该意识到全局图属性并对下游任务具有预测性。因此从信息论的角度设计了一个双层互信息(MI)增强机制,旨在两个层面上增强子图表示:(1) Global-Aware MI:子图表示与图表示之间的互信息;(2) Label-Aware MI:子图表示与图标签之间的互信息

3.4.1 Global-Aware MI Enhancement

  • 目标:让子图表示能够保存原始图的整体结构属性,并不需要保存所有属性
  • 方法: 使用 Jensen-Shannon estimator来最大化局部子图嵌入和全局嵌入之间的互信息
    • Jensen-Shannon估计器与Kullback-Leiber散度近似单调的,这可以提供更好和更稳定的结果
    • 以对比的方式执行,因为Jensen-Shannon estimator基于区分局部/全局对和负采样对
    • 将negative local/global pairs设置为一个子图表示 z g z^g zg和一个alternative 图表示 z G ′ z^{G'} zG
    • 全局图表示 z G z^{G} zG是通过一个 READOUT(·) 函数【可以采用任何置换不变函数 permutation-invariant function,作者采用了简单的均值mean策略】对获得的子图级嵌入进行组合
      z G = R E A D O U T ( { z i g } i = 1 N ) (17) z^G=READOUT(\{z_i^g\}_{i=1}^N)\tag{17} zG=READOUT({zig}i=1N)(17)

global/local MI 表示为:
I ( z g , z G ) : = E p [ − s p ( − T ( z g , z G ) ) ] − E P × P ~ [ s p ( − T ( z g , z G ′ ) ) ] (18) \mathcal{I}(z^g,z^G):=\mathbb{E}_p[-sp(-T(z^g,z^G))]-\mathbb{E}_{\mathbb{P}\times \widetilde{\mathbb{P}}}[sp(-T(z^g,z^{G'}))]\tag{18} I(zg,zG):=Ep[sp(T(zg,zG))]EP×P [sp(T(zg,zG))](18)

其中, G G G是遵循输入空间 P \mathbb{P} P的经验概率分布的输入样本, G ′ G' G是从 P ~ = P \widetilde{\mathbb{P}}=\mathbb{P} P =P中采样的图; s p ( z ) = log ⁡ ( 1 + e z ) sp(z)=\log(1+e^z) sp(z)=log(1+ez)表示softplus函数

同时,引入一个判别器 D \mathcal{D} D来确定输入子图嵌入和图嵌入是否来自同一图,从而得到 Global-Aware MI Enhancement loss function L M I g l o b a l \mathcal{L}_{MI}^{global} LMIglobal
L M I g l o b a l = 1 N + N n e g ( ∑ g i ∈ G N log ⁡ ( D ( z i g , z G ) ) + ∑ g j ∈ G N n e g log ⁡ ( 1 − D ( z i g , z G ′ ) ) ) (19) \mathcal{L}_{MI}^{global}={1 \over {N+N_{neg}}}(\sum_{g_i\in G}^N \log(\mathcal{D}(z_i^g,z^G))+\sum_{g_j\in G}^{N_{neg}} \log(1-\mathcal{D}(z_i^g,z^{G'}))) \tag{19} LMIglobal=N+Nneg1(giGNlog(D(zig,zG))+gjGNneglog(1D(zig,zG)))(19)

其中, n n e g n_{neg} nneg是负样本 negative samples的个数

此外,要注意的是Global-Aware MI Enhancement机制是以对比的方式执行的,因此负采样策略决定了捕获的结构信息的特定类型,并且是对比方法的关键实现细节。论文中负样本是通过以批量方式,将当前批次中的另一个图实例作为 G ′ G' G来生成的;作者为了研究负采样策略的影响,设计了另一种负采样策略 G ′ ( V , X ′ , A ) = C ( G ( V , X , A ) ) G'(V,X',A)=\mathcal{C}(G(V,X,A)) G(V,X,A)=C(G(V,X,A)),这种策略通过破坏原始图来生成负样本。破坏函数 C ( . ) \mathcal{C}(.) C(.)保留了原始节点集 V 和邻接矩阵 A,但通过按行洗牌的方式破坏了节点特征矩阵

P. Velickovic, W. Fedus, W. L. Hamilton, P. Li `o, Y. Bengio, and R. D. Hjelm, “Deep graph infomax.” in ICLR, 2019.

3.4.2 Label-Aware MI Enhancement

动机: 为了提取与任务相关的子图,鼓励检测到的子图能够预测图的标签
方法: 使用Label-Aware MI Enhancement机制来大化子图嵌入 z g z^g zg与与图标签 Y Y Y之间的相关性

I ( Y , z g ) = ∫ p ( Y , z g ) log ⁡ p ( y ∣ z g ) p ( y ) d Y d z g = ∫ p ( Y , z g ) log ⁡ p ( y ∣ z g ) d Y d z g − ∫ p ( Y , z g ) log ⁡ p ( y ) d Y d z g = ∫ p ( Y , z g ) log ⁡ p ( Y ∣ z g ) d Y d z g + H ( Y ) (20) \begin{aligned} \mathcal{I}(Y,z^g) &= \int p(Y,z^g)\log {p(y|z^g)\over p(y)}dYdz^g\\ &= \int p(Y,z^g)\log {p(y|z^g)}dYdz^g- \int p(Y,z^g)\log { p(y)}dYdz^g \\ &= \int p(Y,z^g)\log {p(Y|z^g)}dYdz^g+H(Y) \end{aligned} \tag{20} I(Y,zg)=p(Y,zg)logp(y)p(yzg)dYdzg=p(Y,zg)logp(yzg)dYdzgp(Y,zg)logp(y)dYdzg=p(Y,zg)logp(Yzg)dYdzg+H(Y)(20)

其中, H ( Y ) H(Y) H(Y)表示标签集 Y Y Y的熵,在优化过程中可以忽略; 实践中,通过对训练数据进行抽样得到一经验分布来近似 p ( Y , z g ) p(Y,z^g) p(Y,zg),从而可以将真实的后验概率 p ( Y , z g ) p(Y,z^g) p(Y,zg)替换为一个变分近似 q ϕ ( Y ∣ z g ) q_{\phi}(Y|z^g) qϕ(Yzg)以获得 I ( Y , z g ) \mathcal{I}(Y,z^g) I(Y,zg)的一个可行的下界:
I ( Y , z g ) = ∫ p ( Y , z g ) log ⁡ p ( Y ∣ z g ) d Y d z g + H ( Y ) ≥ ∫ p ( Y , z g ) log ⁡ q ϕ ( Y ∣ z g ) d Y d z g + K L ( p ( Y ∣ z g ) ∣ ∣ q ϕ ( Y ∣ z g ) ) (21) \begin{aligned} \mathcal{I}(Y,z^g) &= \int p(Y,z^g)\log {p(Y|z^g)}dYdz^g+H(Y)\\ &\geq \int p(Y,z^g)\log {q_{\phi}(Y|z^g)}dYdz^g+KL(p(Y|z^g)||q_{\phi}(Y|z^g)) \end{aligned} \tag{21} I(Y,zg)=p(Y,zg)logp(Yzg)dYdzg+H(Y)p(Y,zg)logqϕ(Yzg)dYdzg+KL(p(Yzg)∣∣qϕ(Yzg))(21)

接着,根据 Kullback Leiber 散度的非负性即 K L ( p ( Y ∣ z g ) ∣ ∣ q ϕ ( Y ∣ z g ) ) ≥ 0 KL(p(Y|z^g)||q_{\phi}(Y|z^g))\geq 0 KL(p(Yzg)∣∣qϕ(Yzg))0,可以继续得到:

I ( Y , z g ) ≥ ∫ p ( Y , z g ) log ⁡ q ϕ ( Y ∣ z g ) d Y d z g + K L ( p ( Y ∣ z g ) ∣ ∣ q ϕ ( Y ∣ z g ) ) ≥ ∫ p ( Y , z g ) log ⁡ q ϕ ( Y ∣ z g ) d Y d z g ≈ 1 N ∑ i = 1 N log ⁡ q ϕ ( Y i ∣ z i g ) = : L M I l a b e l ( z g , Y ) (22) \begin{aligned} \mathcal{I}(Y,z^g) &\geq \int p(Y,z^g)\log {q_{\phi}(Y|z^g)}dYdz^g+KL(p(Y|z^g)||q_{\phi}(Y|z^g))\\ &\geq \int p(Y,z^g)\log {q_{\phi}(Y|z^g)}dYdz^g\\ & \approx {1\over N}\sum_{i=1}^N \log {q_{\phi}(Y_i|z^g_i)}\\ &=:\mathcal{L}_{MI}^{label}(z^g,Y) \end{aligned} \tag{22} I(Y,zg)p(Y,zg)logqϕ(Yzg)dYdzg+KL(p(Yzg)∣∣qϕ(Yzg))p(Y,zg)logqϕ(Yzg)dYdzgN1i=1Nlogqϕ(Yizig)=:LMIlabel(zg,Y)(22)

上述式子表明,可以通过最小化 z g z^g zg Y Y Y之间的分类损失 L M I l a b e l ( z g , Y ) \mathcal{L}_{MI}^{label}(z^g,Y) LMIlabel(zg,Y)来最大化 I ( Y , z g ) \mathcal{I}(Y,z^g) I(Y,zg) 即 最小化 L M I l a b e l ( z g , Y ) \mathcal{L}_{MI}^{label}(z^g,Y) LMIlabel(zg,Y)就是鼓励子图表示与对应原始图标签相关;作者将 L M I l a b e l ( z g , Y ) \mathcal{L}_{MI}^{label}(z^g,Y) LMIlabel(zg,Y)设置为cross-entropy loss

3.5 Optimization of AdaSNN

L = L c l s + β 1 L M I g l o b a l + β 2 L M I l o c a l (23) \mathcal{L}=\mathcal{L}_{cls}+\beta_1\mathcal{L}_{MI}^{global}+\beta_2\mathcal{L}_{MI}^{local}\tag{23} L=Lcls+β1LMIglobal+β2LMIlocal(23)

其中, L c l s = C E ( z G , Y ) \mathcal{L}_{cls}=CE(z^G,Y) Lcls=CE(zG,Y)是一个用于图分类的cross-entropy loss

在这里插入图片描述
训练过程中,了使训练过程更稳定,使用了 内存缓冲机制memory buffer mechanism:为Depth-Agent和Neighbor-Agent分别构建了两个缓冲区 B d \mathcal{B}^d Bd B n \mathcal{B}^n Bn;获取的状态和动作存储在这些缓冲区中;当缓冲区满时,从缓冲区中随机抽取经验数据,通过公式(13)和公式(14)优化相应的Q函数,然后清空缓冲区

K.-H. Lai, D. Zha, K. Zhou, and X. Hu, “Policy-gnn: Aggregation optimization for graph neural networks,” in SIGKDD, 2020, pp. 461–471.

4 EXPERIMENTAL ANALYSIS

4.1 Experimental Setups

4.1.1 Datasets

在这里插入图片描述

4.1.2 Baselines

  • Graph neural networks : GCN、GAT、GIN
  • Graph pooling methods
    • DiffPool :为节点学习一个可微的软聚类分配,并将聚类映射到超节点,逐层作为粗化的图层【 R. Ying, J. You, C. Morris, X. Ren, W. L. Hamilton, and J. Leskovec, “Hierarchical graph representation learning with differentiable pooling,” in NeurIPS, 2018.】
    • ASAPool :利用注意力机制来捕获节点的重要性,并通过可学习的稀疏软聚类分配将子图汇集到粗糙图中【E. Ranjan, S. Sanyal, and P. P. Talukdar, “Asap: Adaptive structure aware pooling for learning hierarchical graph representations.” in AAAI, 2020, pp. 5470–5477.】
    • Top-k Pool:自适应地选择一些关键节点,根据它们的重要性向量形成一个更小的子图【H. Gao and S. Ji, “Graph u-nets,” in ICML, K. Chaudhuri and R. Salakhutdinov, Eds., vol. 97, 2019, pp. 2083–2092.】
    • SortPool:按照一致的顺序对图节点进行排序,并设计在节点序列上训练的局部图卷积模型【M. Zhang, Z. Cui, M. Neumann, and Y. Chen, “An end-to-end deep learning architecture for graph classification,” in AAAI, 2018.】
    • SAGPool:使用自注意力机制来保留一些节点并删除其他节点【J. Lee, I. Lee, and J. Kang, “Self-attention graph pooling,” in ICML, vol. 97, 2019, pp. 3734–3743.】
    • EdgePool:通过边收缩学习局部和稀疏池化变换【F. Diehl, T. Brunner, M. T. Le, and A. Knoll, “Towards graph pooling by edge contraction,” in ICML 2019 Workshop on Learning and Reasoning with Graph-Structured Data, 2019.】
  • Critical structure detection methods
    • Ego-CNN :在每一层都采用ego-convolutions,并通过堆叠层以ego-centric的方式检测精确的关键结构【R.-C. Tzeng and S.-H. Wu, “Distributed, egocentric representations of graphs for detecting critical structures,” in ICML, 2019, pp. 6354–6362.】
    • SIB:将一般信息瓶颈原则扩展到图数据,以解决子图识别问题【J. Yu, T. Xu, Y. Rong, Y. Bian, J. Huang, and R. He, “Graph information bottleneck for subgraph recognition,” in ICLR, 2021.】
    • SUGAR:首先对一些子图进行采样,然后使用DQN算法选择top-k关键子图作为整个图的代表性抽象【Q. Sun, J. Li, H. Peng, J. Wu, Y. Ning, P. S. Yu, and L. He, “Sugar: Subgraph neural network with reinforcement pooling and self-supervised mutual information mechanism,” in The Web Conference, 2021.】
    • CAL:提出因果注意力学习(CAL)策略,通过注意力模块估计因果和shortcut features来发现关键子图【Y. Sui, X. Wang, J. Wu, M. Lin, X. He, and T.-S. Chua, “Causal attention for interpretable and generalizable graph classification,” in SIGKDD, 2022, pp. 1696–1705.】
  • Graph transformer
    • SAT:通过提取每个节点的 k-hop 子图或 k 子树,然后再计算注意力,将结构信息融入原始自注意力中【D. Chen, L. O’Bray, and K. Borgwardt, “Structure-aware transformer for graph representation learning,” in ICML. PMLR, 2022, pp. 3469–3489.】
  • Graph reinforcement learning method:
    • PolicyGNN:使用强化学习算法来自适应地确定每个节点的聚合深度【K.-H. Lai, D. Zha, K. Zhou, and X. Hu, “Policy-gnn: Aggregation optimization for graph neural networks,” in SIGKDD, 2020, pp. 461–471.】

4.1.3 Implementation Details

在这里插入图片描述

4.2 Overall Evaluation (Q1)

评估 AdaSNN 在图分类和图去噪任务上的能力,以验证 AdaSNN 提高图学习质量和鲁棒性的能力

4.2.1 Graph Classification

在这里插入图片描述

  • 子图级信息去噪的直觉
  • 利用任意大小和形状的子图

4.2.2 Graph Denoising

为了评估AdaSNN的鲁棒性,我们通过在REDDITB数据集中删除或添加边来生成合成数据集。具体来说,对于每个图形,我们随机删除(如果存在边)或添加(如果没有这样的边)25%、50% 和 75% 的边
在这里插入图片描述

4.3 Analysis of the Reinforced Subgraph Detection Module (Q2)

从有效性、稳定性和参数灵敏度方面分析了增强子图检测模块的影响

4.3.1 Impact of the Reinforced Subgraph Detection Module

设计了AdaSNN 的两种变体:

  • AdaSNN(2hop) :固定 2 跳子图作为关键子图
  • AdaSNN(random) :将随机选择深度的子图作为关键子图

在这里插入图片描述
由于将关键子图作为整个图的代表性抽象,因此检测到的子图的质量直接决定了图表示的质量
封闭的阴影区域是三次训练运行的精度范围,中间实线是平均精度,虚线水平线是过去 10 个时期的平均精度值

SUGAR是一个两阶段框架,通过固定规则对子图进行采样,然后选择关键子图,其中使用强化学习算法来确定关键子图的数量——SUGAR检测到的关键子图受采样规则的约束

封闭的阴影区域是三次训练运行的精度范围,中间实线是平均精度,虚线水平线是过去 10 个时期的平均精度值

正如我们所观察到的,AdaSNN的训练过程不如SUGAR稳定,这可能是因为关键子图检测的强化学习算法更复杂。与SUGAR相比,AdaSNN的平均准确率提高了约0.78%,这支持了我们对关键子图检测的直觉

4.3.2 Reinforcement Learning Process

由于增强子图检测模块中的RL算法和子图神经网络是联合训练的,因此它们的更新和收敛很重要

在这里插入图片描述

阴影区域由最小和最大奖励包围,中间实线是五次运行的平均奖励。水平虚线表示过去 10 个时期的平均奖励

MUTAG的平均奖励收敛到0.4243,在IMDB-B上收敛到0.4852,在30个epoch内有一个稳定的学习曲线,这意味着该框架可以根据检测到的子图预测真实的标签

表明所提出的增强子图检测模块可以与子图神经网络一起稳定地进行训练,并且收敛速度快

4.3.3 Parameter Sensitivity of the Number of Subgraphs and the Maximum Subgraph Depth

分析检测到的子图数量 N 和最大子图深度 K 的影响
在这里插入图片描述在这里插入图片描述

4.4 Analysis of the Bi-Level MI Enhancement Mechanism (Q3)

从有效性、负采样策略和参数敏感性等方面分析了Bi-Level MI Enhancement机制

4.4.1 Impact of the Bi-Level MI Enhancement Mechanism

引入了以下三种AdaSNN变体:

  • AdaSNN(w/o Bi-Level):无Bi-Level MI Enhancement机制的AdaSNN, L = L c l s \mathcal{L}=\mathcal{L}_{cls} L=Lcls
  • AdaSNN(w/o LA):不带Label-Aware MI Enhancement的 AdaSNN,即具有Global-Aware MI enhancement , L = L + β 1 L M I g l o b a l \mathcal{L}=\mathcal{L}+\beta_1\mathcal{L}_{MI}^{global} L=L+β1LMIglobal
  • AdaSNN(w/o GA):不带Global-Aware MI enhancement的 AdaSNN,即具有Label-Aware MI Enhancement , L = L + β 2 L M I l a b e l \mathcal{L}=\mathcal{L}+\beta_2\mathcal{L}_{MI}^{label} L=L+β2LMIlabel
  • AdaSNN(w/o sub):没有子图检测和草图化过程,使用GIN作为图编码器,直接最大化了节点与图之间的Global-Aware互信息以及节点与图标签之间的LabelAware互信息

在这里插入图片描述
标签感知MI在增强子图的批判性和判别性方面发挥着更重要的作用
强制单个节点同时保留图形属性和标签信息,显示了不好的性能
在这里插入图片描述
所提出的Bi-Level MI Enhancement 机制可以通过两种增强方式捕获不同类型数据集的不同关键信息

4.4.2 Impact of the Negative Sampling Strategy

负采样策略即得到 G ′ G′ G是Global-Aware MI Enhancement的一个关键实现细节,它控制了捕获结构信息的特定类型
在这里插入图片描述

可能的解释是图破坏负采样策略会使G′失去重要的结构属性,只能给出弱监督

应仔细设计负抽样策略,以便子图表示可以区分其他图实例

4.4.3 Parameter Sensitivity of the Negative Sampling Ratio

Global-Aware MI 增强机制旨在以对比方式最大化关键子图和图之间的互信息。人们普遍认为,竞争性对比方法需要大量的负样本

在这里插入图片描述

较大的负采样率似乎并不能显著提高AdaSNN的性能。一个可能的原因是,为每个检测到的关键子图绘制负样本,即使负采样率很小,这也已经提供了足够的自我监督。考虑到大量负样本造成的计算开销,我们在其他实验中将负采样率设置为1

4.5 Training Stability of AdaSNN (Q4)

AdaSNN的核心思想是通过增强子图检测模块进行关键子图抽象。将GNN和强化学习算法相结合确实很复杂且具有挑战性。此外,自监督双级MI增强机制中互信息的估计始终受到训练不稳定的影响。在本小节中,我们分析了AdaSNN的收敛性

在这里插入图片描述
在这里插入图片描述
即使结合了RL算法、自监督MI增强机制和GNN的复杂组合,所提出的AdaSNN也能得到稳定的训练

4.6 Complexity and Time Analysis

  • AdaSNN图上的总体时间复杂度 O ( N b ‾ K + N b ‾ 2 + N 2 ) O(N\overline{b}^K+N\overline{b}^2+N^2) O(NbK+Nb2+N2);其中, N N N是子图的个数, b ‾ \overline{b} b是平均节点度, K K K是组大子图深度

    • 增强子图检测模块的时间复杂度 O ( N b ‾ K ) O(N\overline{b}^K) O(NbK)
    • 2 层 GIN 编码器的时间复杂度 O ( N b ‾ 2 ) O(N\overline{b}^2) O(Nb2)
    • 子图草图化的时间复杂度 O ( N 2 ) O(N^2) O(N2)
    • 对于Bi-Level MI Enhancement Mechanism,损失计算需要 O ( N ) O(N) O(N)
    • 实验中,计算了 10 个 epoch 的时间消耗并报告一个时期的平均时间
      在这里插入图片描述
  • AdaSNN 的整体内存复杂度 O ( N b ‾ K ) O(N\overline{b}^K) O(NbK)

    • 实验中,子图个数 N从 5 到 20 中选择, K 设置为 4 或 5

4.7 Visualization (Q5)

将结果可视化以直观地深入了解 AdaSNN 带来的变化 —— 检验AdaSNN在解释图属性方面的能力

在这里插入图片描述

在这里插入图片描述
节点颜色表示节点上标记的元素类型
在MUTAG数据集中,有188个分子图通过它们对细菌的诱变作用进行标记,致突变分子的主要决定因素是硝基元素和连接到碳环的NO2
在这里插入图片描述
节点颜色的阴影与关键子图中节点的频率成正比

MDB-B 是一个电影合作数据集,由在 IMDB 中出演电影的 1,000 个男演员和女演员的自我网络组成。这些自我网络被标记为动作片或浪漫片类型,其中节点代表男演员/女演员,边代表演员在同一部电影中的共同出演。如图 15 所示,AdaSNN 能够发现一些节点(即一些重要演员)之间的密切关系,而不是平等对待所有节点。此外,大多数检测到的子图包含了原始图中两个社区之间的桥接节点。草图也反映了演员群体之间的互动

视化结果表明,所提出的AdaSNN可以检测判别性子图,并且具有为学习结果提供可解释性的潜力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2035041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

html+css 实现hover 翻转按钮

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目…

NCL的安装和运行;气象数据可视化;散点图、直方图、等值线图、箭头图、任意折线和任意图形、非规则网格、图形叠加、组图的绘制

NCAR Command Language(NCL)是由美国大气研究中心(NCAR)推出的一款用于科学数据计算和可视化的免费软件。它有着非常强大的文件输入和输出功能,可读写netCDF-3、netCDF-4 classic、HDF4、binary、ASCII数据&#xff0c…

LVS实验的三模式总结

文章目录 LVS的概念叙述NAT工作模式实战案例**思想:**NAT工作模式的优点NAT工作模式的缺点 NAT工作模式的应用场景大致配置 route:打开路由内核功能 部署DR模式集群案例工作思想:大致工作图如下思路模型 具体配置与事实步骤补充 防火墙标签解…

RCE漏洞复现

PHP命令执行常用函数 回调函数必须是命令执行和代码执行的函数,有两个条件 必须是函数,而且需要有函数运行的参数 危害:可以直接删除文件,添加文件,甚至可以添加用户 system --执行外部程序,并且显示输…

Ubuntu操作系统的基础操作和设置(详细且全面)(1)

前言 当Ubuntu系统被搭建完成以后,为了方便大家更容易上手,所以对常见的基础操作和设置进行讲解 1.支持中文显示,中文输入设置 1.1:支持中文显示 Ubuntu操作系统默认显示和输入的语言是英文。所以,如果你的英…

《虚拟之旅:开启无限可能的机器世界》简介:

1.Ubonto的介绍: Ubuntu 是一个流行的开源操作系统,基于 Linux 内核。 它具有以下一些特点和优势: 开源免费:任何人都可以免费使用、修改和分发。丰富的软件库:通过软件包管理器可以方便地安装各种应用程序。良好的…

Linux系统移植——开发板烧写(二)

目录: 目录: 一、什么是EMMC分区? 1.1 eMMC分区 1.2 分区的管理 二、相关命令介绍: 2.1 mmc 2.1.1 主要功能 2.1.2 示例用法 2.2 fdisk 2.2.1 基本功能 2.2.2 交互模式常用命令 2.2.3 注意事项 三、U-BOOT烧写 3.1 mmc命令 3.2 f…

Java并发面试题汇总

文章目录 线程什么是线程和进程?请简要描述线程与进程的关系,区别及优缺点?程序计数器、虚拟机栈、虚拟机栈、堆和方法区如何创建线程?线程的生命周期什么是线程上下文切换?Thread#sleep() 方法和 Object#wait() 方法对比为什么 wait() 方法不定义在 Thread 中?为什么 sle…

【解压即玩】PC端最好用最漂亮的前端CoinOPS整合包186G 复古带遮罩和滤镜,怀旧拉满

这是大神做的一个整合包,让游戏界面更加的漂亮,如图,下面是游戏选择画面,右侧是滚动的圆盘,左侧显示游戏的画面: 实际游戏时的界面是这样的: 应当是目前最漂亮的游戏界面了。之前有人说在电脑上…

sp eric靶机

扫描IP 端口扫描 nmap 192.168.111.146 -p- -sV 目录扫描 # 使用命令 dirsearch -u "http://192.168.111.146" 访问靶机IP地址 拼接访问 admin.php ,发现登录框界面,尝试sql注入,弱口令等,没有结果 看看 .git &#…

【C语言篇】C语言常考及易错题整理DAY2

文章目录 C语言常考及易错题整理选择题编程题至少是其他数字两倍的最大数两个数组的交集图片整理寻找数组的中心下标多数元素除自身以外数组的乘积不使用加减乘除求两个数的加法 C语言常考及易错题整理 选择题 下列 for 循环的次数为( ) for(int i 0…

高可用keepalived详解---干货满满(企业应用示例)

目录 一、master/master 的 Keepalived 双主架构 1.1 ka1部署 1.2 ka2部署 1.3 重启测试 二、实现ipvs高可用 (keepalivedlvs) 2.1 ipvs的相关配置 2.1.1 虚拟服务器配置架构 2.1.2 virtual server (虚拟服务器)的定义格式 2.1.3 虚拟服务器…

四十、大数据技术之Kafka3.x(3)

🌻🌻 目录 一、Kafka Broker1.1 Kafka Broker工作流程1.1.1 Zookeeper 存储的Kafka信息1.1.2 Kafka Broker 总体工作流程1.1.3 Broker 重要参数 1.2 生产经验——节点服役和退役1.2.1 服役新节点1.2.2 退役旧节点 1.3 Kafka 副本1.3.1 副本基本信息1.3.2…

线程知识及编程

线程定义 在Python中,想要实现多任务还可以使用多线程来完成。 为什么使用多线程? 进程是分配资源的最小单位 , 一旦创建一个进程就会分配一定的资源 , 就像跟两个人聊QQ就需要打开两个QQ软件一样是比较浪费资源的 . 线程是程序执行的最小单位 , 实际…

企业应该如何准备 EcoVadis 审核?

企业准备 EcoVadis 审核可以参考以下步骤: 注册:在网上注册并提供公司的相关信息,包括法律实体名称、国家和地区、企业规模和行业等。如果是受客户邀请参加评估,需按照邀请邮件中的链接进行注册,并确保客户能随时获知评…

【ML】强化学习(Reinforcement Learning)及其拆解

【ML】强化学习(Reinforcement Learning) 1. RL Outline 强化学习(Reinforcement Learning)概述1.1 RL的基本框架 2. RL 引入:从这个小游戏开始3. Policy Gradient 方法4. Actor-Critic 方法5. [奖励塑形(R…

(第二十六天)

上午 1、web01与web02服务器搭建 ip:10.0.0.11 systemctl stop filewalld systemctl disable firewalld setenforce 0 vim /etc/selinux/config SELINUX disabled yum -y install nginx echo "web----------01" > /usr/share/nginx/html/index.h…

力扣热题100_二叉树_230_二叉搜索树中第K小的元素

文章目录 题目链接解题思路解题代码 题目链接 230. 二叉搜索树中第K小的元素 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 示例 1: 输入&#xff1a…

图论:欧拉路

欧拉路是什么 什么?你对这个名字感到很陌生?再看看是图论的内容,感觉是不是很难?其实一点也不难,这就是生活中的一笔画问题,也就是不重复的经过每一条边并可以访问所有的点,先看看这个图&#…

Python字符串格式化方法输出到控制台

python打印是这样的,我希望resource_id能够对齐输出: 3种格式化方法 %格式化 >>> pi3.141592653589793 >>> e2.718281828459045 >>> print("pi%.2f e%.3f" % (pi, e) ) pi3.14 e2.718“”.format()格式化 >…