Prompt-Tuning方法简单介绍

发布于:2025-08-11 ⋅ 阅读:(16) ⋅ 点赞:(0)
1. NLP任务四种范式

NLP的发展经历了四个主要阶段,每个阶段都有其独特的方法和应用场景:

范式 特征 数据需求 典型任务 优点 缺点
第一范式
传统机器学习模型
基于TF-IDF特征+朴素贝叶斯等算法 标注数据 文本分类、NER 可解释性强 特征工程耗时,难以捕捉复杂语义
第二范式
深度学习模型
使用word2vec特征+LSTM等深度学习算法 标注数据 机器翻译、文本生成 自动学习特征,表现优异 需要大量标注数据,可解释性差
第三范式
预训练+微调
利用BERT等预训练模型进行微调 未标注+标注数据 几乎所有NLP任务 泛化能力强 预训练成本高,微调依赖标注数据
第四范式
预训练+Prompt+预测
通过Prompt引导模型完成任务,无需微调模型参数 少量/无标注数据 分类、生成、推理 少样本/零样本学习,接近人类理解 提示设计复杂,对复杂任务泛化有限

核心思想:NLP范式的发展方向是精度更高、少监督甚至无监督。Prompt-Tuning是当前学术界探索这一方向的重要技术。


2. Fine-Tuning回顾

定义:Fine-Tuning是将预训练模型适应特定下游任务的方法。
核心流程

  1. 预训练:在大规模数据上训练模型(如BERT)。
  2. 微调:在小规模任务数据上继续训练模型,调整模型参数。

痛点

  • 下游任务与预训练目标差异大,可能导致过拟合。
  • 微调依赖大量标注数据。

解决方案:Prompt-Tuning通过添加模板避免引入额外参数,适用于小样本或零样本场景。


3. Prompt-Tuning技术介绍

Prompt的作用
Prompt是用户与模型之间的“桥梁”,通过设计输入引导模型生成目标输出。
类比

  • 你画我猜:通过提示词(如“3个字,水果”)帮助猜词。
  • 考试出题:题目设计直接影响学生能否理解意图并给出正确答案。

Prompt的组成

  1. 指令(Instruction):明确任务目标(如“请总结以下文本”)。
  2. 上下文(Context):提供背景信息(如“以下是人工智能的描述:[文本]”)。
  3. 角色(Role):指定模型扮演的角色(如“你是一名科普作家”)。
  4. 格式指示(Format Indicator):要求输出格式(如JSON、Markdown列表)。
  5. 范例(Example):提供输入-输出示例(如“评论:太棒了!情感:积极”)。
  6. 约束条件(Constraint):限制输出内容(如“总结不超过50字”)。
  7. 思考步骤(Chain-of-Thought, CoT):引导模型展示推理过程。

Prompt-Tuning的核心理念
将下游任务重构为预训练模型的预训练任务(如MLM),通过设计Prompt引导模型生成目标输出。

对比维度 Fine-Tuning Prompt-Tuning
模型参数 修改预训练模型参数 保持预训练模型参数不变
任务目标 直接学习下游任务目标函数 将下游任务目标重构为预训练任务形式
资源消耗 高(需存储多个模型副本) 低(仅需存储Prompt)
目的 深度适配任务,性能上限高 高效利用预训练模型通用能力,泛化性好
比喻 改变学生本身以适应职业 用学生习惯的方式提问解决特定问题

4. Prompt-Tuning入门方法

实现步骤(以情感分析为例)

  1. 构建模板(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]
    
  2. 标签词映射(Verbalizer)
    将[MASK]预测的词映射到标签。
    示例:

    • 若[MASK]预测为“great” → 标签:positive
    • 若[MASK]预测为“terrible” → 标签:negative
  3. 训练
    使用交叉熵损失训练MLM分类器,仅更新Prompt参数(如Soft Prompt向量)。

Prompt-Tuning的发展历程

  1. 从In-Context Learning到Prompt-Tuning
    GPT-3的In-Context Learning启发了Prompt-Tuning,但Prompt-Tuning通过训练Prompt Tokens提升性能。
  2. 从Hard Prompt到Soft Prompt
    Hard Prompt依赖人工设计(如自然语言模板),而Soft Prompt使用可学习的向量(伪标记)。
  3. 从单层Prompt到多层Prompt
    Prefix-Tuning在每一层添加Prompt Tokens,增强控制能力。
  4. 从手工设计到自动化搜索
    研究人员探索自动化Prompt Engineering(如PET模型)。

5. Prompt-Tuning主要方法

(1)PET模型
核心思想:将分类任务转换为完形填空任务,结合监督学习和无监督数据。
步骤

  1. 模式设计与微调
    • 输入少量标注数据和手动设计的Pattern-Verbalizer对(PVP)。
    • 微调模型预测[MASK]位置的词汇化器词(如“great”或“terrible”)。
  2. 无标注数据软标签生成
    • 使用微调后的模型集成预测无标注数据的[MASK]概率,生成软标签。
  3. 最终监督训练
    • 联合硬标签(标注数据)和软标签训练最终分类器。

缺陷

  • 人工设计Pattern和Verbalizer成本高,训练不稳定。

(2)Prompt-Oriented Fine-Tuning(POFT)
核心思想:将下游任务转换为预训练任务形式,全量微调模型参数。
步骤

  1. 定义任务模式
    示例(情感分类):
    • 原始输入:这部电影太棒了!标签:积极
    • POFT模式:这部电影太棒了!这是一部[MASK]的电影。
  2. 定义标签映射
    • 积极 → 好, 棒, 优秀
    • 消极 → 差, 烂, 糟糕
  3. 构造训练样本
    将模式化句子输入模型,训练目标为预测[MASK]的Verbalizer词。
  4. 全量微调
    更新预训练模型所有参数,回归到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的优势,开发混合方法。

网站公告

今日签到

点亮在社区的每一天
去签到