先这样答
上下文学习的本质是将传统的学习过程变成了条件生成过程。大模型在执行上下文学习时完全不更新参数。我们把任务说明和示例信息直接放在上下文里。大模型读取这些输入。它按已有的规律进行模式匹配。它接着通过组合泛化能力完成特定任务。这种机制使得模型不需要重新训练就能处理新问题。
它和参数更新的本质区别在于知识的存储位置与生命周期。参数更新是把知识直接写进神经网络的权重里。这种修改是永久的。它在实际使用时不占用上下文窗口。参数更新的缺点是计算成本高。模型在更新权重时还会发生知识遗忘。上下文学习则是把知识存在临时的提示词里。它不改变底层权重。它会占用有限的上下文长度。
我们在工程实践中需要对这两种方式进行取舍。我们处理频繁变化的知识时,应该使用上下文学习或者RAG技术。这能避免反复训练模型。我们需要模型掌握稳定的行为时,应该使用微调进行参数更新。这能固化模型的输出格式并节省推理时的上下文开销。
面试官会怎么追问
-
「你提到模式匹配,模型具体是怎么在上下文里做模式匹配的?」 模型读取上下文里的输入输出对。它识别出提示词中的规律。它把这种规律应用到新的输入上生成结果。这个过程依赖预训练阶段积累的组合泛化能力。
-
「如果一个任务既需要新知识,又需要特定输出格式,你怎么结合这两种方法?」 我们先用微调更新模型参数。这让模型学会稳定的输出行为。我们在推理时再通过上下文学习或RAG引入频繁变化的知识。这样既节省了格式说明的上下文空间,又解决了参数更新容易遗忘的问题。
-
「既然参数更新不占上下文,为什么不把所有知识都写进权重里?」 参数更新的计算成本太高。模型把知识写进权重后很容易发生遗忘。现实中的很多知识是频繁变化的。把频繁变化的知识全部写进权重在工程上无法实现。
回答的坑
混淆上下文学习和微调的底层机制,错误地认为上下文学习在推理阶段修改了模型权重。
没有结合业务场景谈工程
同系列的题