Pathfinder Discovery Networks for Neural Message Passing(PDNConv)

Pathfinder Discovery Networks for Neural Message Passing(PDNConv)

摘要

在这项工作中,我们提出了探路者发现网络(Pathfinder Discovery Networks, PDNs),一种在具有下游半监督模型的多路网络上联合学习消息传递图的方法。PDNs通过归纳学习每个边的聚合权值,为下游学习任务提供最佳结果。PDNs是图上注意机制的一种推广,它允许灵活地构造节点之间的相似函数。它们还支持边缘卷积和廉价的多尺度混合层。我们展示了PDNs克服了现有图注意方法(如图注意网络)的弱点,如权重递减问题。

我们的实验结果表明,学术节点分类任务具有竞争性的预测性能。一组具有挑战性的节点分类实验的额外结果显示,PDNs可以学习比现有基线更广泛的函数类。我们分析了PDN的相对计算复杂度,并表明PDN运行时并不比静态图模型高很多。最后,我们讨论如何使用PDNs来构建一个易于解释的注意机制,让用户理解图中的信息传播。

1. 引言

最近,人们对将神经网络应用于图形数据产生了浓厚的兴趣。在过去的几年里,各种各样的方法得到了发展,从图嵌入[15,35,37,42],到图卷积网络[17,22],再到消息传递神经网络[14]。尽管功能强大,但许多方法都有一个严重的限制:它们假设底层图是静态的,作为不可变的输入参数提供,其中节点对之间的边只有一个权值。然而,在许多现实世界的应用程序中,很少有一个“正确的”图——相反,最好的任务性能来自于组合许多不同类型的关系[16]。例如,在一个视频分类任务中,使用的最佳图可能会考虑视频之间几种不同类型的相似性(例如,图像相似性和音频相似性)。在实践中,我们认为将图的构建与手头的学习任务分开是错误的;相反,最优图必须来自于对所解决问题的深入考虑。

一些方法试图放宽这些限制。例如,图关注网络(GATs)[50],尝试重新加权图中的每条边。然而,GAT模型容易过拟合,由于其过参数化,难以在大型真实世界数据集上训练。此外,它们还面临权值递减的问题,随着节点度的增加,这将导致学习到的边权值趋于零。最后(也许是最重要的),GATs式的注意约束边的重加权是节点特征的单一聚合,这阻止了GATs在不同邻域结构中学习复杂的边差分算子。

另一组研究提出了异构数据的具体模型[59,65]。然而,这些模型通常对特定类型的数据输入非常具体(例如,一个模型可能支持视频和关系数据,但不支持地理空间数据),因此很难与建模的新进展集成。更重要的是,尽管异构方法确实包含了各种各样的数据类型,但它们仍然把图构造作为一个从根本上孤立于图学习的问题。因此,异构的方法将会因为上面提到的同样的原因而困扰。

在这项工作中,我们回答了这样一个问题:“我们如何学习构建解决任何给定学习问题的最优图?”为了获得灵感,我们回顾了探路者网络[44],这是心理学文献中的一个图表构建测量。在探路者网络中,为了确定节点对之间的边,会同时考虑多种接近性判断(例如来自人类的亲缘度分数)。离散算法寻找最能保留输入邻近性某些属性(例如最短路径)的图。虽然传统的探路者网络对于聚合主观信息等任务很有用,但不幸的是,它们不适用于大多数图学习任务。最近,Halcrow等人[16]描述了一个类似的问题,即从多个邻近点构建图,这个问题出现在各种各样的工业应用中。他们的解决方案,Grale,使用一个模型来预先计算一个融合的相似度网络,用于图学习(一次一个边缘)。虽然这个系统有很多优点(可扩展性,允许使用不同类型的关系,等等),并且在谷歌中被广泛应用,但它不能与下游任务一起学习图形。在这里,我们更进一步,提出了探路者发现网络(Pathfinder Discovery Networks, PDNs),一个学习网络的框架,通过一组具有不同相似度分数的实体,联合一个图神经网络任务。

我们的主要贡献是探路者层的设计和验证——这是一个可微的神经网络层,它能够将定义在一组节点上的多个接近信息源组合成一个加权图。探路者层使用前馈神经网络学习边缘权值,而底层加权多路图的稀疏性不变(见图1)。该层直接向下游的GNN模型进行反馈,该模型是为了学习任意任务而建立的——在本文中是半监督分类。来自监督分类任务的梯度向下传播到边缘权值,允许PDNs创建一个针对当前分类任务优化的图。我们的模型以归纳的方式学习这个图,允许将学习到的图聚合从一个图转移到另一个图。

请添加图片描述

探路者发现网络采用多组加权边,并学习一个特别适合下游预测任务的图。在我们的多路图示例中(图1a),我们有三种类型的边和两种类型的节点。探路者发现网络会对节点进行分类,并输出一个学习过的忘记了类间边的探路者图(图1b)。

我们展示了我们的框架的灵活性,通过显示一个数字模型可以被视为我们的一般框架的特殊情况。首先,我们展示了如何用我们的建模框架来制定边缘卷积模型。其次,我们建立了一个可以定义模型,执行廉价的多尺度混合与探路者层。

我们的实证分析集中于节点分类任务、特征重要性度量和运行时比较。我们使用合成实验展示了一类可学习的任务,其中PDNs显著优于当前最先进的方法,这归功于在多个接近输入上学习任意函数的独特能力。然后,我们转向现实世界的节点分类问题,并证明PDN在准确性方面比最具竞争力的现有图神经网络模型具有0.8%-3.5%的预测性能优势。我们分析了PDNs的运行,并证明探路者层增加了一个常数乘数的训练运行。最后,我们描述了探路者层的权重如何被视为对输入图和边缘特征的关注,并增加了基础信息传播的可解释性。我们工作的主要贡献如下:

(1)我们提出了一种灵活的框架,结合任何图卷积层来学习单个图的消息传递。

(2)我们展示了如何使用这个框架来定义边缘卷积神经网络模型,其中消息传递图是从节点特征学习的。

(3)我们定义了廉价的多尺度混合模型,其中消息传递图的邻接矩阵是邻接矩阵幂的线性组合。

(4)我们通过实证证明,我们的模型在一系列节点分类任务上具有竞争性的结果,在小规模图上具有良好的运行时间,并且在简单模型的情况下具有可解释的权重。

2. PRELIMINARIES

我们首先总结了在我们的工作中使用的符号,并回顾了多重性、简化谱图卷积和图注意的相关概念。我们将我们的模型构建为一个通用的构建模块,可以应用于各种各样的图神经网络设计。

符号

假设我们有一组顶点 V V V D D D定义在这些顶点上的图形由 G 1 . . . . . . G D G_1......G_D G1......GD有各自的边集 E 1 . . . . . . E D E_1......E_D E1......ED 这些图可以表示为 ∣ V ∣ × ∣ V ∣ |V|×|V| V×V邻接矩阵,分别 A 1 . . . . . . A D A_1......A_D A1......AD我们假设节点具有通用的顶点特征。我们将其设置为 V V V,这些特征由特征矩阵 x ∈ R ∣ V ∣ × F x∈\R^{|V|×F} xRV×F,其中 F F F是特征的数量。此外,对于每个节点,我们都有一个想要预测的目标。对于整个顶点 V V V,目标被定义为 ∣ V ∣ × C |V|×C V×C二进制矩阵,其中C是节点的数量。我们的目标是利用图和节点特征来预测目标类矩阵。

Multiplex graphs and learning

这个问题设置可以被框定为节点分类,该节点分类包含一个没有层间边的加权多路图28。与异构图不同,多路图在单个节点类型上操作。目前从多路图中学习的方法只推广基于邻域的嵌入以适应多路设置[27,62]。在这些方法中,对每个图(或多路图中的每一层)学习单独的节点嵌入;这些嵌入被连接起来形成节点表示。这些方法有两个局限性。首先,节点嵌入具有转导性,因此模型不能从一个图推广到另一个图。其次,这些方法开销很大,因为节点级嵌入必须分别为每个图计算。

Graph convolutions

传统的谱图卷积网络[22]的设置只有一个图 G G G和一个对应的邻接矩阵 A A A。在谱模型的前向传递中,利用度归一化邻接矩阵 D − 1 / 2 A D − 1 / 2 D^{−1/2}AD^{−1/2} D1/2AD1/2传播隐藏节点表示。这些隐藏表示是通过将特征矩阵 X X X乘以一个可训练的 F × D F×D F×D权重矩阵 w w w,最后将聚合表示用 σ ( ⋅ ) \sigma (·) σ()如式(1)所示的线性函数,它描述了整个前向过程。

请添加图片描述

正如定义的那样,谱图卷积模型不能容纳多个图的存在——要么必须提出一个预定义的边权聚合函数,要么只使用 G 1 . . . . . . G D G_1......G_D G1......GD中的一个图作为消息传递图。PDNs的直接动机就是这个根本弱点。我们注意到,一系列图神经网络架构使用谱图卷积作为构建块[8]。因此,我们相信克服单图限制可以导致所有其他相关模型的显著改进。

Graph attention networks

图关注网络[50]利用边缘端点节点的特征来学习用于消息传递的边缘权值。节点特征通过一个可学习的参数矩阵进行变换,并将每条边连接在一起。节点对表示乘以一个注意向量,每条边的权值由定义在源节点邻居上的softmax单元决定。虽然GAT模型可以用多个注意力头学习多个边权值,但这并不是学习多重图的直接比较。在[50]中,每个注意头都是在相同的节点特征上训练的,这就排除了合并来自多个来源的独特特征。此外,GAT不能充分利用多个注意头的力量,因为最终边权是单个注意头的简单平均值(而不是一个学习函数)。因此,GAT模型无法学习多个边集上的函数表达范围,这严重限制了它对多图问题的适用性。

Pathfinder discovery networks as a building block

在我们的工作中引入的探路者层足够通用,可以为定义在多路图上的广泛通用图神经网络模型提供消息传递矩阵。探路者发现网络可以输出在一组节点上定义的图,每个边具有单个边权值;因此,PDNs可以很容易地应用于任何直接使用图的神经模型(包括谱图卷积[22],图采样和聚合[17,60],多尺度图卷积[1,3],聚类图卷积[9],神经预测的个性化传播[6,23]和简化图卷积[53])。我们进一步注意到,探路者层可以用作节点预测之外的学习任务的构建块。例如,使用探路器层、适当的图卷积层和图级池,如sort pooling或Diff pooling[61,64],可以很容易地定义模型来描述或分类整个图。

3. MESSAGE PASSING ON LEARNED GRAPHS

我们的模型共同从一组相似图中学习单个图,并使用该学习图的邻接矩阵作为传播矩阵的图神经网络。描述输入图本身的邻接矩阵可以被学习或预先计算。一个范例图可以是一组K维从多模态数据点计算两两相似度的最近邻图,图像、声音和文本的单独图。另一个潜在的例子可能是使用归一化邻接矩阵幂作为节点之间两两相似性的度量。一般来说,我们可以包含尽可能多的信息,期望PDN会在考虑所有特征相关性的基础上找到最优的图结构。

3.1 Pathfinder Learning Layers

在这里,我们详细介绍了探路者学习层的设计——神经网络架构,用于将不同种类的邻近数据组合在一起。我们首先考虑使用一个简单的模型来组合邻近性信息,并对其进行扩展,以支持对多数据上的复杂关系建模。

定义一

探路者神经元。寻径神经元(图2a)采用加权邻接矩 A ~ 1 . . . . . . A ~ D \tilde A_1......\tilde A_D A~1......A~D作为输入,并将它们组合为单个 ∣ V ∣ × ∣ V ∣ |V|×|V| V×V学习到的图 G ~ \tilde G G~作为它的输出。它使用可训练权值来学习各种相似信息的相对重要性,如下所示:
请添加图片描述

elementwise(两个张量之间的操作,它在相应张量内的对应的元素进行操作) σ ( ⋅ ) \sigma (·) σ()是一个非线性函数和 β i \beta_i βi是可训练的权重是特定于 i t h i^{tℎ} ith输入邻接矩阵(见图2a)。我们假设不存在偏差项,这意味着:

1. G ~ \tilde G G~的计算完全可以用稀疏线性代数操作完成;

2.一个探路者神经元的输出图可以用作其他探路者神经元的输入。

此外,我们注意到多个探路者神经元可以接受相同的输入并学习不同的权重,类似于GAT多注意头。

定义二

探路者层。探路者层使用多个探路者神经元作为构建更复杂的神经模型的模块。 i t h i^{tℎ} ith探路者层与 q q q神经元使用 p p p输入图可以写成:

请添加图片描述

G ~ \tilde G G~由单个探路者神经元输出。神经元中参数的数量取决于前一层探路者图的数量。

定义三

探路者图。一个探路者神经元,或者一个探路者发现网络中一系列的探路者层的最终输出就是探路者图,表示为 G ^ \hat G G^

探路者图可用于在任意下游图卷积模型中传递消息(参见图2b)。如果输入图的边集充分重叠且原始图是稀疏的,我们期望 G ^ \hat G G^是稀疏的。

3.2 Pathfinder Discovery Networks

上述探路者图可以用作任意下游图神经网络的输入。作为一个激励性的例子,考虑eq.1定义的谱图卷积网络。我们可以用最终的探路者图替换 A A A来扩充这个方程:

请添加图片描述

定义四

探索者发现网络。这种消息传递模型和探路者层(或神经元)的一般组合设计就是探路者发现网络。图2b描述了探路者网络具有单个隐藏层的实例。

虽然我们在这项工作中专注于特定的应用,但我们注意到pdn可以用于大多数图神经网络模型和目标(包括有监督和无监督)。

请添加图片描述

单个探路者神经元(2a)和单个隐藏层中包含多个探路者神经元的探路者发现网络(2b)。探路者 G ~ \tilde G G~输出由探路者层使用的一些图卷积层 σ ^ ( ⋅ ) \hat \sigma(·) σ^()。我们在这里使用GCN模型[22]来说明这一点,展示了如何对学习到的图进行规范化。

4. ADVANTAGES OF PDNS

正如Halcrow等人所指出的。[16]和其他[10,54],图学习系统的性能可以根据所使用网络的质量有很大的差异。在本节中,我们将比较基于流行的图注意网络(GAT)模型和pdn的方法。虽然GAT的动机不是明确的图结构问题,但我们注意到,在目前的文献中,GAT方法可以被视为尝试与深度学习任务一起学习图。然而,GAT和相关的注意力模型有以下关键弱点,使它们不适合构建图表:

(1) GAT模型在单一来源的特征上学习单一聚合,这极大地限制了它可以学习的图的表达能力。

(2) GAT框架的正则化严重依赖于多个注意头。不幸的是,参数的增加导致过拟合,这在真实世界的数据集上训练时引发了问题[45,51]。

PDNs可以缓解这些弱点。

4.1 Expressivity

PDNs被从头设计来处理任意数量的模态,每个模态被定义为顶点上的相似性度量。探路者网络能够以任意方式组合这些相似性度量。

4.1.1 异或

作为一个特殊的例子,考虑异或操作。在多路图设置中,异或可以描述这样一种情况:两条边同时存在的情况与两条边单独存在的情况具有不同的语义。

请添加图片描述

表1:PDN模型能够学习多重边上的复杂关系。这里我们展示了XOR(异或)关系是如何通过两个网络( A u , v ′ 和 A u , v ′ ′ A'_{u,v}和A''_{u,v} Au,vAu,v′′)。

**命题:**PDNs可以学习多路图的不同层上的异或操作

证明:让我们考虑一个具有两个分量二值边权向量 A u , v ′ 和 A u , v ′ ′ A'_{u,v}和A''_{u,v} Au,vAu,v′′在每边。进一步,考虑一个由包含2个神经元的隐藏层组成的PDN,用下列方程描述:

请添加图片描述

如表6所示,这个网络再现了异或函数。我们还包括隐藏状态 ( h 1 , h 2 ) (ℎ1,ℎ2) (h1h2)和预测边权 ( a u , v ) (a_{u,v}) (au,v)通过这个探路者层获得。

请添加图片描述

在没有特征工程的实际应用中,GCN和GAT模型只能利用其中一个边缘特征或边缘的存在作为边缘权值。这些权值本身不能分离不同的边类型

4.1.2 Different Edge Weight Semantics

当考虑到一个节点有两种边类型,其中一条边表示相似性,一条表示距离时,也可以进行类似的分析。一个PDN可以正确地学习反转距离边缘,产生一个单一的相似性度量,它包含了所有提供的信息。因为GAT使用softmax聚合,它不能学习逆序;它能做的就是忽略距离这条边。标准的GCN将所有的边都作为相似度或距离来处理,因此最终会误解由两种边类型之一提供的信息。

4.2 Resilience to skewed degree distributions

当节点的度数非常大时,许多GNN实现都会遇到困难。如[5]所示在图注意(GAT)模型中 ( a u , v ) (a_{u,v}) (au,v)[50]强制边权值为0作为邻居 u u u增加的大小:

请添加图片描述

这种过度平滑限制了GAT和类似模型在真实世界图上的有效性,其中节点度通常遵循幂律分布[5]。通过比较,PDNs可以独立地对边缘权值进行评分,因此不会错误地惩罚高度节点。

**命题:**可以构造PDNs,使度较高的节点不会将边权值驱动为0。

**证明:**让我们考虑一条边 ( u , v ) (u,v) (u,v)用于消息传递的无向图 G G G。我们将传递这条边权值的消息表示为 ( a u , v ) (a_{u,v}) (au,v)此外,我们假设这条边有一个二维特征向量 A u , v ′ 和 A u , v ′ ′ A'_{u,v}和A''_{u,v} Au,vAu,v′′。让我们进一步定义 ( a u , v ) (a_{u,v}) (au,v)在一个没有隐藏层和线性激活函数的PDN中:

请添加图片描述

在eq (6)中 β \beta β取值为PDN的可训练参数。我们看到PDN边缘权值的限制行为不依赖于邻域大小。

在GAT和GCN模型中,高度节点会有大量的边缘权值接近于零。这导致了低质量的邻居表示,对下游任务没有区别。

4.3 Edge-weight calculation time complexity

GAT的实现是通过对多个注意头进行平均来实现的;实验结果是[50]在所有节点特性上使用8个惟一的注意头。在特征很少的情况下,这可能会导致显著的过拟合,或者对于较大的特征空间进行极大的矩阵计算。

这对计算每条边所需的运行时都有影响,在训练和推断期间都有影响。不使用缓存的GCN和GAT模型的初级实现可以计算权重 ( a u , v ) (a_{u,v}) (au,v) O ( ∣ N ( v ) ∣ ) O(|N(v)|) O(N(v))时间。相比之下,使用具有线性激活函数的浅层PDN可以在 O ( 1 ) O(1) O(1)时间内计算出相同的边权值

5. VARIATIONS ON THE BASIC MODEL

为了理解PDN背后的核心动机,到目前为止,我们的讨论仅限于高水平的一般性特征。在本部分中,我们将深入到基本模型的特定变体,以演示提议的框架的灵活性和表现力。

5.1 A model with learned similarities

我们顺便提到,我们可以设计一个PDN,其中描述相似图的邻接矩阵中的权重本身由神经网络参数化。到目前为止,原先的方法中我们假设由邻接矩阵 A ~ 1 . . . . . . A ~ D \tilde A_1......\tilde A_D A~1......A~D都来自预先计算出的相似性。与之前相反现在让我们假设对于每个二进 A ~ 1 . . . . . . A ~ D \tilde A_1......\tilde A_D A~1......A~D我们有一个特征矩阵 X ~ 1 . . . . . . X ~ D \tilde X_1......\tilde X_D X~1......X~D然后,我们可以定义一个图卷积模型,其中输入图的边权重通过节点特征来学习。让 H i H_i Hi为节点隐含表示矩阵,

请添加图片描述

这里是 X i 是 i t h X_i是i^{tℎ} Xiith一般节点特征矩阵,函数 σ ( ⋅ ) \sigma (·) σ()是一个非线性函数以及 w i ′ 和 b i ′ w'_i和b'_i wibi是特征矩阵、特定的可训练权重矩阵和偏差向量。使用端点表示,我们定义了 G ~ i \tilde G_i G~i作为图学习神经元的学习输入邻接矩阵:

请添加图片描述

我们使用 σ ( ⋅ ) \sigma (·) σ()来变换原始边权重,这些边权是以Hadamard乘积的原始邻接矩阵为条件的。利用各个邻接矩阵的相似性,计算(8)的时间为 O ( ∣ E ∣ ) O(|E|) O(E)

寻路器神经元接收多个学习的图形作为输入,组合这些图形并输出最终的图形。图3总结了这个想法,我们在哪里有 D D D不同的特征矩阵,从每个特征矩阵中,我们学习到一个单独的图形,我们使用该图形作为寻路神经元的输入,它进而输出 G ~ \tilde G G~。该最终聚集由Eq.(9)定义,其中 β i \beta _i βi是作为学习图的权重的学习参数, σ ( ⋅ ) \sigma (·) σ()是一个非线性函数。
请添加图片描述

请添加图片描述

探路者神经元设计具有学习到的相似性分数。从每个节点特征矩阵中学习一个相似度图,该矩阵由相应的邻接矩阵约束。在探路器神经元中,我们学习将它们组合在一起,形成一个 G ~ \tilde G G~表示的单一学习图。这个输出图可以作为任意下游图卷积层的输入。

5.2 A model with cheap multi-scale mixing

多尺度图神经网络模型在多跳[3,36,39,43]处获得关于节点邻域的信息,并学习每一跳的特征。大多数图神经网络[9,17,22,23,55]不是多尺度的(除了AttentionWalk[2]和DCRNN[24]),它们汇集了不同尺度上的邻域特征,而没有考虑什么是信息的最佳混合。在下文中,我们将定义我们的模型的一个角落情况,它允许使用可训练的权重进行多尺度信息的监督和可解释的汇集。

请添加图片描述

高效的稀疏性感知前向传递多尺度混合与Softmax学习图和线性图卷积激活函数。

A ~ \tilde A A~是赋权无向图 G G G的规格化邻接矩阵,我们假设感兴趣的相似图是用该规格化邻接矩阵的幂来描述的。 D D D跳数 − A ~ = A ~ i , ∀ i = 1 , … … , D -\tilde A=\tilde A^i,\forall _i=1,……,D A~=A~i,i=1,……,D用于前向传播的学习图形定义为:

请添加图片描述

其中 p i p_i pi是给定邻接矩阵的权值,是参数化softmax中 e x p ( a i ) / ( ∑ i = 1 D e x p ( a i ) ) exp(a_i)/(\sum^D_{i=1}exp(a_i)) exp(ai)/(i=1Dexp(ai))。由于直接计算邻接矩阵的幂是不可行的,所以我们使用一种有效的前向传递算法来计算如算法1所描述的隐藏状态矩阵。其核心思想是在每次迭代中利用邻接矩阵的稀疏性,使用归一化邻接矩阵来平均节点表示,并通过学习参数 p i p_i pi得分来得到权重的表示。

6. 实验

上面,我们通过讨论为特定任务联合学习图形和GNN的重要性并评估探路者层的表现力,从理论上推动了PDN的开发。在下文中,我们通过实证验证我们的分析,证明PDN在一类图形学习任务上具有显著优势,同时在其他基线上保持有竞争力的预测性能。我们还描述了如何将探路器神经元中的权重解释为注意力,并分析了模型运行时,以讨论模型的可扩展性。

6.1 Synthetic node classification experiment

请添加图片描述

具有操纵的超参数的范围和场景中的调制的特定含义的合成节点分类场景。

请添加图片描述

对于表2中描述的场景,节点分类性能通过对合成生成的属性图的平均测试集精度(10次实验重复)来衡量。所提出的探路者发现网络架构在广泛的合成数据生成超参数下具有稳健的预测性能。

请添加图片描述

在具有标准数据生成设置的合成数据集上嵌入PDN和GAT隐藏层边缘表示的t-SNE。PDN模型能够更好地分离类内和类间边缘。

6.2 Multiplex node classification performance

请添加图片描述

从多路图基准数据集上的10个实验运行(误差禁止平均值附近的标准偏差)计算出的平均多路100-shot节点分类测试精度结果。

6.3 Node classification performance

请添加图片描述

100次学习运行的平均节点分类测试精度结果是从引用图数据集和社交网络上的10次实验运行(低于准确率的平均值附近的标准偏差)计算得出的。红色粗体数字表示性能最好的型号。

请添加图片描述

在合成数据集上训练PDN模型所需的相对运行时间增加(与谱图卷积相比)。

6.4 Edge feature importance

请添加图片描述

在Cora和Pubmed数据集上训练的单个神经元PDN中,注意权重随着训练进度的变化而变化。

请添加图片描述

在合成数据集上训练PDN模型所需的相对运行时间增加(与谱图卷积相比)。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值