Prompt learning

Prompt Learning 原理

1. Prompt Learning 是什么

Prompt Learning 可以先理解成一句话:

不大改模型本身,而是学习"应该给模型什么样的提示",让预训练大模型更好地完成下游任务。

它和 LoRA、SFT 的核心区别是:

  • LoRA / SFT:主要修改模型内部参数
  • Prompt Learning:主要优化输入给模型的 Prompt

2. 最普通的 Prompt 是什么

例如,让 LLM 根据网络状态判断是否发生拥塞:

text 复制代码
根据下面的网络状态判断是否发生拥塞:

RTT = 120 ms
Packet Loss = 5%
Bandwidth = 20 Mbps

模型输出:

text 复制代码
Congestion

这里:

"根据下面的网络状态判断是否发生拥塞"

就是人工设计的 Prompt。

这种 Prompt 一般称为:

Hard Prompt / Discrete Prompt \boxed{\text{Hard Prompt / Discrete Prompt}} Hard Prompt / Discrete Prompt

也就是离散文本提示


3. Prompt Learning 到底在"学习"什么

人工设计的 Prompt 不一定是最适合模型的。

因此,Prompt Learning 的核心思想是:

让模型通过训练,自己寻找最适合当前任务的 Prompt。

但它通常并不是直接学习一句人类能够阅读的文本,而是学习一组连续的向量。

假设原始输入表示为:

X=x1,x2,x3,...,xn X=x_1,x_2,x_3,\\dots,x_n X=x1,x2,x3,...,xn

Prompt Learning 会在输入前增加几个可训练的 Prompt 向量:

P=p1,p2,p3,...,pm P=p_1,p_2,p_3,\\dots,p_m P=p1,p2,p3,...,pm

最终输入变成:

P;X\] \[P;X\] \[P;X

即:

p1,p2,...,pm,x1,x2,...,xn\] \[p_1,p_2,\\dots,p_m,x_1,x_2,\\dots,x_n\] \[p1,p2,...,pm,x1,x2,...,xn

其中:

p1,p2,...,pm p_1,p_2,\dots,p_m p1,p2,...,pm

并不是实际的英文单词或者中文字符,而是一组可学习的 Embedding 向量

因此这种 Prompt 也称为:

Soft Prompt \boxed{\text{Soft Prompt}} Soft Prompt


4. Prompt Learning 的训练原理

假设已经有一个预训练好的大模型:

fθ f_{\theta} fθ

其中:

θ \theta θ

表示 LLM 原来的参数。

通常在 Prompt Learning 中:

θ 冻结 \boxed{\theta\ \text{冻结}} θ 冻结

也就是说:

大模型主体参数基本不更新。

然后在输入前增加一组可以学习的 Prompt:

P=p1,p2,...,pm P=p_1,p_2,\\dots,p_m P=p1,p2,...,pm

输入变成:

P;X\] \[P;X\] \[P;X

送入 LLM:

y^=fθ(P;X) \hat{y}=f_{\theta}(P;X) y^=fθ(P;X)

其中:

  • XXX:原始任务输入
  • PPP:可训练 Prompt
  • y^\hat{y}y^:模型预测结果

然后将预测结果与真实标签 yyy 比较:

L=Loss(y^,y) L=\text{Loss}(\hat{y},y) L=Loss(y^,y)

通过反向传播更新 Prompt:

P←P−η∂L∂P P \leftarrow P-\eta\frac{\partial L}{\partial P} P←P−η∂P∂L

其中:

  • η\etaη:学习率
  • PPP:需要学习的 Prompt 参数

因此,训练过程中主要更新的是:

P \boxed{P} P

而不是整个 LLM。


5. 一个简单例子

假设任务是:

根据 RTT、带宽和丢包率判断当前网络是否拥塞。

原始网络状态:

text 复制代码
RTT = 120 ms
Bandwidth = 20 Mbps
Packet Loss = 5%

经过编码后,可以得到:

X=x1,x2,x3 X=x_1,x_2,x_3 X=x1,x2,x3

然后增加 4 个可训练 Prompt:

P=p1,p2,p3,p4 P=p_1,p_2,p_3,p_4 P=p1,p2,p3,p4

最终输入:

p1,p2,p3,p4,x1,x2,x3\] \[p_1,p_2,p_3,p_4,x_1,x_2,x_3\] \[p1,p2,p3,p4,x1,x2,x3

送入 LLM:

P;X→LLM→y^ P;X \rightarrow LLM \rightarrow \hat{y} P;X→LLM→y^

假设真实答案是:

text 复制代码
Congestion

但模型预测:

text 复制代码
No Congestion

那么计算预测误差:

L=Loss(y^,y) L=\text{Loss}(\hat{y},y) L=Loss(y^,y)

然后反向传播:

text 复制代码
p1 更新
p2 更新
p3 更新
p4 更新

经过大量样本训练之后:

p1,p2,p3,p4 p_1,p_2,p_3,p_4 p1,p2,p3,p4

会逐渐学习到:

应该怎样提示 LLM,才能让它更好地完成网络拥塞判断任务。


6. 为什么 Prompt Learning 能起作用

预训练 LLM 已经学习了大量知识、模式和关系。

Prompt Learning 并不是重新训练一个模型,而是在学习:

如何把大模型原本具有的能力更好地激活出来。

可以把大模型想象成一个已经掌握很多知识的人。

Prompt Learning 不是重新教他知识,而是在学习:

"应该怎么问,他才能更准确地给出答案。"

因此:

Prompt Learning≈学习如何引导预训练模型 \boxed{ \text{Prompt Learning} \approx \text{学习如何引导预训练模型} } Prompt Learning≈学习如何引导预训练模型


7. Prompt Engineering 和 Prompt Learning 的区别

Prompt Engineering

Prompt 由人工设计。

例如:

text 复制代码
Please predict network congestion according to the following network state.

如果效果不好,需要人工不断修改:

text 复制代码
Prompt V1
Prompt V2
Prompt V3
...

因此:

Prompt由人设计 \boxed{\text{Prompt由人设计}} Prompt由人设计


Prompt Learning

Prompt 不完全由人工决定,而是通过训练数据自动学习。

即:

P=p1,p2,...,pm P=p_1,p_2,\\dots,p_m P=p1,p2,...,pm

通过:

Loss→Backpropagation→Prompt更新 Loss \rightarrow Backpropagation \rightarrow Prompt更新 Loss→Backpropagation→Prompt更新

最终得到适合当前任务的 Prompt。

因此:

Prompt由数据驱动自动学习 \boxed{\text{Prompt由数据驱动自动学习}} Prompt由数据驱动自动学习


8. Prompt Learning、LoRA 和 SFT 的区别

方法 主要训练内容 LLM 原始参数
Prompt Learning Prompt Embedding 通常冻结
LoRA 低秩矩阵 A,BA,BA,B 原参数冻结
Full SFT LLM 大量或全部参数 更新
LoRA + SFT LoRA 参数 主体参数冻结

可以进一步理解为:

Prompt Learning

主要在输入端进行适配:

Trainable Prompt→LLM \boxed{ \text{Trainable Prompt} \rightarrow LLM } Trainable Prompt→LLM


LoRA

主要在模型内部进行适配:

W′=W+BA \boxed{ W'=W+BA } W′=W+BA

其中:

  • WWW:原始预训练权重
  • A,BA,BA,B:可训练低秩矩阵

9. Prompt Learning 的完整流程

text 复制代码
任务输入 X
    │
    │
    ├─────────────┐
    │             │
可训练 Prompt P   │
    │             │
    └──────┬──────┘
           ↓
        [P ; X]
           ↓
      Frozen LLM
           ↓
        预测结果 ŷ
           ↓
      与真实标签 y 比较
           ↓
          Loss
           ↓
      Backpropagation
           ↓
     更新 Prompt P

对应数学表达:

P;X→fθ→y^ P;X \rightarrow f_{\theta} \rightarrow \hat{y} P;X→fθ→y^

计算:

L=Loss(y^,y) L=\text{Loss}(\hat{y},y) L=Loss(y^,y)

然后:

P←P−η∂L∂P P \leftarrow P-\eta\frac{\partial L}{\partial P} P←P−η∂P∂L

而:

θ \theta θ

通常保持冻结。


10. 常见的 Prompt Learning 方法

Prompt Tuning

直接在输入 Embedding 前增加一组可学习 Prompt Token:

p1,p2,...,pm,X\] \[p_1,p_2,\\dots,p_m,X\] \[p1,p2,...,pm,X

特点:

主要只训练输入层的 Soft Prompt。


Prefix Tuning

不仅在输入层添加 Prompt,还会在 Transformer 的多层 Attention 中加入可训练 Prefix。

可以简单理解为:

text 复制代码
Input
  ↓
Transformer Layer 1 ← Prefix
  ↓
Transformer Layer 2 ← Prefix
  ↓
Transformer Layer 3 ← Prefix
  ↓
Output

因此它对模型内部多层计算都有影响。


P-Tuning

P-Tuning 同样学习连续 Prompt,但通常会增加一个 Prompt Encoder 来生成 Prompt Embedding。

基本思想仍然是:

通过少量 Prompt 参数,引导冻结的大模型适应下游任务。


11. Prompt Learning 在网络任务中的应用

假设网络输入包括:

RTT, Bandwidth, Loss, Queue RTT,\ Bandwidth,\ Loss,\ Queue RTT, Bandwidth, Loss, Queue

一种最简单的做法是先文本化:

text 复制代码
RTT is 120 ms.
Bandwidth is 20 Mbps.
Packet loss is 5%.
Queue length is 30.

Please predict the optimal network action.

然后:

text 复制代码
Network Data
    ↓
Text Prompt
    ↓
Tokenizer
    ↓
Token Embedding
    ↓
LLM
    ↓
Network Decision

如果加入 Soft Prompt,则可以表示成:

P1,P2,...,Pm;Network Input→LLM P_1,P_2,\\dots,P_m;\\text{Network Input} \rightarrow LLM P1,P2,...,Pm;Network Input→LLM

训练过程中:

Loss→更新 P1,P2,...,Pm Loss \rightarrow \text{更新 }P_1,P_2,\dots,P_m Loss→更新 P1,P2,...,Pm


12. Prompt Learning 在网络任务中的局限性

对于网络任务,输入往往不是普通文本,而可能包括:

  • 时间序列
  • 网络拓扑图
  • DAG
  • 图像
  • 连续数值状态
  • 链路状态
  • 流量状态

如果将这些数据全部转换成文本:

text 复制代码
RTT = ...
Bandwidth = ...
Loss = ...
Node 1 connects Node 2 ...
Node 2 connects Node 5 ...
...

可能出现两个问题。

问题 1:结构信息表达不充分

例如网络拓扑本身具有复杂的节点和边关系。

如果完全转成文字:

Graph→Text \text{Graph} \rightarrow \text{Text} Graph→Text

可能无法很好地保留原来的拓扑关系。


问题 2:输入 Prompt 过长

网络规模扩大之后,大量状态全部文本化可能导致:

Network Size↑⇒Prompt Length↑ \text{Network Size}\uparrow \Rightarrow \text{Prompt Length}\uparrow Network Size↑⇒Prompt Length↑

最终受到 LLM Context Length 的限制。

因此,一些网络 LLM 方法会采用:

Raw Network Data→专用 Encoder→Token-like Embedding→LLM \text{Raw Network Data} \rightarrow \text{专用 Encoder} \rightarrow \text{Token-like Embedding} \rightarrow LLM Raw Network Data→专用 Encoder→Token-like Embedding→LLM

而不是把所有网络数据都强制转换成文本 Prompt。


13. 最核心的一句话

Prompt Learning 的本质,是在冻结或基本冻结预训练大模型的情况下,通过训练少量连续 Prompt Embedding,学习最适合当前任务的提示方式,从而引导和激活大模型已有的知识与能力。

可以浓缩成:

可训练 Prompt+任务输入→冻结 LLM→预测→Loss→更新 Prompt \boxed{ \text{可训练 Prompt} + \text{任务输入} \rightarrow \text{冻结 LLM} \rightarrow \text{预测} \rightarrow Loss \rightarrow \text{更新 Prompt} } 可训练 Prompt+任务输入→冻结 LLM→预测→Loss→更新 Prompt

相关推荐
小鹿的周先生2 小时前
Spring AI Chat模型入门——理解 ChatModel、ChatClient、Prompt 和 ChatResponse
人工智能·spring·ai·prompt
木卫四科技2 天前
AgentAntibody:Prompt 注入防御开始“长记忆”,LLM Agent 如何构建自进化免疫系统?
人工智能·prompt·智能体安全
Patrick在香港2 天前
Claude Prompt Caching 实测账单:第一轮贵 25%,从第二轮开始省 86%
python·prompt·claude·成本优化·prompt缓存·anthropic api
智嵌研习社2 天前
从 Prompt 到工程化技能包:AI Skills 标准与 Continue 落地
人工智能·prompt·skill
会编程的土豆2 天前
从零理解 AI Agent:概念、ReAct、Prompt 五要素与面试要点
人工智能·react.js·prompt
coft3 天前
Pi Agent 的 Token 成本控制:为什么核心是 Prompt Cache 前缀稳定性
prompt·ai编程·ai agent·pi agent
ShineWinsu4 天前
人工智能基础概念全景解析:从 AI 到 Transformer、LLM、Prompt、Token、RAG、Agent、对齐与安全
人工智能·prompt·transformer
大模型码小白4 天前
AI 提示词专栏:使用系统指令(System Prompt)实现全局约束
java·大数据·运维·开发语言·人工智能·python·prompt
仓三4 天前
从 Prompt Engineering 到 Context Engineering:2026 年 Agent 性能提升的隐藏杠杆
java·prompt·context