生成式AI与大语言模型

上下文学习(in-context learning)

/ in-KON-tekst LER-ning /

上下文学习,是大模型一项令人惊讶的本领:仅凭提示里给出的几个例子,就能拿捏一项新任务——无需任何训练,也不改动它内部任何一个数字。你给它看三个把俚语翻成正式英语的例子,到第四个,它就照做了。看上去模型在那几秒里学到了点什么,可它内部其实什么都没变;它是从眼前摆着的例子里推断出了模式,然后顺着续了下去。

这套机理,最好理解为一种极其灵活的「模式补全」。在预训练时,模型见过无数「先有例子、随后跟着更多同类」的段落,所以当你摆出「输入、输出、输入、输出、输入——」时,把这个模式补完,恰恰正是它早已练得炉火纯青的那种续写。「零样本」是指只给指令;「少样本」是指先给上几个做好的例子。正是这一点,让一个冻结不动的模型,仅凭改变你喂给它的措辞,就能应付成千上万种不同任务。

两点要诚实说。其一,因为什么都没存下,提示一结束,那点「学习」便烟消云散——下一段对话又是一张白纸。其二,上下文学习真实存在,却很脆弱:它对例子的顺序、格式,乃至微小的措辞改动都很敏感,还可能抓住一个表面的模式、而非你想要的那个。它是一种美妙的便利,却不能在你需要可靠性时,替代真正的训练。

你在提示里写:「开心 -> 😊,难过 -> 😢,生气 -> 😠,困 ->」。模型回答「😴」。你给的例子里从没出现过「困」;它从你给的三个例子里推断出了规则(情绪对应表情),并当场套用。

从提示里的例子中「学习」——而权重纹丝不动。

尽管名字里有「学习」,上下文学习并不改变模型内部的任何东西。它是一种临时的模式推断,只活在当前的提示里;关掉对话,它便荡然无存。别把它和「微调」混为一谈——后者会永久地更新模型的权重。

又称
few-shot promptingin-context learning上下文学习上下文學習情境学习