上下文学习(In-Context Learning)是当前大语言模型最令人着迷的能力之一。它不需要任何参数更新,仅通过提供几个示例或指令,就能让模型快速适应新任务。这种能力打破了传统机器学习"训练-推理"的严格界限,使得模型在推理阶段也能进行"学习"。
我在实际使用GPT-4和Claude等模型时发现,同样的模型通过精心设计的上下文示例,其表现可以提升30%以上。比如在信息抽取任务中,通过提供3-5个标注样本,模型就能准确识别出目标字段,准确率甚至超过专门训练的NER模型。
大模型通过自注意力机制,在推理时动态调整不同token的重要性权重。当遇到few-shot示例时,模型会:
实测表明,12层以上的Transformer模型就能展现出明显的上下文学习能力,层数越多,捕捉长距离依赖的能力越强。
研究表明,大模型在上下文学习时,其内部表征的变化类似于进行了几步梯度下降。模型会:
当模型参数量超过100亿时,会突然展现出强大的元学习能力。这意味着模型已经:
通过提供3-5个标注样本,模型就能完成文本分类。关键技巧包括:
示例模板:
code复制文本:这家餐厅服务很糟糕
情感:负面
文本:产品超出预期
情感:正面
文本:快递速度一般
情感:?
从非结构化文本中提取字段信息:
code复制文章:苹果公司于2023年9月发布iPhone15
提取:{"公司":"苹果","产品":"iPhone15","时间":"2023年9月"}
文章:特斯拉计划在墨西哥建厂
提取:?
提供函数签名和示例,模型能生成匹配的代码:
python复制# 功能:计算列表中正数的平均值
# 示例:
# 输入:[1, -2, 3]
# 输出:2.0
def average_positive(numbers):
?
通过对话历史维持上下文:
code复制用户:推荐一部科幻电影
AI:推荐《星际穿越》
用户:不要太烧脑的
AI:那可以看《火星救援》
少量示例就能实现小众语言翻译:
code复制英语:Hello 法语:Bonjour
英语:Goodbye 法语:Au revoir
英语:Thank you 法语:?
通过分步推理提升复杂任务表现:
code复制问题:小明有5个苹果,吃了2个,妈妈又买了4个,现在有几个?
思考:5-2=3,3+4=7
答案:7
对重要输出:
根据模型响应:
主流模型的上下文窗口在4k-32k tokens之间。应对策略:
模型表现可能因示例顺序、表述方式而变化。解决方法:
模型可能生成看似合理但错误的回答。缓解措施:
上下文学习是临时的,不会持久化。解决方案:
| 维度 | 上下文学习 | 微调 |
|---|---|---|
| 数据量 | 少量示例 | 大量数据 |
| 成本 | 低 | 中高 |
| 速度 | 即时 | 需要训练时间 |
| 灵活性 | 高 | 低 |
| 稳定性 | 中 | 高 |
在实际项目中,我通常采用:
从简单到复杂的优化路线:
当前研究热点集中在:
我在实际应用中发现,随着模型规模的增大,上下文学习的能力还在持续增强。一个有趣的发现是,对于某些任务,提供错误的示例反而能让模型"反向学习"到正确模式,这种抗干扰能力令人惊讶。