FGSM论文阅读

英文不好,,翻译一般,有些不太通顺的地方


《解释和利用不利的例子》

摘要

包括神经网络在内的几种机器学习模型始终对一些容易造成误解的示例进行错误分类,这些干扰示例是通过对数据集中的示例进行一些微小但坏的扰动后形成的输入,受扰动的输入会导致模型以高置信度输出错误答案,早期对这种现象的解释集中于非线性和过度拟合。相反,我们认为神经网络容易受到对抗性扰动的主要原因是因为它们的线性特性,这种解释得到一些新的定量结果的支持,同时对一些有关这方面内容的有趣事实进行了首次解释,对它们的体系结构以及与训练集之间的关系进行了概括,而且这种观点产生了一种简单快速生成对抗性示例的方法,使用这种方法为对抗训练提供示例,我们减少了maxout网络在MNIST数据集测试时的错误。

1.引言

S等取得了一个有趣的发现:一些机器学习模型(包括最新的神经网络)容易受到对抗性例子的攻击,也就是说机器学习模型会对这些示例进行错误分类,而这些示例与从数据分布中得出的正确分类示例仅稍有不同。在许多情况下,在训练数据的不同子集或使用不同体系结构训练得到的模型会将同一对抗示例进行错误分类。这表明对抗性示例暴露了我们训练算法中的基本盲点。 

这些对抗性例子的原因是一个迷,一些推测性的解释说这是由于深度神经网络的极端非线性所致,也有可能是由于模型平均不足和纯监督学习问题的正则化不足所致。

我们证明这些推断假设是不必要的,高维空间中线性行为也足以引起对抗性例子,这种观点使我们能够设计快速生成对抗性示例的方法,从而使对抗性训练切实可行。我们证明,对抗性训练可以提供比使用dropout正则化更多的好处。通用的正则化策略,例如(dropout,预训练和模型平均)并不能显著降低模型对付对抗性示例的脆弱性,但是改用非线性模型族如(RBF网络)能够实现较好的效果。

我们的解释表明,在设计模型时由于将其设计为线性而使其易于训练,与使用非线性效应来抵抗对抗性图片的扰动这之间存在一些矛盾,从长远来看,可以通过成功训练更多非线性模型或是采用更多强大的优化方法来避免这种折中。

2.近期的工作

S证明了神经网络和相关模型的多种有趣特性,其中与本文最相关的是:

  • 盒约束L-BFGS可以可靠地找到对抗性示例。
  • 在例如ImageNet的一些数据集上,对抗性示例与原始示例非常接近,以至于人眼无法区分这些差异。
  • 同样的对抗示例时常会被一系列在不同网络结构或者基于不同图像样本集训练得到的模型上被错误的分类。
  • 通过对抗性例子的训练可以使模型规则化,但是由于需要在内部循环中进行昂贵的约束优化,因此这个实用性较差。

这些实验结果表明,基于现代机器学习技术的分类器,即使是在测试集上获得出色性能的分类器,也无法学到决定正确输出的基本标准概念。取而代之的是这些算法建立了Potemkin village,它们可以很好的应用于自然发生的数据,但是当人们访问空间中数据分布可能性较低的点时,它们就会被认为是伪造品。我们通常将这些结果解释为深度网络中特别的缺陷,尽管线性分类器具有相同的问题,我们认为对这一缺陷的了解是修复它的机会。实际上,Gu等人2014年已经开始着手设计抵抗对抗性扰动的模型,尽管还没有模型能成功做到这一点,在保持最纯净输入准确性的同时又做到抵抗对抗性扰动的模型。

3.对抗性例子的线性解释

我们首先说明线性模型的对抗性示例存在。在许多问题中,单个输入的功能受到限制,例如数字图像通常每个像素仅使用8位,因此他们会丢弃低于动态范围1/255的所有信息,由于特征的精度是有限的,所以如果扰动η的每个元素都小于特征的精度,则分类器对输入x的响应不同于对抗性输入x〜= x +η的响应是不合理的。形式上,对于类别分类良好的问题,只要足够小,我们期望分类器为x和x~分配相同的类别,其中足够小,可以被与我们的问题相关的传感器或数据存储设备丢弃。考虑权重向量w和对抗性示例x〜之间的点积:

对抗性扰动使激活度增加。我们可以通过赋予η= sign(w)来最大程度地限制η的最大范数。如果w具有n个维,并且权重向量的元素的平均大小为m,则激活将增长,因为不会随问题的维数增长,但是由引起的激活变化可以随n线性增长,因此对于高维问题,我们可以对输入进行许多无穷小的更改,从而使输出实现一个总的大的更改。我们可以将其视为一种“accidental steganography”,即使其中存在多个信号且其他信号具有更大的幅度,线性模型被迫专门处理与其权重最接近的信号。这个说明表明简单线性模型会具有对抗性实例如果它的输入具有足够的维度。先前针对对抗性示例的解释调用了神经网络的假设属性,而我们基于线性的假设更简单,也可以解释为什么softmax回归容易受到对抗示例的影响。

4.非线性模型的线性扰动

对抗性示例的线性观点提出一种生成它们的快速方法,我们假设神经网络太过线性而无法抵抗太过线性的对抗性扰动,LSTM,Relu,maxout都故意设计为非常线性的方式进行设计,因此它们更容易优化。诸如softmax的一些非线性网络出于相同的原因花费大量的时间在非饱和更线性方面进行调整。这种线性行为表明,线性模型的廉价分析性扰动也会破坏神经网络。

图1:在ImageNet上训练的GoogleNet快速对抗示例生成演示。通过添加一个不明显的小向量,这个元素等于成本函数相对于输入符号的梯度元素,我们可以更改GoogleNet的图片分类,在这里我们的.007对应于GoogleNet转换为实数后8位图像编码的最小位大小。

设θ为模型参数,x为模型输入,y与x相关联的目标(对于具有目标的机器学习任务),而J(θ,x,y)为训练神经网络的成本。我们可以围绕θ的当前值线性化成本函数,从而获得最优的最大范数约束的

我们称其为生成对抗性示例的快速梯度符号方法,请注意使用反向传播可以有效地计算所需梯度。我们发现该方法可靠地导致了各种模型将其输入错误分类。 有关ImageNet的演示,请参见图1。 我们发现使用= .25会导致MNIST(?)测试集1上的浅层softmax分类器的错误率为99.9%,平均置信度为79.3%。 在相同设置下,maxout网络将89.4%的对抗性示例错误分类,平均置信度为97.6%。  类似地,使用= 0.1时,在预处理版本的CIFAR-10上使用卷积maxout网络时,我们得到87.15%的错误率和分配给错误标签的平均概率96.6%测试集2。

生成对抗性示例的其他简单方法也是可能的。例如,我们还发现,将x沿梯度方向旋转小角度确实会产生对抗性示例。这些简单,廉价的算法能够生成错误分类的示例,这一事实证明了我们对线性网络的对抗性示例的解释。 该算法还可以作为快速对抗训练的方法,甚至只是对训练好的的网络进行分析的一种方法。

5.线性模型的对抗训练与权重衰减

也许我们可以考虑的最简单的模型是逻辑回归。 在这种情况下,快速梯度符号法是精确的。 我们可以对这种简单设置情况下对抗示例是如何产生的得到一些了解。 有关指导性图像,请参见图2。如果我们训练一个模型来识别带有标签     的  ,其中是sigmoid函数

其中,是softplus函数,根据梯度符号扰动,我们可以对x的最坏情况的对抗扰动示例训练,而不是x本身进行训练得出一个简单的分析形式。注意,梯度的符号只是而且,因此,logistic回归的对抗版本应最小化

图2:快速梯度符号法适用于逻辑回归。(a)在Mnist上训练的逻辑回归模型的权重。(b)在Mnist上训练的逻辑回归模型的权重符号。这是最佳的扰动

这有点类似于L1正则化,但是有一些重要的区别,最重要的是在训练期间从模型激活中减去L1损失,而不是增加到训练成本当中,这意味着模型做出足够饱和的预测,惩罚最终可能开始消失。在欠拟合的情况下,不能保证会发生这种情况,加入对抗训练只会使训练不到位的情况更加恶化,我们将L1权重下降视为比加入了对抗训练更糟的情况,因为网络没能训练到拟合足够好的情况就停下了。

如果我们从逻辑回归转向多类softmax回归,则L1权重衰减变得更加悲观,因为它会将softmax的每个输出视为独立可扰动的,而实际上通常不可能找到与该类的所有权重向量对齐的η。在具有多个隐藏单元的深层网络中,重量衰减高估了摄动可能带来的损害。在具有多个隐藏单元的深层网络中,重量衰减高估了扰动可能带来的损害,由于L1权重衰减会高估对手可能造成的损失,因此与我们的特征精度相关联的L1权重衰减系数必须小于。在MNIST上训练maxout网络时,我们使用= 0.25的对抗训练获得了良好的结果。 当将L1权重衰减应用于第一层时,我们发现甚至.0025的系数也太大,并且导致模型在训练集上陷入超过5%的误差。 较小的重量衰减系数允许成功训练,但没有带来正则化好处。

6.深层网络的对抗性训练

对深度网络的评价很容易受到对抗性例子的误导,因为与浅层线性模型不同,深度网络至少能够表示抵抗对抗性扰动的功能。通用逼近定理(Hornik等,1989)保证了只要允许其隐藏层具有足够的单位,具有至少一个隐藏层的神经网络就可以以任意精度表示任何功能。 浅线性模型不能在训练点附近变得恒定,同时还向不同的训练点分配不同的输出。当然,通用逼近定理并没有说明训练算法是否能够发现具有所有所需属性的函数。 显然,标准的监督训练并没有指定所选功能可以抵抗对抗性示例,这必须以某种方式编码在训练过程中。Szegedy等。 (2014b)表明,通过训练对抗性示例和干净示例的混合物,可以使神经网络有些正规化。 有关对抗性示例的培训与其他数据增强方案有所不同; 通常,人们会使用转换(例如预期在测试集中实际发生的转换)来扩充数据。 相反,这种形式的数据增强使用了不太可能自然发生的输入,但以模型概念化其决策功能的方式暴露了缺陷。 当时,从未证明此程序可以改进以达到最新基准水平。 但是,这部分是因为很难对基于L-BFGS的昂贵的对抗性示例进行广泛的实验。 我们发现基于快速梯度符号法的对抗目标函数训练
是有效的调节器:

在我们所有的实验中,我们使用α= 0.5。 其他值可能会更好。 我们对这个超参数的最初猜测足够好,以至于我们不需要探索更多内容。 这种方法意味着我们会不断更新我们提供的对抗性示例,以使它们抵制当前模型版本。 使用这种方法来训练也通过dropout进行正规化的maxout网络,我们能够将错误率从没有对抗训练的0.94%降低到具有对抗训练的0.84%。

我们观察到在训练集上的对抗示例中我们没有达到零错误率。我们通过进行两次更改来解决此问题。首先,我们使模型更大,每层使用1600个单位,而不是原来的maxout网络使用240个单位解决此问题。如果没有对抗训练,这会使模型略微过拟合,并且在测试集上的错误率将达到1.14%。通过对抗训练,我们发现验证集的误差会随着时间的流逝而趋于平稳,并且进展非常缓慢。最初的maxout结果使用了早期停止,并在100个纪元内未降低验证设置的错误率后终止学习。我们发现,尽管验证集错误非常平坦,但对抗验证集错误却并非如此。因此,我们在对抗性验证集错误上使用了提前停止。使用此标准来选择要训练的时期数,然后我们对所有60,000个示例进行了再训练。使用不同的种子进行五次不同的训练对于用于选择训练样本的最小批处理,初始化模型权重并生成丢失掩码的随机数生成器,将导致四项试验的每个错误在测试集上的错误率为0.77%,而另一项试验的错误率为0.83%。平均值0.782%是在MNIST的排列不变版本上报告的最佳结果,尽管与通过微调带遗漏的DBM所获得的结果(Srivastava等人,2014)在统计上没有区别(Srivastava等,2014)。

该模型还变得有点对抗性的例子。回想一下,在没有对抗训练的情况下,基于快速梯度符号法的同类示例中,这种模型的错误率为89.4%。经过对抗训练,错误率降至17.9%。对抗性示例可在两个模型之间转移,但对抗性训练的模型显示出更高的鲁棒性。通过原始模型生成的对抗示例在对抗训练模型上的错误率为19.6%,而通过新模型生成的对抗示例在原始模型上的错误率为40.9%。当经过对抗训练的模型确实对一个对抗示例进行了错误分类时,不幸的是,其预测仍然非常有信心。错误分类示例的平均置信度为81.4%。我们还发现,学习模型的权重发生了显着变化,而经过对抗训练的模型的权重明显更具局限性和可解释性(见图3)。当数据受到对手的干扰时,对抗训练过程可以看作是使最坏情况的错误最小化。 这可以解释为学会玩对抗游戏,也可以解释为将带有的噪声添加到输入中的带噪样本的预期成本的上限最小化。 对抗训练也可以看作是主动学习的一种形式,其中模型能够请求新点的标签。 在这种情况下,人类标签器将替换为从附近点复制标签的启发式标签器。

我们还可以通过对max范数框内的所有点进行训练,或对该框内的许多点进行采样,来对模型进行正则化,使其对小于A精度的特征变化不敏感。 这相当于在训练期间以最大范数添加噪声。 但是,均值为零且协方差为零的噪声在防止对抗性示例方面非常低效。 任何参考矢量和此类噪声矢量之间的预期点积为零。 这意味着在许多情况下,噪声基本上不会产生任何影响,而只会产生更困难的输入。

图3:在MNIST上训练的maxout网络的权重可视化。 每行显示单个maxout单位的过滤器。 左)天真的训练模型。 右)经过对抗训练的模型。

实际上,在许多情况下,噪声实际上会导致较低的目标函数值。 我们可以将对抗训练视为在一组嘈杂的输入中进行艰苦的示例挖掘,以便仅考虑那些强烈抵抗分类的嘈杂点来更有效地进行训练。 作为控制实验,我们训练了基于随机添加的噪声对maxout网络进行训练每个像素±,或者向每个像素添加中的噪声。 在快速梯度符号对抗性示例中,它们分别获得86.2%的错误率和97.3%的置信度,以及90.4%的置信度为97.8%的置信度。

由于符号函数的导数在任何地方都为零或未定义,因此基于快速梯度符号方法的对抗目标函数的梯度下降无法使模型预测对手对参数变化的反应。 如果我们取而代之的是基于小旋转或按比例缩放的梯度的对抗性示例,则扰动过程本身是可区分的,学习可以将对手的反应考虑在内。 但是,我们发现此过程的正则化结果几乎没有强大的功能,也许是因为这些
各种对抗性例子并不难解决。

一个自然的问题是,扰动输入层或隐藏层或同时扰动两者是否更好。这里的结果不一致。 Szegedy等。 (2014b)报道,对抗性扰动在应用于隐藏层时产生最佳正则化。该结果是在S型网络上获得的。在我们使用快速梯度符号方法的实验中,我们发现具有隐藏单元的激活不受限制的网络只是通过使其隐藏单元的激活非常大来做出响应,因此通常最好只干扰原始输入。 Rust模型我们发现输入的扰动与隐藏层的扰动相当。基于旋转隐藏层的扰动解决了无限激活增加的问题,从而使相加扰动相对较小。我们能够成功地利用隐藏层的旋转扰动来训练maxout网络。但是,这没有产生与输入层的附加扰动几乎一样强的正则化效果。我们对对抗性训练的看法是,只有在模型具有学习抵抗对抗性例子的能力时,它才明显有用。仅当应用通用逼近定理时,情况才很明显。由于神经网络的最后一层,即线性乙状结肠或线性softmax层,并不是最终隐藏层功能的通用逼近器,因此这表明在将对抗性扰动应用于最终层时,很可能会遇到拟合不足的问题隐藏层。我们确实发现了这种效果。使用隐藏层扰动进行训练的最佳结果从未涉及最终隐藏层的扰动。

7.不同模型的容量

对抗性示例的存在似乎违反直觉的原因之一是,我们大多数人对高维空间的直觉都很差。 我们生活在三个维度中,因此我们不习惯数百个维度中的小效果加起来创建大效果。 我们的直觉还为我们服务不好,这是另一种方式。 许多人认为容量低的模型无法做出许多不同的自信预测。 这是不正确的。 一些低容量的模型确实表现出这种现象。 例如,浅RBF网络具有

只能自信地预测到正值类别在µ附近。 在其他地方,它们默认不预测班级,或者缺乏低信度的预测,RBF网络天生就不受对抗示例的影响,从某种意义上说,它们被欺骗时信心不足。使用快速梯度符号法生成的对抗性示例(A = .25),没有隐藏层的浅RBF网络在MNIST上的错误率达到55.4%。但是,它对错误示例的信心仅为1.2%。它对干净测试示例的平均置信度为60.6%。我们不能期望具有如此低容量的模型能够在所有空间点上都能获得正确的答案,但是它可以通过大幅降低其对“无法理解”的点的置信度来做出正确的响应。不幸的是,RBF单位不会对任何重大转换保持不变,因此它们不能很好地概括。我们可以将线性单位和RBF单位视为精确调用折衷曲线上的不同点。线性单元通过在特定方向上响应每个输入来实现较高的查全率,但由于在不熟悉的情况下响应过强而导致精度较低。 RBF单元仅通过响应特定的空间点即可达到高精度,但这样做会牺牲召回率。受这一想法的启发,我们决定探索各种涉及二次单元的模型,包括深RBF网络。我们发现这是一项艰巨的任务-当使用SGD训练时,具有足够二次抑制能力来抵抗对抗性扰动的每个模型都将获得很高的训练集误差。

8.为什么对抗性示例会通用化

对抗性示例的一个有趣的方面是,即使一个模型生成的示例具有不同的体系结构或在不相交的训练集上进行了训练,但针对一个模型生成的示例经常会被其他模型误分类。 此外,当这些不同的模型对一个对抗性示例进行错误分类时,它们通常在类别上彼此一致。 基于极端非线性和过度拟合的解释不能轻易地解释这种现象-为什么要建立多个极端非线性模型
容量过大是否始终以相同的方式标记出分布点? 从以下假设来看,这种行为尤其令人惊讶:对抗性示例像现实中的有理数一样精细地平铺空间,因为在这种观点中,对抗性示例很常见,但仅在非常精确的位置发生。

在线性视图下,对抗性示例出现在较宽的子空间中。 方向η只需具有带成本函数梯度的正点积,而Aneed仅足够大即可。 图4展示了这种现象。 通过找出不同的A值,我们可以看到对抗性示例出现在由快速梯度符号方法定义的1-D子空间的连续区域中,而不是在细小口袋中。 这就解释了为什么对抗性例子很多,为什么一个分类器分类错误的示例具有较高的先验概率被另一个分类器分类错误。

为了解释为什么多个分类器将相同类别分配给对抗性示例,我们假设使用当前方法训练的神经网络都类似于在同一训练集上学习的线性分类器。 当在训练集的不同子集上训练时,该参考分类器能够学习大约相同的分类权重,这仅仅是因为机器学习算法能够概括。 基础分类权重的稳定性反过来又导致对抗示例的稳定性。为了检验该假设,我们在深maxout网络上生成了对抗性示例,并使用浅softmax网络和浅RBF网络对这些示例进行了分类。在被maxout网络错误分类的示例中,RBF网络预测maxout网络的类别分配仅占16.0%的时间,而softmax分类器正确预测maxout网络的类别占54.6%的时间。这些数字很大程度上是由不同模型的不同错误率驱动的。如果我们将注意力排除在两个模型都出错的情况下,则softmax回归预测maxout的类别的时间为84.6%,而RBF网络只能预测maxout的类别的时间为54.3%。相比之下,RBF网络可以预测53.6%的时间的softmax回归,因此它的行为本身具有很强的线性成分。我们的假设无法解释maxout网络的所有错误或跨模型泛化的所有错误,但显然其中很大一部分与线性行为一致,线性行为是跨模型泛化的主要原因。

9.替代假设

现在,我们考虑并反驳了对抗性示例存在的一些替代假设。首先,一个假设是,生成训练可以对训练过程提供更多约束,或者使模型学习从“假”数据中区分“真实”数据和仅对“真实”数据充满信心。 MP-DBM(Goodfellow等人,2013a)提供了一个很好的模型来检验这一假设。它的推理过程在MNIST上具有良好的分类精度(错误率0.88%)。该推断过程是可区分的。其他生成模型具有不可微分的推理程序,这使得计算对抗性示例变得更加困难,或者需要其他非生成性鉴别器模型才能在MNIST上获得良好的分类精度。对于MP-DBM,我们可以确定生成模型本身是在对付对抗性示例,而不是最上面的非生成分类器模型。我们发现该模型容易受到对抗性例子的攻击。当anA为0.25时,我们发现从MNIST测试集生成的对抗性示例中的错误率为97.5%。生成训练的其他形式仍然有可能赋予抵抗力,但显然,仅产生生成这一事实并不足够。

图4:通过找出不同的A值,我们可以看到,只要我们沿正确的方向运动,几乎所有足够大的A值都会可靠地出现对抗示例。正确的分类仅在数据中出现x的细歧管上发生。 R n的大部分由对抗性示例和垃圾分类示例组成(请参阅附录)。该地块是由未经培训的maxout网络制作的。左图)显示了10个MNIST类中每个类的softmax层自变量的图,因为我们在单个输入示例中改变了A。正确的类别是4。我们看到,每个类别的未归一化对数概率与A明显呈分段线性关系,并且错误的分类在A值的较大范围内都是稳定的。此外,随着我​​们增加A足以进入垃圾投入体系,这种预测变得非常极端。右)用于生成曲线的输入(左上方=负A,右下方=正A,黄色框表示正确分类的输入)。

关于为何存在对抗性示例的另一个假设是,单个模型具有奇怪的怪癖,但是对许多模型求平均会导致对抗性示例被淘汰。 为了验证该假设,我们在MNIST上训练了12个maxout网络的集合。 每个网络都使用不同的种子进行训练,以用于随机数生成器,该生成器用于初始化权重,生成丢失掩码以及选择数据的最小批以进行随机梯度下降。 在旨在干扰A = .25的整个集成的对抗示例中,该集成的错误率为91.1%。 如果我们改为使用仅干扰一组成员的对抗性示例,则错误率降至87.9%。 集合仅提供有限的抵抗对抗性干扰的能力。

10.总结与讨论

作为总结,本文提出了以下观察意见:

•对抗性示例可以解释为高维点积的属性。它们是模型过于线性而不是非线性的结果。

•跨不同模型的对抗性示例的概括可以解释为对抗性摄动的结果与模型的权重向量高度一致,并且不同的模型在训练以执行相同任务时会学习相似的功能。

•扰动的方向而不是空间中的特定点最为重要。 空间中没有充满对抗性实例的口袋,这些对抗性实例像有理数一样精确地贴图了实数。

•因为这是最重要的方向,所以对抗性扰动会在不同的干净示例中普遍存在。

我们介绍了一系列用于生成对抗性示例的快速方法。

•我们已经证明对抗训练可以导致正规化;比辍学更正规化。

•我们进行的控制实验无法以简单但较少的方式重现此效果包括L1权重衰减和增加噪声在内的高效正则器

•易于优化的模型容易受到干扰。

•线性模型缺乏抵抗对抗性扰动的能力;仅应训练具有隐藏层的结构(适用通用逼近定理),以抵抗对抗性扰动。

•RBF网络可以抵抗对抗性的例子。

•受过训练以模拟输入分布的模型不能抵抗对抗性示例。

•合奏不能抵抗对抗性的例子。附录中提供了有关垃圾分类示例的其他一些观察结果:

•垃圾分类的例子无处不在,很容易产生。

•浅线性模型不能抵抗垃圾分类示例。

•RBF网络可以抵抗垃圾分类的示例。

基于梯度的优化是现代AI的主力军。使用设计为足够线性的网络-无论是ReLU或maxout网络,LSTM还是经过精心配置的Sigmoid网络,都不会过饱和-我们能够解决我们关心的大多数问题,至少在训练上对抗性示例的存在表明,能够解释训练数据,甚至能够正确标记测试数据并不意味着我们的模型真正理解了我们要求他们执行的任务。取而代之的是,它们的线性响应对数据分布中未出现的点过于自信,而这些自信的预测通常是高度错误的。这项工作表明,我们可以通过明确识别有问题的点并在每个点处校正模型来部分纠正此问题。但是,可能还会得出一个结论,即我们使用的模型族本质上存在缺陷。易于优化的代价是容易被误导的模型。这激励了优化程序的发展,该优化程序能够训练行为在局部更稳定的模型。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值