【论文笔记】A Survey on In-context Learning

A Survey on In-context Learning

论文题目:A Survey on In-context Learning

论文地址:[2301.00234] A Survey on In-context Learning (arxiv.org)

版本: [v3] Thu, 1 Jun 2023 12:23:40 UTC (6,761 KB)

参考文献列表: dqxiu/ICL_PaperList: Paper List for In-context Learning 🌷 (github.com)

二作解读:A Survey on In-Context Learning 论文解读_哔哩哔哩_bilibili

二作解读ppt:In-Context Learning Survey Sharing-Lei-2300313.pdf - Google 云端硬盘

笔记参考:In-Context Learning玩法大全 (qq.com)

image-20230930175406021

Abstract

随着大模型能力的增强,上下文学习(In-context learning, ICL)已成为自然语言处理的新范式,其中LLM仅仅基于添加了几个示例的上下文进行预测。探索ICL来评估和推断LLM的能力已经成为一种新的趋势。

本文旨在调查和总结ICL的进展和挑战

首先给出了ICL 的正式定义,并阐明了它和相关研究的相关性。

然后,组织并讨论了先进的技术,包括训练策略,演示设计策略以及相关分析。

最后,讨论了ICL面临的挑战,并为进一步研究提供了潜在的方向

希望我们的工作能够鼓励更多的研究来揭示ICL的工作原理并改进ICL。

1、Introduction

随着模型大小和语料大小的扩大,大模型展现了ICL的能力,即 从上下文的少量例子中学习

LLMs可以通过ICL执行一系列复杂的任务,如解决数学推理问题

ICL的核心思想就是 从类比中学习

figure1.png

图1:上下文学习的说明。ICL需要一个演示上下文,其中包含一些用自然语言模板编写的示例。将演示和查询作为输入,大型语言模型负责进行预测。

图一给出了一个图示,描述了LLM怎样利用ICL进行决策

  • 首先,ICL利用几个例子构成一个演示上下文(demonstration context),示例通常由自然语言模板写成。
  • 然后,ICL将一个查询问题(query question)和一段演示上下文拼接在一起,形成一个提示(prompt
  • 随后将提示输入到模型中进行预测问题的答案。

与监督学习的一个很大不同是, ICL不需要进行参数更新,而是直接对预训练的语言模型上进行预测

ICL有很多优势

  • 由于演示是用自然语言编写的,因此它提供了一个可解释的接口来与LLM通信。这种范式通过改变演示和模板,使人类知识更容易融入LLM
  • 上下文学习类似于人类通过类比学习的决策过程
  • 与监督训练相比,ICL是一个无需训练的学习框架。这不仅可以大大降低模型适应新任务的计算成本,而且可以使语言模型即服务成为可能,并且可以很容易地应用于大规模的真实世界的任务。

还有一些有趣的问题和特性需要研究

  • 在预训练期间的adaption可以显著提高ICL的能力
  • ICL对特定设置很敏感,包括提示模板、上下文示例的选择、样本的顺序等等
  • ICL的工作机制仍不清楚

2、Overview

ICL的强大能力依赖于两个阶段:

  • 培养LLM的ICL能力的训练阶段,此阶段LLM直接针对语言建模目标进行训练,例如从左到右生成。虽然没有针对上下文学习进行优化,但是LLM仍然表现出ICL能力
  • LLM根据任务特定演示预测的推理阶段。对于提升ICL能力的方法,本文将给予详细的描述和比较,如选择合适的例子进行演示,针对不同的任务设计具体的评分方法

image-20230928105336711

图2:上下文学习的分类。训练阶段和推理阶段是ICL的两个主要阶段。在训练阶段,现有的ICL研究主要以一个预训练的LLM为骨干,选择性地对模型进行预热,以增强和推广ICL能力。在推理阶段,演示设计和评分函数的选择是最终性能的关键。

图二展示了作者对上下文学习进展的分类,同时也是文章的组织结构。

关键部分如下:

  • ICL正式定义
  • Warmup方法
  • 演示设计策略
  • 主要评分函数
  • 对ICL背后秘密的探索
  • 针对ICL有用的评估和资源
  • ICL潜在应用场景
  • ICL的挑战和潜在方向

3、Definition and Formulation

definition

作者根据GPT-3 【1】 的论文,给出ICL的 定义ICL是一种范式,它允许LM根据以演示形式给出的示例来学习任务本质上,它使用经过良好训练的语言模型估计潜在答案的可能性,条件是演示

formulation

给定输入文本 x x x,一组候选答案 Y = { y 1 , y 2 , . . . y m } Y=\{y_1,y_2,...y_m\} Y={y1,y2,...ym}( Y Y Y可能是类别标签或者一组自由文本序列),预训练模型 M M M在给定演示集合 C C C的条件下,选取具有最高分数的候选答案作为预测结果。

C C C包含一个可选的任务指令 I I I k k k个演示示例,因此 C = { I , s ( x 1 , y 1 ) , . . , s ( x k , y k ) } C=\{I,s(x_1,y_1),..,s(x_k,y_k)\} C={I,s(x1,y1),..,s(xk,yk)},或者 C = { s ( x 1 , y 1 ) , . . . , s ( x k , y k ) } C=\{s(x_1,y_1),...,s(x_k,y_k)\} C={s(x1,y1),...,s(xk,yk)}。其中 s ( x k , y k , I ) s(x_k,y_k,I) s(xk,yk,I)是根据任务用自然语言编写的案例。一个候选答案 y i y_i yi的可能性可以通过模型 M \mathcal{M} M的整个输入序列的评分函数 f f f表示:
P ( y j ∣ x ) ≜ f M ( y j , C , x ) P(y_j\mid x)\triangleq f_{\mathcal{M}}(y_j,C,x) P(yjx)fM(yj,C,x)
最终的预测的标签是概率最高的候选答案
y ^ = arg ⁡ max ⁡ y j ∈ Y P ( y j ∣ x ) \hat{y}=\arg\mathop{\max}\limits_{y_j\in Y} P(y_j|x) y^=argyjYmaxP(yjx)
评分函数 f f f评估了给出演示和查询文本时当前答案的可能性。

根据定义,可以看到与ICL与其他相关概念的区别。

  • prompt learning:提示可以是离散模板或者软参数,鼓励模型预测期望的输出。严格地说,ICL可以看成prompt learning的一个子类,其中演示是提示的一部分。Liu等人 【2】 对prompt learning写了篇综述,但ICL并不在里面。
  • few-shot learning: 指的是在给定少量监督数据的情况下利用参数自适应来学习最佳模型参数的训练方法(引用自[Few- shot Learning : a survey ]这是v1的题目,最新版v3见 【3】 )。相反,ICL不需要参数更新,而是直接在预训练的LLM上。

4、Model Warmup

在预训练和ICL推理之间存在一个持续训练阶段,即模型预热Warmup阶段,可以进一步提高ICL推理能力。

这是一个可选过程,包括调整模型参数或者新增参数,与传统的finetune过程不同,finetune是为了提高LLM在特定任务上的性能,而 warmup是为了使得模型具备更好的通用ICL能力

4.1 Supervised In-context Training

虽然与训练后的语言模型已经初步具备ICL能力,但是预训练的目标并不是为了ICL而优化的,因此与下游ICL目标还是存在gap,最直观的方法就是在有监督的ICL数据上进行训练,来消除两者之间的gap。

比如MetaICL 【4】 直接将很多任务调整为ICL形式并进行整合,增强了模型的few-shot能力。

image-20230930220547991

此外,Google为了进一步鼓励模型学习输入-标签映射提出了symbol tuning方法 【5】 ,具体而言,用任意符号(比如,foo/bar)替换掉自然语言标签(比如,积极/消极情绪)。它利用了这样的直觉,当模型无法使用指令或自然语言标签来找出任务时,它必须通过学习输入-标签映射来实现。

还有部分研究专注于 instruction tuning,与MetaICL相比,它们更加考虑对于任务的解释,这种方式更容易扩展,比如LaMDA-PT 【6】FLAN 【7】

image-20231003170010136

4.2 Self-supervised In-context Training

除了使用有监督的数据提升ICL能力外,也有工作尝试使用自监督的方式。

MetaAI提出根据下游任务的ICL格式构造自监督训练数据 【8】 。它们将原始文本转化为输入-输出对,探索4个自监督目标,包括masked token prediction 和classification task。

PICL(Pre-training for in-context learning) 【20】 也利用了原始语料,但是只使用了一个简单的语言建模目标,在保留了原来模型生成能力的同时,提示了基于上下文的任务推理和执行。

Takeaway

takeaway 可以指获得的心得,领悟,总结

  • 无论监督训练还是自监督训练,都提出在ICL推理之前训练LLM,关键思想是通过引入接近上下文学习的目标来减少预训练和下游ICL格式之间的差距。与包含demonstration的in-context finetuning 相比,没有少量样本作为演示的instruction finetuning 更加简单和受欢迎
  • 在某种程度上,这些方法都通过更新模型参数来提高ICL能力,这意味着原始LLM的ICL能力有很大的改进潜力。因此,尽管ICL并不严格要求模型预热,但作者建议在ICL推理之前添加一个预热阶段
  • 当越来越多地放大训练数据时,预热带来的性能提升遇到了一个平台(plateau)。这种现象出现在有监督的上下文训练和自监督的上下文训练中,表明LLM只需要少量的数据来适应,以便在预热过程中从上下文中学习。

5、Demonstration Designing

一些研究表明,ICL的性能严重依赖于演示,包括演示的格式,演示示例的顺序。

下面从两方面来进行研究,演示组织和演示格式

image-20231003171545255

5.1 Demonstration Organization

这部分讨论如何从示例池中选取合适的示例以及怎样组织它们的顺序。

5.1.1 Demonstration Selection

image-20231002165558360

image-20231003170237887

对于ICL来说,哪些样本是好的?选取合适样本的方法分为两类:无监督与监督。

Unsupervised Method
  • 句向量距离:Liu等人 【9】 的研究表明选择与输入的测试句子最相似的邻居作为ICL的例子是一个好的方案。(这种方式在GPT-NER论文【GPT-NER: Named Entity Recognition via Large Language Models】也提到过)。他们是用距离指标来衡量相似度,比如L2距离或余弦相似度。他们提出了KATE ,一个基于KNN的无监督提取器,用来选取上下文例子。

  • 互信息(mutation information,MI): 见论文 【10】 ,互信息可以用来表示两个变量之间是否有关系,以及关系的强弱。它的优势是不需要有标签的示例以及特定的LLM。

此外,还有学者尝试利用perplexityPPL【11】 或者演示的多样性 【12】 等指标进行选取。

甚至,可以让LLM自己生成适合的演示,称为SG-ICL 【13】

还有其他研究利用LM的输出分数 P ( y ∣ C , x ) P(y|C,x) P(yC,x)作为指标来选取示例,如Self-Adaptive ICL 【14】Informative Score 【15】

Supervised Method

Rubin等人 【16】 提出了一个两阶段的提取方法,先用无监督检索器召回若干相似的样本,再通过监督学习训练的Efficient Prompt Retriever(EPR)进行打分,从而筛选出最合适的样本。

Li等人 【17】 对上述方法的EPR进行了改进,得到了一个统一演示检索器Unified Demonstration Retriever (UDR),统一了不同任务间的演示选择。

此外,也有基于prompt tuning强化学习(如 【18】 采用了Q-Learning)的方式选择样本的方法。

5.1.2 Demonstration Ordering

image-20231003221306124

挑选完演示示例后,如何对它们排序也很重要。 论文 【19】 证实了顺序敏感度是存在于很多模型中的一个普遍问题。

目前的研究并不多,有两种思路:

  • 论文 【9】 根据这些示例与输入句子之间的距离进行排序,越相近的排在后面,也就是越靠近输入。
  • GlobalE&LocalE : 论文 【19】 定义了global 和 local entropy metrics(熵度量),找到了熵与ICL效果的联系,从而根据熵来决定最佳排序。

5.2 Demonstration Formatting

这部分讨论如何设计演示的格式?

最简单的方式就是将示例的x-y对按照顺序直接拼接到一起。但是对于复杂的推理问题,语言模型很难直接根据x推理出y,这种格式就不适用了。

通常有两种方式: instruction指令格式以及reasoning steps格式

5.2.1 Instruction Formatting

image-20231003221317360

任务的指令描述非常依赖于人工,不过现在有很多人尝试让LLM自己生成任务描述并选择。

Honovich等人 【21】 展示了语言模型可以通过提示它们生成符合示例的自然语言指令,从一些示例中显式地推断出一个底层任务,并引入了 instruction induction 挑战,对生成指令的能力进行了评估。

image-20231003174229556

Wang 等人【22】提出了 Self-instruct 方法,旨在引导LLM依靠自己的生成能力提高指令遵循能力(instrutction-following)。

image-20231003174248889

5.2.2 Reasoning Steps Formatting

image-20231003221326838

Wei 等人【23】在构建演示时,在输入和输出之间添加了中间推理步骤,这些步骤被称为 Chain-of-thoughts,即 CoT

image-20231006160435562

Qiao等人【24】对语言模型的推理能力的前沿研究做了全面综述。

image-20231003212810729

CoT也有不同的设计策略。

Wei等人【23】采用的手工撰写CoT的方法,而Zhang等人【25】提出了Auto-CoT的方法,自动构建包含问题和推理链的说明信息。

此外,还有研究 Multi-stage ICL ,分多个步骤来完成任务,每一步都设计不同的演示,让模型一步步解答。比如 Self-Ask 【26】(让模型根据输入生成后续问题,并问自己这些问题)、iCAP 【27】(迭代上下文感知提示器)、Least-to-Most Prompting 【28】(将一个复杂的问题分为一系列更为简单的子问题,然后按顺序解决它们)。

此外,Xu等人【29】提出了 Super In-Context learning (SuperICL) ,利用LLM与较小模型的组合,较小模型作为插件,有效地执行任务。

Takeaway

作者对Prompt设计部分的工作进行了讨论

  • 已有样例选择的策略都是基于单个样本的, 语料库级别的研究 更加重要并有待研究。

  • llm的输出分数或概率分布在实例选择中起着重要的作用

  • 从k个样例的k!个排列中, 找到最优解是一个很有挑战的问题

  • CoT技术可以提升推理效果,怎么优化CoT有待探索

  • 要善于利用LLM的生成能力来摆脱人工的限制,来辅助演示设计,如生成指令,演示,CoT 等。

6、Scoring Function

评分函数决定了我们如何将一个语言模型的预测转换为对一个特定答案的可能性的估计。

主要方法有:

  • Direct【1】:GPT-3中使用,直接取答案的条件概率,缺点是只能衡量固定模式的答案,如答案在输入序列的最后。

    这里不太明白

  • PPL :它计算整个句子的困惑度,消除了token位置的限制,但是需要额外的计算时间。

  • Channel:此方法与之前给定输入上下文的情况下估计标签的概率的方法不同,它计算了反向的条件概率,即估计给定标签的情况下,输入的可能。这个方法对于不平衡的数据表现很好。

image-20231003223711847

此外,还有一个方向上合并超出上下文长度约束的信息来校准分数,如Structured PromptingKNN Prompting

Takeaway

现有的评分函数都直接从llm的条件概率计算一个分数。关于通过评分策略来校准偏差或减轻敏感性的研究有限。

7、Analysis

作者还调研了可能会影响ICL效果的因素,如下表

image-20231003225754366

7.1 What influences ICL performance

7.1.1 Pre-training stage
  • Shin等人【30】研究了预训练语料库的来源和大小对上下文学习的影响

    • ICL的性能很大程度上取决于预训练语料库领域来源,语料库大小并不一定会决定ICL的出现
    • 即使在单个语料库上不会出现ICL,在多个语料库的组合上训练也会产生ICL
    • 与下游任务相关的预训练并不总是保证ICL能力的增强
    • 语言建模和上下文学习之间的关系并不总是相关
  • Wei等人【31】发现预训练模型的参数量以及训练步数对ICL能力的产生有影响。

7.1.2 Inference stage

一些研究指出,在推理阶段,示例的属性也会影响ICL的性能。

比如,Min等人【32】提出了影响演示性能的四个方面:“the input-label pairing format”(即模板)、“the label space”、“the input distribution”、“the input-label mapping”(标签y是否正确)。他们证明了前三个因素对ICL性能有很大影响,但是标签的正确性影响很小。

但Kim等人【 33】却提出了相反的观点,认为正确的标签对ICL性能有影响,这却决于具体实现配置。

也有其他研究指出了影响ICL性能的其他因素,具体见表格3,相关论文为【33】、【34】、【9】。

7.2 Understanding Why ICL works

  • Distribution of Training Data :跟训练数据的分布有关。有研究发现当训练数据表现出特定的分布属性时就会出现上下文学习,另外,也有学者认为ICL可能是隐式的Bayesian inference。

  • Learning Mechanism :跟学习机制有关。比如Li等人【36】将ICL抽象为算法学习温柔,表明Transformer可以通过演示中的隐式经验风险最小化来实现合适的函数类。也有其他工作试图在ICL与微调之间建立联系。Dai等人【37】将大模型解释为元优化器然后将ICL立即为隐式微调,其实验表明,上下文学习的行为类似于从多个角度进行的显式微调。

  • Functional Components :跟特定的功能模块有关。有学者【38】发现Transformer里有些注意力头会拷贝之前的模式来预测下一个token,他们认为感应头可能是大模型中ICL机制的来源。

Takeaway

  • 表三中列出了可能影响ICL性能的因素,了解ICL可能的原理会帮助我们提高ICL的性能。
  • 现有的对ICL解释的研究仅局限于小任务和小模型,需要考虑对更广泛任务和大模型的分析。其中,用梯度下降来理解ICL似乎是一个合理且有前景的未来方向,如果二者建立了清晰的联系,就可以借鉴之前传统深度学习的历史来提升ICL。

8、Evaluation and Resources

8.1 Traditional Tasks

在传统的数据集和基准上进行研究,例如SuperGLUE、SQuAD。但目前,于微调相比,ICL在传统的NLP任务上还有一定的进步空间。

8.2 New Challenging Tasks

研究人员更感兴趣于评估不要下游任务微调的大语言模型的内在能力。

Srivastava 等人【39】提出了 BIG-Bench (Beyond the Imitation Game benchmark),是一个涵盖了多种任务的大型benchmark。最好的模型已经在65%的BIG-Bench任务上超过了平均的人类评分结果。

在此基础上,Suzgun等人【40】提出了 BIG-Bench Hard (BBH),由23个具有挑战性的任务构成,这些任务最新模型都低于人类的性能。

此外,还有研究人员在寻找inverse scaling 任务,即当模型扩大的时候,模型性能反而下降的任务,这些任务突出显示了ICL范式的潜在问题。

Iyer等人提出了 OPT-IML Bench ,由8个现有benchmarks的2000个NLP任务构成,用来探索大模型的泛化能力。

此外,还有一系列的研究针对于ICL的推理能力,如MGSM(针对多语言环境下的思维链能力)、LLMAS(评估行为和变化方面的推理能力)等,具体见表4

image-20231005233212209

8.3 Open-source Tools

OpenICL【42】,一个用于ICL和LLM评估的开源工具包,支持各种最先进的检索和推理方法、任务和零/少样本评估LLM。

Takeaway

  • 由于icl对示范实例数量的限制,传统的评价任务必须适应few-shot设置;否则,传统的基准测试不能直接评估lms的ICL能力
  • 由于ICL是一种新的学习范式,在许多方面不同于传统的学习范式,因此对ICL的评价提出了新的挑战和机遇。 面对这些挑战, 现有的评价方法的结果不稳定,对演示示例和指令尤为敏感。现有的评估准确率低估了ICL对指令扰动的敏感性,如何进行一致性的ICL评估仍然有待解决 。由于ICL只需要几个实例进行演示,降低了数据构建的成本。

9、In-Context Learning Beyond Text

在NLP领域ICL的巨大成功引发了研究人员探索其在其他模态领域的潜力的热情,比如visual、vision+language、speech等任务。

这一部分简要的进行了阅读,暂时不做详细笔记,仅记录一下takeaway部分

Takeaway

  • 适当格式化的数据和架构设计是激发ICL潜力的关键因素
  • 在文本领域研究演示设计于选择的成果不能简单地转移到其他模态中去,需要针对特定领域做研究。

10、Application

ICL不止在传统的NLP任务上如机器翻译或信息抽取以及text-to-SQL上展示了突出性能,还在需要 复杂推理 (complexity reasoning) 和 组合泛化 (compositional generalization) 的任务上表现显著。

ICL还为 meta-learning 以及 instruction-tuning 提供了潜力。

下面展示了几个新兴的应用场景:

Data engineering

  • 数据注释:对于许多NLP任务来说,数据注释是一个耗时且费力的过程。使用GPT-3生成标签的成本比使用人类标签要低很多,并且,将伪标签与人类标签相结合,可以获得更好的性能。

  • 知识图谱构建:利用上下文学习的范式,可以显著提高自动构造和完成知识图谱的水平,进而降低知识图谱构建的成本。

尽管,与人类标注相比,ICL可以以较低的成本生成相对质量高的数据,怎样在数据注释中利用ICL仍然有待解决。

Model Augmentating

ICL的上下文灵活性展示了提高检索增强方法的潜力。

比如,Ram等人提出的 In-context RALM (retrieval-augmented language modeling) 方法,保持了LM结构不变,并在输入前加入真实文档,利用现成的通用检索器,取得了可观的LM收益。

ICL还显示出了在安全方面的潜力,有学者使用ICL进行检索演示来引导模型朝着更安全的方向生成内容,减少偏见与毒性。

Knowledge Updating

LLM可能会包含错误或过时的知识,ICL可以有效编辑或更新这些知识。

比如,Si等人【44】发现当提供反事实 (counterfactual 通过未发生的条件来进行推理可能的结果,就是反事实推理)例子时,GPT-3在85%的时候都可以更新答案,并且更大的模型在上下文知识更新时表现更好。他们通过适当的提示,使得GPT-3在多个方面都比小规模的监督模型要可靠。

11、Challenges and Future Directions

11.1 New Pretraining Strategies

语言建模的目标和ICL的能力并不匹配【45】。第4章的方法可以 减少两者之间的差距。而更进一步,为ICL量身定做的预训练目标和指标可能更能培养出具有强大ICL能力的LLM。

11.2 ICL Ability Distillation

随着计算规模和参数超过某个阈值,ICL能力就会出现。

如果能将ICL的能力转移到小模型上时,就可以极大地促进模型部署。

Magister【46】 探索了通过知识蒸馏将推理能力转移到较小的模型上,还探索了模型和数据集大小的权衡。具体来说,他们在更大的教师模型产生的思维链输出上微调学生模型。

尽管实现了性能的提升,但改进可能来自于任务。 通过从更大的LLM中学习来提高推理能力的进一步研究可能是有趣的方向。

11.3 ICL Robustness

先前的研究证明,ICL的性能很不稳定,从瞎猜到SOTA不等,并且对很多因素敏感,包括演示的排列,演示的格式等。因此保持ICL的鲁棒性是一个挑战性的问题。

但很多研究陷入了准确性和鲁棒性的两难境地,甚至有人牺牲推理效果来提升鲁棒性。

为了有效提高 ICL 的鲁棒性,**需要对 ICL 的工作机制进行更深入的分析 **。从更理论的角度而不是经验角度分析 ICL 的鲁棒性可以得到未来对更鲁棒的ICL 的研究。

11.4 ICL Efficiency and Scalability

ICL需要的演示面对着一些挑战:

  • 可扩展性:演示的数量受到LM的最大输入长度的显著,与微调相比,长度要少很多
  • 效率性:当演示数量增加时,注意力机制的二次复杂性使得计算成本更高

第5章内容关注于利用有限数量的演示来实现更好的ICL性能,并提出了几种演示设计策略。 将ICL扩展到更多演示并提高其效率仍然是一种具有挑战性的任务。

已经有一些工作提出了解决方法,如 structured prompting、demonstration ensembling、dynamic prompting、iteration forward tuning、EVaLM等等。

12、Conclusion

作者调查了现有的ICL文献,并对先进的技术进行了回顾与总结,从warmup方法、演示设计策略、评估方法、数据集和资源等方面对ICL相关研究做了分析,并强调了一些具有挑战性的问题和未来方向。

References

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jinniulema

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值