第四章:大模型(LLM)

第十部分:微调方法与实战

第二节:P-tuning


1. 背景与提出动机

Prompt Tuning 通过在输入前拼接可学习的向量提示来微调大模型,但在实践中存在两个局限:

  • 表示能力有限:简单的前缀嵌入难以捕获复杂任务需求。

  • 收敛效率较低:对长输入或复杂下游任务,效果不稳定。

为此,华为诺亚方舟实验室提出了 P-tuning,在 Prompt Tuning 基础上引入 可微分提示编码器,通过连续化的嵌入优化提升模型对任务的适配能力。


2. 核心思想

P-tuning 不再直接优化一组静态的 prompt embedding,而是训练一个 小型神经网络(prompt encoder) 来生成动态的提示表示。

  • 输入:任务相关的虚拟 token 序列(可学习 ID)。

  • 处理:通过一个小型的 BiLSTM/MLP(或 Transformer)对这些 ID 进行编码。

  • 输出:生成一组上下文相关的 prompt embedding,拼接到原始输入序列前。

这样,提示向量具备更强的表达能力,并且能更好地泛化到不同任务。


3. 方法流程

  1. 初始化虚拟 token:定义若干个任务专属 token(例如 <P1> <P2> ... <Pm>)。

  2. 提示编码器:通过 BiLSTM/MLP 对这些 token 进行编码。

  3. 拼接输入:将编码后的提示向量拼接到任务输入(如文本序列)前。

  4. 下游任务训练:冻结预训练模型参数,仅训练提示编码器和下游分类/预测层。


4. 公式描述

设任务输入为 X = [x_1, x_2, ..., x_n],提示 token 序列为 P = [p_1, p_2, ..., p_m]

  1. 提示编码器:

E_P = f_\theta(P)

其中 fθf_\theta 是可训练的编码器(BiLSTM/MLP)。

  1. 拼接后输入模型:

X' = [E_P ; E_X]

  1. 下游损失函数(如分类任务):

\mathcal{L} = - \sum y \log \hat{y}


5. 特点与优势

  • 参数高效:仅需训练编码器和少量提示 token,预训练模型完全冻结。

  • 表达力强:编码器能建模复杂任务语义,比静态 embedding 更灵活。

  • 任务适配性好:适用于分类、生成、信息抽取等不同任务。

  • 收敛更快:在少样本场景下表现更佳。


6. 实际应用

  • 文本分类:新闻分类、情感分析。

  • 信息抽取:命名实体识别、关系抽取。

  • 问答系统:在小样本下游 QA 任务中表现优于 Prompt Tuning。


7. 与 Prompt Tuning 的对比

特性 Prompt Tuning P-tuning
提示形式 直接学习静态向量 通过编码器生成动态向量
表达能力 较弱 较强
参数规模 稍多(增加编码器参数)
收敛速度 慢,效果不稳定 快,效果更好
泛化能力 有限 更好,适应多任务

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐