深度学习入门

提示与上下文学习

14 分钟

大模型带来一个前所未有的现象:不改一个参数,只靠输入的文字,就能改变模型的行为。


上下文学习(In-Context Learning)

在提示里给几个例子,模型就能照着做:

中文:你好 → 英文:Hello
中文:谢谢 → 英文:Thank you
中文:再见 → 英文:

模型会输出 Goodbye。

它的权重完全没有更新——「学习」发生在这一次前向传播的内部。

叫法 给几个例子
零样本(zero-shot) 0 个,只给指令
单样本(one-shot) 1 个
少样本(few-shot) 通常 2–8 个

这为什么重要:它把「定制一个模型」的成本,从「准备数据 + 训练 + 部署」降到了「写一段文字」。


思维链:让模型把步骤写出来

对需要多步推理的问题,要求模型先写推理过程再给答案,准确率会显著提升。

❌ 问:小明有 5 个苹果,给了小红 2 个,又买了 3 个,现在有几个?
   答:6

✅ 问:……请一步步思考。
   答:小明开始有 5 个。给了小红 2 个,剩下 5 - 2 = 3 个。
       又买了 3 个,所以是 3 + 3 = 6 个。答案是 6。

为什么有效:模型每生成一个 token 的计算量是固定的。直接输出答案,等于要求它在一步之内完成所有推理;写出中间步骤,相当于给了它更多计算步骤,而且每一步都能利用前面已经写出的中间结果。

一个直观的说法:思维链把「心算」变成了「草稿纸」。


几个实用的提示技巧

技巧 做法
给角色 「你是一位资深审稿人……」
给格式 「用 JSON 输出,字段为……」
给示例 一个示范胜过十句描述
拆步骤 把复杂任务拆成几次调用
要求自检 「检查上面的答案是否有逻辑漏洞」
限定不做什么 「只指出问题,先不要给修改版」

注意最后一条:在学习场景里,限制模型「不要直接给答案」比让它给答案更有价值——这一点在 AI 素养课里详细讲过。


RAG:给模型一个可查的资料库

提示工程解决不了两个根本问题:模型不知道最新信息,以及会编造事实

检索增强生成(RAG) 的思路:

① 把资料库切成小块,用嵌入模型转成向量存起来
② 用户提问时,把问题也转成向量,检索出最相关的几块
③ 把这几块内容塞进提示,让模型基于它们回答

三个关键好处

  1. 知识可更新——改资料库即可,不用重新训练
  2. 可溯源——能指出答案来自哪一段,大幅降低幻觉
  3. 便宜——比微调成本低几个数量级

这也是 BERT 类模型今天的主要战场——第 4 节提到的文本嵌入,正是 RAG 检索环节的基础。


上下文窗口:一个真实的约束

提示不是越长越好:

约束 说明
长度上限 超出窗口的内容直接被截断
成本 费用和延迟大致随输入长度增长
注意力稀释 上下文过长时,中间部分的信息容易被忽略

第三条最反直觉:研究观察到模型对提示的开头和结尾更敏感,中间的内容容易被「读漏」。

实践建议:把最重要的指令放在开头或结尾,不要埋在中间。

练习:用思维链的方式,写一个提示让模型解一道两步应用题,并要求它最后自检一遍。

小纸条

思维链为什么能提升推理准确率?RAG 相比微调有哪三个好处?

登录 后可看答案