1. NLP任务四种范式
NLP的发展经历了四个主要阶段,每个阶段都有其独特的方法和应用场景:
范式 | 特征 | 数据需求 | 典型任务 | 优点 | 缺点 |
---|---|---|---|---|---|
第一范式 传统机器学习模型 |
基于TF-IDF特征+朴素贝叶斯等算法 | 标注数据 | 文本分类、NER | 可解释性强 | 特征工程耗时,难以捕捉复杂语义 |
第二范式 深度学习模型 |
使用word2vec特征+LSTM等深度学习算法 | 标注数据 | 机器翻译、文本生成 | 自动学习特征,表现优异 | 需要大量标注数据,可解释性差 |
第三范式 预训练+微调 |
利用BERT等预训练模型进行微调 | 未标注+标注数据 | 几乎所有NLP任务 | 泛化能力强 | 预训练成本高,微调依赖标注数据 |
第四范式 预训练+Prompt+预测 |
通过Prompt引导模型完成任务,无需微调模型参数 | 少量/无标注数据 | 分类、生成、推理 | 少样本/零样本学习,接近人类理解 | 提示设计复杂,对复杂任务泛化有限 |
核心思想:NLP范式的发展方向是精度更高、少监督甚至无监督。Prompt-Tuning是当前学术界探索这一方向的重要技术。
2. Fine-Tuning回顾
定义:Fine-Tuning是将预训练模型适应特定下游任务的方法。
核心流程:
- 预训练:在大规模数据上训练模型(如BERT)。
- 微调:在小规模任务数据上继续训练模型,调整模型参数。
痛点:
- 下游任务与预训练目标差异大,可能导致过拟合。
- 微调依赖大量标注数据。
解决方案:Prompt-Tuning通过添加模板避免引入额外参数,适用于小样本或零样本场景。
3. Prompt-Tuning技术介绍
Prompt的作用:
Prompt是用户与模型之间的“桥梁”,通过设计输入引导模型生成目标输出。
类比:
- 你画我猜:通过提示词(如“3个字,水果”)帮助猜词。
- 考试出题:题目设计直接影响学生能否理解意图并给出正确答案。
Prompt的组成:
- 指令(Instruction):明确任务目标(如“请总结以下文本”)。
- 上下文(Context):提供背景信息(如“以下是人工智能的描述:[文本]”)。
- 角色(Role):指定模型扮演的角色(如“你是一名科普作家”)。
- 格式指示(Format Indicator):要求输出格式(如JSON、Markdown列表)。
- 范例(Example):提供输入-输出示例(如“评论:太棒了!情感:积极”)。
- 约束条件(Constraint):限制输出内容(如“总结不超过50字”)。
- 思考步骤(Chain-of-Thought, CoT):引导模型展示推理过程。
Prompt-Tuning的核心理念:
将下游任务重构为预训练模型的预训练任务(如MLM),通过设计Prompt引导模型生成目标输出。
对比维度 | Fine-Tuning | Prompt-Tuning |
---|---|---|
模型参数 | 修改预训练模型参数 | 保持预训练模型参数不变 |
任务目标 | 直接学习下游任务目标函数 | 将下游任务目标重构为预训练任务形式 |
资源消耗 | 高(需存储多个模型副本) | 低(仅需存储Prompt) |
目的 | 深度适配任务,性能上限高 | 高效利用预训练模型通用能力,泛化性好 |
比喻 | 改变学生本身以适应职业 | 用学生习惯的方式提问解决特定问题 |
4. Prompt-Tuning入门方法
实现步骤(以情感分析为例):
构建模板(Template):
将原始句子拼接为包含[MASK]的模板。
示例:原始句子:I like the Disney films very much. 模板:It was [MASK]. Prompt-Tuning输入:[CLS] I like the Disney films very much. [SEP] It was [MASK]. [SEP]
标签词映射(Verbalizer):
将[MASK]预测的词映射到标签。
示例:- 若[MASK]预测为“great” → 标签:positive
- 若[MASK]预测为“terrible” → 标签:negative
训练:
使用交叉熵损失训练MLM分类器,仅更新Prompt参数(如Soft Prompt向量)。
Prompt-Tuning的发展历程:
- 从In-Context Learning到Prompt-Tuning:
GPT-3的In-Context Learning启发了Prompt-Tuning,但Prompt-Tuning通过训练Prompt Tokens提升性能。 - 从Hard Prompt到Soft Prompt:
Hard Prompt依赖人工设计(如自然语言模板),而Soft Prompt使用可学习的向量(伪标记)。 - 从单层Prompt到多层Prompt:
Prefix-Tuning在每一层添加Prompt Tokens,增强控制能力。 - 从手工设计到自动化搜索:
研究人员探索自动化Prompt Engineering(如PET模型)。
5. Prompt-Tuning主要方法
(1)PET模型
核心思想:将分类任务转换为完形填空任务,结合监督学习和无监督数据。
步骤:
- 模式设计与微调:
- 输入少量标注数据和手动设计的Pattern-Verbalizer对(PVP)。
- 微调模型预测[MASK]位置的词汇化器词(如“great”或“terrible”)。
- 无标注数据软标签生成:
- 使用微调后的模型集成预测无标注数据的[MASK]概率,生成软标签。
- 最终监督训练:
- 联合硬标签(标注数据)和软标签训练最终分类器。
缺陷:
- 人工设计Pattern和Verbalizer成本高,训练不稳定。
(2)Prompt-Oriented Fine-Tuning(POFT)
核心思想:将下游任务转换为预训练任务形式,全量微调模型参数。
步骤:
- 定义任务模式:
示例(情感分类):- 原始输入:这部电影太棒了!标签:积极
- POFT模式:这部电影太棒了!这是一部[MASK]的电影。
- 定义标签映射:
- 积极 → 好, 棒, 优秀
- 消极 → 差, 烂, 糟糕
- 构造训练样本:
将模式化句子输入模型,训练目标为预测[MASK]的Verbalizer词。 - 全量微调:
更新预训练模型所有参数,回归到MLM目标。
缺点:
- 大模型微调成本高,资源消耗大。
(3)Soft Prompt方法
特点:
- 使用可训练的连续向量(伪标记)代替固定模板。
- 仅更新Prompt对应的嵌入参数,预训练模型参数不变。
典型方法对比:
方法 | Prompt位置 | Prompt Encoder | Prompt长度 | 参数量 | 性能 |
---|---|---|---|---|---|
Prompt-Tuning | 输入开头 | MLP | 短(5-20) | 极少 | 分类任务表现好,小样本效果一般 |
P-Tuning V1 | 输入嵌入层前 | LSTM + MLP | 短(5-20) | 中等 | 分类任务表现优异,小模型效果差 |
P-Tuning V2 | 每一层输入中 | 无(直接可训练) | 长(20-100+) | 较多(层数×长度×维度) | 媲美甚至超越全量微调,泛化性好 |
6. 实际应用案例
贴近生活的例子:
假设需要让模型判断用户评论的情感(积极/消极)。
- 传统Fine-Tuning:需要大量标注数据(如“太棒了!”→ 积极,“糟糕透了!”→ 消极)。
- Prompt-Tuning:设计模板“It was [MASK].”并映射:
- 若预测为“great” → 积极
- 若预测为“terrible” → 消极
- 无需额外标注数据,仅需少量样本微调Prompt参数。
7. 总结
方法 | 核心优势 | 适用场景 | 资源消耗 |
---|---|---|---|
Fine-Tuning | 深度适配任务,性能上限高 | 有大量标注数据的任务 | 高 |
Prompt-Tuning | 少样本/零样本学习,参数效率高 | 标注数据稀缺的场景 | 低 |
PET模型 | 结合监督与无监督数据,提升泛化性 | 少量标注+大量无标注数据 | 中等 |
P-Tuning V2 | 对模型大小不敏感,复杂任务表现优异 | 大模型或复杂任务 | 高 |
未来方向:
- 自动化Prompt Engineering(如基于强化学习或元学习的优化)。
- 结合Prompt-Tuning与传统Fine-Tuning的优势,开发混合方法。