Skip to content
🔗 分享本题
查看我的学习进度 →

什么是少样本学习?

In-Context Learning (ICL) 在不修改模型权重的情况下,通过在 prompt 中提供少量示例( demonstrations),让模型学会一个新任务。

python
prompt = """给定电影评论的情感:
这部电影真棒! → 正面
我觉得一般般 → 中性
烂透了,浪费时间 → 负面

这部片子的剧情太精彩了 → """
# 期望输出:正面

Few-shot vs Zero-shot vs Fine-tuning

维度Zero-shotFew-shot (n=3~20)Fine-tuning
效果基线+5~20%+15~40%
成本最低低(多些tokens)高(训练时间+显存)
灵活性最高低(需重新训练)
速度最快快(多输入tokens)慢(需训练+部署)

黄金实践法则

  1. 示例质量 > 数量:3个高质量示例胜过20个敷衍示例。确保示例准确覆盖边界情况
  2. 保持一致的格式:示例的输出格式应与目标任务的期望输出一致(如JSON、固定模板)
  3. 排序策略:随机打乱顺序优于按某种规律排列,避免模型学到排序偏差
  4. 正负样本均衡:分类任务中正负示例尽量1:1
  5. 位置敏感:最近的位置效应明显——把最重要的示例放最后

何时用ICL?何时微调?

选择ICL的条件选择微调的条件
快速验证想法/原型需要稳定可靠的生产级表现
任务变化频繁(每天换)任务稳定、数据量大
没有标注数据有大量高质量标注数据
Token预算充足延迟/成本敏感
多语言/多领域混合单一垂直领域深耕

面试话术

"我的原则是:能用ICL解决的就不微调,因为迭代成本低得多。具体做法是精心挑选3-5个代表性的正向例子放在prompt最后,确保输出格式严格对齐。但当任务对一致性要求很高(比如金融风控),或者需要长期稳定的表现时,我会用LoRA做轻量微调——两者结合才是生产环境的最优解。"