[论文阅读笔记08]Generalizing from a Few Examples:A Survey on Few-Shot Learning

一,题目

Generalizing from a Few Examples: A Survey on Few-Shot Learning

从少样本中概括:少样本学习综述

FSL: Few-Shot Learning

二,作者

YAQING WANG, Hong Kong University of Science and Technology and 4Paradigm Inc

QUANMING YAO, 4Paradigm Inc

JAMES T. KWOK, Hong Kong University of Science and Technology

LIONEL M. NI, Hong Kong University of Science and Technology

香港科技大学 + 第四范式

三,摘要

  1. 定义FSL;
  2. FSL核心问题:不可靠经验风险最小化
  3. 通过先验知识去解决FSF的核心问题,对于先验知识怎么加入到机器学习中这个问题,从三个角度分类了FSL:数据(增加监督经验),模型(限制假设空间),算法(为假设空间调整最佳的参数);并对不同类别的利弊进行深入讨论;
  4. FSL的方向展望(problem setup, techniques, applications and theories);

四,论文框架

image-20210108113350522
介绍:FSL引入的介绍,FSL在人类机器研究与AI领域的位置;

概述:FSL的正式定义、核心问题、相关学习问题以及在数据、模型和算法方面的分类;

数据: 增加数据以解决FSL问题的方法(有标签数据,弱标签数据,相似数据集,总结);

模型: 对模型进行约束的方法(多任务学习,嵌入式学习,外部记忆空间学习,生成模型,总结);

算法: 改变算法搜索策略来处理FSL问题的方法(已有参数优化,元参数优化,学习优化器,总结);

展望:提出在问题设置、技术、应用和理论方面的未来方向;

总结

五,介绍

虽然现在AI发展得很快,在很某些领域的某些应用超过了人类,可是在少样本的情况下,还是很难去学习与泛化概括得很好。另外,以前的成功应用是来自模型在大规模上学习出来的,而人类对于遇到新任务,可以很快把以前学习到的东西应用起来。例如一小孩子,给他几张陌生人的相片,他可以从大量的照片中识别出哪些是同一个人。为了解决样本量问题,朝着像人一样去思考的思想而提出了FSL。当只用一个样本去学习时,叫做one-shot学习问题;FSL可以把先验的知识图谱加入进来。

  1. FSL是AI与像一样思考的桥梁;
  2. FSL是一个测试机器学习是否可以像人一样思考;
  3. FSL是AI的一部分,它主要是想解决标注高成本的监督数据问题;
  4. FSL解决一些传统深度学习无法获取或困难获取样本数据进行训练的问题;

六,概述

6.1 符号定义

​ 略

6.2 FSL问题定义

​ FSL是机器学习的子领域;

Machine Learning定义:

image-20210108113350522

Few-Shot Learning定义

image-20210108113410868

6.3 相关学习问题

Semi-supervised learning(Positive-unlabeled learningactive learning),Imbalanced learningTransfer learning(Domain adaptation,zero-shot learning),Meta-learning or learning-to-learn;

FSL可以是监督学习,半监督学习,强化学习,这个取决于除了有有限的监督数据之外还有其它什么数据。

很多FSL方法都是元学习方法,使用元学习器作为先验知识。

6.4 核心问题

这里补充一个词:假设空间

机器学习中可能的函数构成的空间称为“假设空间”。
监督学习的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测。模型属于由输入空间到输出空间的映射的集合,这个集合就是假设空间。假设空间的确定意味着学习范围的确定。

Empirical Risk Minimization

image-20210108150544725

p(x,y)是未知的,所以用如下的经验风险去估计上面的风险函数:

image-20210108150718127

如下的最优化理解:

image-20210108152854720

对于第一个h(带帽),是一个最真实的最优化解,是对模型全集的最优化求解,不过这个只能停留在理论上。从理论上去,是可以找一个非常完美的模型去学习民给的样本,这个是不可以达到的完美的客观存在的规律,可惜,这个只是客观概念的存在。

对于第二个h(带星),它是属于我们自己假设的模型集中的,也就我们给定了一个模型集合,最中找到了一个最好模型出来,这里给定了模型;

对于第三个h(带I),它是由样本学习得到的,在给定模型后的参数的学习。
所以,对于识差会存在两个,一个app,一个是est的,故有论文的总的损失误差定义:

image-20210108152035872

相对于大量监督样本的学习,FSL的挑战会更大,如下他们的对比:

在est的误差方面,当我们可以把这里的样本都找到了,可以让它无空地接近于0,如下的公式,可是,FSL定为少样本,这个就直接拉大了est的误差了,很具有挑战的内容。直观感觉如果真的想要少样本,一定要跳出机器学习这个牢笼!!!!!

image-20210108153940108

在传统机器学习中,为了减少est的误差,加入正则化,可是正则化并没有引入其它信息,对于FSL并不可行。

基于这个理论,后面分析了样本复杂性,启示:**要降低样本的复杂性,从先验知识来补充样本的不足问题。**例如Bayesian learning。

结论:FSL的核心问题是不可靠的经验风险最小化,通过加入先验知识去的方法去解决这个问题。

6.5 分类

data: 使用先验知识去进行数据增强;

model: 根据先验知识,加入约束规则把假设空间的H减小;过滤掉一些不可能的模型;

algorithm:根据先验知识去调参,把先验知识转变为机器学习的搜索策略;
image-20210111095256780
FSF的分类:
image-20210111095256780

心得:由于FLS天生是要少样本,要有充足的信息去训练,一个方法是输入先验信息,到于机器学习框架,从这三个地方考虑把先验知识加入---数据,模型,算法。

七,数据

把先验知识加入的方法总结为四种方法

image-20210111095256780

转换器–transformer

image-20210111095753960

两大类:基于训练数据转换样本与基于弱标注或无标注数据转换样本

7.1 Handcrafted Rule

人为定义规则,从原训练数据集做一些规则变换,生成相关的数据集,放到训练集中。例如在图像识别任务中,经过给图像作预处理来增强训练集,操作例如translating, flipping, shearing, scaling, reflecting, cropping and rotating.

7.2 Learned Transformation

通过复制原始样本形成几个新样本,原样本经过已学习的转换器进行修改形成新的样本作为样本增强。

学习转换本身是E中的先验知识,而当前FSL任务既不需要训练样本,也不需要学习过程。

最早的学习转换[78]:通过迭代地将每个样本与其他样本对齐,从类似的类中学习一组几何变换。 然后将这种学习变换应用于每个(x(i),y(i))上,形成一个可以正常学习的大型数据集。

从[Delta Encoder: An effective sample synthesis method for few-shot object recognition]中的相似类中学习了一组自动编码器,每个自动编码器代表一个类内可变性。通过将习得的变化量添加到来生成 x i x_i xi新样本。

在Low-shot visual recognition by shrinking and hallucinating features中,通过假设所有类别在样本之间共享一些可变换的可变性,可以学习单个变换函数,将从其他类别学习到的样本对之间的差异转移到(xi,yi)。

在[One-shot learning of scene locations via feature trajectory transfer中,不是枚举成对的变量,而是使用从大量场景图像中获悉的一组独立的属性强度回归将每个xi转换为几个样本,并将原始的xi标签分配给这些新样本。

在One-shot learning of scene locations via feature trajectory transfer的基础上进行了改进,在Feature space transfer for data augmentation中,连续属性子空间用于向 x \scriptstyle x x添加属性变化。

7.3 Weakly Labeled or Unlabeled Data Set

此策略通过从标记弱或未标记的大数据集中选择带有目标标记的样本来增强数据训练集。

这类数据是收集的成本比较低,主要问题是如何选择带有目标标签的样本来增强数据训练集。

在Domain-adaptive discriminative one-shot learning of gestures中,为训练集中的每个目标标签学习了一个示例SVM,然后将其用于从弱标签数据集中预测样本的标签。然后将具有目标标签的样品添加到训练集中。

在Low-shot learning with large-scale diffusion中,标签传播直接用于标记未标记的数据集,而不是学习分类器。

在Exploit the unknown gradually: One-shot video-based person re-identification by stepwise learning中,采用渐进策略来选择内容丰富的未标记样品。然后为选定的样本分配伪标签,并用于更新CNN

7.4 Similar Data Set

此策略通过聚合和改编来自相似但较大的数据集中的输入输出对来增强数据集。

聚集权重通常基于样本之间的某种相似性度量。

在[Improving one-shot learning through fusing side information]中,它从辅助文本语料库中提取聚合权重。

image-20210111135529492

由于这些样本可能不是来自目标FSL类,因此直接将汇总样本增加到训练集可能会产生误导。因此,生成对抗网络(generative adversarial network -GAN)旨在从许多样本的数据集中生成难以区分的合成聚合【Low-shot learning via covariance-preserving adversarial augmentation networks】。它有两个 生成器,一个将少数类别的样本映射到大规模类别,另一种将大型类别的样本映射到少数类别(以弥补GAN训练中样本的不足)。

对于数据增加方面,主要针对图片设计的,文本在这方面使用起来还是比较困难的。

八, 模型

从模型出发,主要是把假设空间减小,把比较大的空间,通过先验知识的加入进行一定的约束,使假设空间变小,这样经验最小化器就更加可靠,也可以聊低过拟合的风险,可以分四类:多任务学习[共享参数],嵌入学习[投影到比较小的嵌入空间],外部记忆学习,生成模型。

image-20210111143246456

8.1 多任务学习

如果只是一个任务,而它的样本不多,这个模型强壮性就很难保证了。可以如果基于任务T,加入多个任务及其它任务的数据,这样就可以把这个任务与其它任务一起进行去多任务训练,这个模型也就可以受到其它任务的约束了。

8.1.1 强参数共享[Hard Parameter Sharing.]

在任务之间共享一些参数。

image-20210111151415924

在FGVC[Fine-grained visual categorization using meta-learning optimization with sample selection of auxiliary data]中,两个任务网络共享通用信息的前几层,并学习不同的最终层以处理不同的输出。

在[Few-shot charge prediction with discriminative legal attributes]中,法律文本上的两个自然语言处理任务被一起解决:收费预测和法律属性预测。使用单个嵌入功能对犯罪案件描述进行编码,然后将其馈送到特定于任务的嵌入功能和分类器。

在[Few-shot adversarial domain adaptation]中,变体自动编码器首先从源任务中经过预训练,然后克隆到目标任务中。为了捕获通用信息,两个变体自动编码器中的某些层是共享的,同时允许两个任务都具有一些特定于任务的层。目标任务只能更新其特定于任务的层,而源任务可以同时更新共享和特定于任务的层。

在[One-shot unsupervised cross domain translation]中,原始样本和生成样本都首先通过学习源任务和目标任务的单独嵌入函数映射到特定于任务的空间,然后由共享的变分自动编码器嵌入。

8.1.2 软参数绑定[Soft Parameter Sharing]

此策略不显式地跨任务共享参数,每个任务都有自己假设空间,它提倡不同参数是要相似,一般采用正则化处理。

image-20210111151505315

在[Multi-task transfer methods to improve one-shot learning for multimedia event detection]中,所有成对差异都受到了惩罚。

image-20210111152303806

在[Label efficient learning oftransferable representations acrosss domains and tasks]中,有一个CNN用于源任务,另一个用于目标任务。 这两个CNN的层使用一些特殊设计的正则化术语对齐。

image-20210111152523859

8.2 嵌入学习

把高维空间数据投影到更低维的数据空间,使相似的与不相似的数据很容易都区分出来,从而达到了约束模型的效果。

嵌入学习主要有三个关键部分:嵌入测试样本的函数f(·); 嵌入样本数据的函数g(·); 相似性衡量函数s(·,·)

image-20210111154518149

根据这三个关键部分情况,进行详细列出:

image-20210111155225878

8.2.1 Task-specific.

具体任务嵌入方法是由它的样本集定制来学习的。

在[Few-shot learning through an information retrieval lens]中学习嵌入来维护集据集中每个(x(i)、y(i))的排序列表,其中同类的排序更高否则低。

8.2.2 Task-invariant

任务不变的嵌入方法从包含足够样本且具有各种输出的大规模数据集中学习通用嵌入函数,然后将其直接用于新的少量数据集中,对于少量的数据集无需要再训练。

第一个FSL嵌入模型[Object Classification from a Single Example Utilizing Class Relevance Metrics]使用内核嵌入样本。测试集被赋值为训练集的最近邻。

最近,卷积孪生网络(convolutional siamese net)[Signature Verification using a “Siamese” Time Delay Neural Network ]学会了更复杂的嵌入[Siamese neural networks for one-shot image recognition,Few-shot learning for short text classification]

8.2.3 A Combination of Task-invariant and Task-specific

Task-specific嵌入的方法完全是考虑了具体的任务,而Task-invariant嵌入的方法在新任务不用训练可以快速泛化。

一个趋势是去组合上面提到的方法的组合:学习通过“具体任务”的数据信息去训练与适应泛化先验知识学习的“任务不变量”的嵌入空间。

对于组合,最近主要是基于meta-learnig方法去进行的,比较有代表性的方法如下:

(1)Learnet

Learnet [Learning feed-forward one-shot learners]通过合并的具体信息改进了任务不变卷积孪生网络[Siamese neural networks for one-shot image recognition]。 它从多个元训练集中学习一个元学习器,并将每个训练示例映射到学习者(卷积孪生网络)的参数。 这样,的参数随给定的改变,从而导致混合嵌入。 对Learnet进行了改进,在[Meta-learning with differentiable closed-form solvers]中,将学习者的分类层替换为岭回归,从而可以有效地以封闭形式获取参数。 以下两项工作[Tadam:Task dependent adaptive metric for improved few-shot learning,Dynamic conditional networks for few-shot learning]将作为一个整体来输出的任务特定参数。 任务相关的自适应量度(Task dependent adaptive metric-TADAM)[TADAM: Task dependent adaptive metric for improved few-shot learning]将类原型平均化到任务嵌入中,并使用元学习函数将其映射到ProtoNet参数。 动态条件卷积网络-Dynamic Conditional Convolutional Network (DCCN) [Dynamic conditional networks for few-shot learning]使用一组固定的滤波器,并使用学习组合系数。

(2) Matching Nets

匹配网络(Matching Nets) [Matching networks for one shot learning]及其变体[Low data drug discovery with one-shot learning、Learning algorithms for active learning、Structured set matching networks for one-shot part labeling]:Matching Nets [Matching networks for one shot learning] meta-learning不同的嵌入函数(和)用于训练样本和测试样本。残余LSTM(resLSTM)[Low data drug discovery with one-shot learning]为和提出了更好的设计。 Matching Nets的一种主动学习变体[Learning algorithms for active learning]添加了一个样本选择步骤,该步骤标记了最有益的未标记样本,并使用它来增强。 Matching Nets还扩展到了Set-to-Set匹配[Structured set matching networks for one-shot part labeling],这在标记样品的多个部分时很有用。

(3) ProtoNet

原型网络(ProtoNet)[Prototypical networks for few-shot learning]及其变体[TADAM: Task dependent adaptive metric for improved few-shot learning、Metalearning for semi-supervised few-shot classification、Low-shot learning from imaginary data]:ProtoNet [Prototypical networks for few-shot learning]仅比较中的类原型的,而不是将与每个的比较。 对于类,其原型只是,其中是来自类。根据经验,这将导致更稳定的结果并降低计算成本。使用原型的想法在[Low-shot learning from imaginary data]中引入了Matching Nets。 ProtoNet的半监督变体在学习过程中通过软分配来分配未标记的样本以增强[Metalearning for semi-supervised few-shot classification]。

(4) Relative representations

Attentive Recurrent Comparators(ARC)[Attentive recurrent comparators],它使用LSTM引起关注[Neural machine translation by jointly learning to align and translate)],将的不同区域与原型进行比较,然后将比较结果作为中间嵌入进行嵌入。此外,它使用bidirectional LSTM(biLSTM)嵌入所有比较作为最终嵌入。Relation Net [Learning to compare: Relation network for few-shot learning]使用CNN将和嵌入,然后将它们串联在一起作为嵌入,然后将其馈送到另一个CNN以输出相似度得分。

(5) Relation graph

[Learning to propagate labels: Transductive propagation network for few-shot learning,Few-shot learning with graph neural networks]中使用图神经网络(graph neural network-GNN)来利用来自本地社区的信息。在少量的强化学习应用程序中(如在连续控制和视觉导航中),时间信息很重要。

(6) SNAIL

Simple Neural AttentIve Learner(SNAIL)[A simple neural attentive meta-learner]是一个具有交错的时间卷积层和注意力层的嵌入网络。时间卷积层聚合来自过去时间步长的信息,而注意层有选择地关注与当前输入有关的特定时间步长。

8.3 用外部记忆学习

External memory例如neural Turing machine (NTM)与memory networks中的短期记忆与基于规则的操作。

image-20210112112243517

这个方法表示,如果一个新的任务进来,还要重新去学习这是一个比较costly,现在存有工作如下:

image-20210112111156084

记忆槽如果为空,直接把数据加入其中,否则,记忆槽要更新,存在的方法:

(1) 更新最近使用最少的内存插槽

(2) 按基于位置的寻址方式更新

(3) 根据内存插槽的年龄更新

(4) 只有当损失较高时才更新内存

(5) 使用内存作为存储,无需更新

(6) 将新信息聚合到最相似的信息中

8.4 生成建模

image-20210112112518786

总结了生成模型的一些特点表:

image-20210112112913037

根据参数定义与共享情况,把存在的方法分成部分与关系,超类与潜在变量:

8.4.1 Parts and Relations–部分与关系

Bayesian One-Shot [[One-shot learning of object categories]] 与BPL [Human-level concept learning through probabilistic program induction].

8.4.2 Super Classes–超类

One-shot learning with a hierarchical nonparametric Bayesian model

Learning to learn with compound HD models

8.4.2 Latent Variables–潜在变量

深度模型分类:

(1) Variational auto-encoder (VAE) [In International Conference on Learning Representations.]

(2) Autoregressive model[ Conditional image generation with pixelcnn decoders]

(3) Inference networks[Advances in variational inference]

(4) Generative adversarial networks (GAN) [ Generative adversarial nets]

(5) Generative version of Matching Nets (GMN)[Matching networks for one shot learning]

九,算法

算法是在假设空间H中搜索最佳假设h_∗的参数θ的策略。例如SGD及它的变种。

image-20210112115807917

9.1 Refine Existing Parameters–微调存在的参数

参数来自预训练模型初为初始化,然后以过数据进行训练去优化成学习的参数。

9.1.1 Fine-tune[合适正则化来微调]

image-20210112134559617

对于fine-tune过程中,怎样使用训练集在不过拟合的情况下去修正参数是一个关键的设计问题—使用正则化避免过拟合:

(1) Early-stopping。例如Neural voice cloning with a few samples

(2) 选择性地去更新小部分参数。例如:

Learning structure and strength of CNN filters for small sample size training;

Few-shot image recognition by predicting parameters from activations.

Low-Shot Learning With Imprinted Weights.

(3) 聚类参数,使用相同的更新信息去更新同组参数,这样可以很大程度地限制搜索策略。

例如:Efficient k-shot learning with regularized deep networks

(4) 模型回归网络。假设存在一个不可知的从使用几个样本去训练的参数到使用多个样本训练的参数的任务转换。

例如:Learning from Small Sample Sets by Combining Unsupervised Meta-Training with CNNs

CLEAR: Cumulative LEARning for One-Shot One-Class Image Recognition

9.1.2 聚合一组初始参数

一般没有找到一个合适的参数θ去微调,但有可能有很多相关任务学习的模型参数,例如任务是人脸识别,而只有识别眼睛,鼻子,耳朵的模型参数是可以获得到的。因此一个初始的参数将从这些已有的训练好的模型中挑选相关的多个,然后去组后这些参数形成合适的初始值。

image-20210112141340299

根据使用什么数据集,现有的方法可以分组如下:

(1) Similar data set–相似数据集

例如:Cross-generalization: Learning novel classes from a single example by feature replacement

(2) Unlabeled data set–未标注数据集

从未标注的数据集中学习的初始化参数可以区分样本来分割。

Learning from Small Sample Sets by Combining Unsupervised Meta-Training with CNNs:为学习到决策边界,对未标注样本数据进行伪标注迭代赋值与调整。

9.1.3 使用新参数微调初始参数

预训练的参数不合适新的FSL任务,因此附加多一个新的参数,由这个新参数与旧的参数形成新参数一起进行学习微调。

image-20210112142648130

例如:One-shot adaptation of supervised deep convolutional models:对于特征嵌入使用预训练的低层参数,对于FSL的训练学习一个线性分类在顶层上。

Multi-content gan for few-shot font style transfer:

9.2 Refine Meta-learned–微调元学习

image-20210112143825729

把学习数据层变成学习模型层。

9.2.1 Refine by Gradient Descent—通过梯度下降的方法去微调

例如:代表方法–MAML[Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks]

9.2.2 Refine in Consideration of Uncertainty–考虑不确定性微调

三种不确定性考虑:

(1) 共享参数的不确定性;

例如:Probabilistic model-agnostic meta-learning

(2)具体任务参数之上的不确定性;

例如:Recasting Gradient-Based Meta-Learning as Hierarchical Bayes,

Amortized Bayesian Meta-Learning

(3)关于n类特定参数的不确定性;

Meta-Learning with Latent Embedding Optimization

9.3 Learn Search Steps—学习搜索步

这个寻找最好的学习方向:

image-20210112145745610

Optimization as a model for few-shot learning:首先提出学习搜索步

Learning to learn by gradient descent by gradient descent:改进搜索步

十,展望

10.1 Problem Setup– 问题设置

考虑多模态信息。

10.2 Techniques–技术

AutoML扩展到FLS来。

10.3 Applications–应用

计算机视觉:character recognition,image classification,image retrieval , object tracking,gesture recognition,image captioning,visual question answering,video event detection

NLP:translation,language modeling

推荐系统:cold-start item recommendation

医疗应用: drug discovery

机器人与游戏:one-shot imitation, multi-armed bandits,visual navigation,continuous control in locomotion

10.4 Theories–理论

仅研究了少数方法。仍然有许多理论问题需要探索;

对FSL算法的收敛性还没有完全了解;

十一,总结

FSL主要是弥补AI与人类之间的鸿沟,文章通过数据,模型,算法三个方法把先验知识进行总结加入。一个比较深刻的内容为基于机器学习的定义来讨论,从定义出发,定义了FSL,推理FSL的核心问题,基于这个核心问题,增加先验知识的一个思想,对于怎么加这个问题进行了讨论,主要从数据,模型,算法上进行了总结,最后给了一下从问题设置,技术 ,应用,理论的展望。

差不多看了整整三天还是坚持勉强看完,过程中有很多地方不太明白,甚至看的时候有些崩溃,一个理解不深的地方是元学习,很多内容未能领悟。第二个内容是生成模型,对于生成模型之前只是基础学习。FLS的使用,很多都是在计算机视觉方法使用,NLP还是比较少一些。对于综述这里先作一个初步的记录,后面把基础知识补上,再重新读一篇。

综述的论文,信息量十分大,还未来得及消化,先感性认识,后面再去各个击破。

十二,参考

【1】论文:https://arxiv.org/abs/1904.05046v2
【2】综述论文“Generalizing from a Few Examples: A Survey on Few-Shot Learning”,https://blog.csdn.net/yorkhunter/article/details/103966951

【3】E. Schwartz, L. Karlinsky, J. Shtok, S. Harary, M. Marder, A. Kumar, R. Feris, R. Giryes, and A. Bronstein. 2018. Delta-encoder: an effective sample synthesis method for few-shot object recognition. In Advances in Neural Information Processing Systems 31. 2850–2860.

【4】【译】小样本学习综述(上),https://www.jianshu.com/p/b6dd70130e07

【5】【译】小样本学习综述(下),https://www.jianshu.com/p/c3709637e5f9

十三,NLP相关的FLS

句子完成(使用从提供的集合中选择的单词填充空格)[Rapid adaptation with conditionally shifted neuronsMatching networks for one shot learning],
简短评论的情感分类[Few-shot learning for short text classificationDiverse few-shot text classification with multiple metrics],

用户意图分类用于对话系统[Diverse few-shot text classification with multiple metrics],

刑事指控预测[Few-shot charge prediction with discriminative legal attributes],

单词相似度任务(例如随机数定义[High-risk learning: Acquiring new word vectors from tiny dataMemory, Show the Way:
Memory Based Few Shot Word Representation Learning
]

多标签文本分类[Few-shot and zero-shot multi-label learning for structured label spaces])

关系分类数据集FewRel [FewRel: A large-scale supervised few-shot relation classification dataset with state-of-the-art evaluation]

happyprince https://blog.csdn.net/ld326/article/details/112534524

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值