一、同一个神龛,百样不同的答

长安城西有一座问心斋,说是道观,其实就一间小殿,供着一尊不问世事的神。

神龛前有一口铜铃。你问一个问题,摇三下铃,神龛底下会滑出一张纸来——上面写着回答。

但这尊神有个怪脾气:同一个问题,不同的人问,答出来的东西天差地别。

去年有人问:"我该不该去江南做生意?"

一位老商人去问,回答是:"江南水路通达,货如轮转,三年可致千金。但须防梅雨损货,端午前出手为上。"

一个年轻的衙役也去问了同样的问题——一字不改。回答是:"江南?江南的雨多,鱼多,姑娘好看。别的我不知道。"

老商人的儿子不信,换了件旧衣裳,改了个行礼的路数,混进去又问了一遍。这次回答是:"做生意哪有不冒风险的?江南做布匹的第一年亏本,第二年回本,第三年才赚钱——你熬得住三年吗?"

同一个人,同一尊神,同一个问题。三个回答,三种味道。

消息传开,问心斋的门槛快被踩烂了。全长安城的人都想知道:这尊神的脑子到底是怎么转的?

二、改的不是神,是前面铺的路

问心斋有个管事的,姓柳,人称柳解语。

她不是道士,也不是尼姑。干的事说出来都不像一门行当——她叫"解语人"。别家去问神,进门就摇铃。她家不一样——进门先坐下,喝一盏茶,柳解语会跟你聊几句。

也不是闲聊。她问的每句话都有用意。

老商人来的时候,柳解语一边倒茶一边说:"张老爷从洛阳来——洛阳到江南的漕运,张老爷走了一辈子了吧?去年那趟布匹生意,赚了多少?——啧,当我没问。不过实话,做布匹生意的到新地方,头年亏、次年平、三年翻倍是常理。您老这一趟,心里该有底。"

她说完起身,让老商人自己去摇铃。

年轻衙役来的时候,她说的是另一番话:"小哥是本地人吧?这双靴子是六部门口那家铺子买的——衙门里的人,见识多。江南么,跟长安不一样,姑娘会弹琵琶,街上到处都是鱼汤和桂花糕。"

衙役听完,乐呵呵地去摇铃了。

老商人的儿子——那位换了旧衣裳来的年轻人——柳解语从帘子后面瞟了一眼,就认出他来了。但她不拆穿。她只倒了一杯茶,递过去。

"年轻人,做生意不是赌。你问我该不该去——我倒是想先问你:你手上有多少本钱?三年不出利润,扛得住吗?扛得住就上船;扛不住,就先在码头上帮人搬货,边搬边看。"

三套开场白。一套给了老行家,一套给了门外汉,一套给了试探者。

铃还是那口铃,神龛还是那尊神龛——但每个人的起点不同。

三、三枚铜钱和一盘棋

长安城里有个不服气的人。太史局的司历,姓霍,是朝廷最顶尖的数算高手。他认定问心斋是骗人的。

这天他来了。一进门就把一张纸拍在桌上。

"我从不信鬼神。你今天让我信你,只有一条路——我问你三道天文推步题。有一个错了,你这神龛就是假的。"

三道题,一道比一道难。第一道是算日食的时间,第二道是算五星会合的周期,第三道——霍司历自己花了二十年才算明白的问题:太初历和授时历之间差了七天半,日食的预报到底用哪个为准。

柳解语看了一眼那三道题,没让霍司历去摇铃。

她从袖子里掏出三枚铜钱。

"霍大人,你这三道难题,我从头到尾没听懂。但我可以告诉你,怎么让它给出你要的答案。"

她把第一枚铜钱放在桌上。

"第一,给它一道跟你问的那些差不多的题——但要简单得多,而且附上正确的解答。比如——算今年秋分是哪一天,答案是九月二十三——你把题目和答案一起写在纸上,先递进去。"

她把第二枚铜钱叠上去。

"第二,再给它一道——稍微难一点,但你也把答案写好。比如——明年春分是哪一天?答案写三月二十一。"

第三枚铜钱叠在最上面。

"然后你再问它你真正想问的那道。它看了前两道题的格式、推理步骤、答案的写法——它就知道你要什么样的回答了。"

霍司历半信半疑,照着做了。第一题:秋分,附了推算步骤和答案。第二题:五星会合,附了推算步骤和答案。第三题——太初历和授时历差了七天半。

他摇了铃。

纸张滑出。上面不是一句话——是一页纸。分了三段:第一段列出太初历的日食算法,第二段列出授时历的日食算法,第三段比较两套算法在差值的处理方式,得出结论——两者以不同方式核算了岁差,七天半的差值是合理的,日食预报以授时历修正后的计算结果为准。

霍司历看完了,手在发抖。不是因为这个答案吓人——是因为它用的是他给的前两道题里一模一样的格式:列出已知条件、分条推算、最后给出结论。

"它对太初历和授时历一无所知,"柳解语在一旁说,"它只是看了前两道题的样子——把第三道题也装进同一个格式里去解。你的格式就是它的地图。"

霍司历把三枚铜钱从桌上拣起来,翻来覆去地看了很久。

"所以不是神在解题——是我给它的那两道样题,教会了它怎么解题?"

柳解语把茶壶放回炉子上。

"神没有变。神一直是那个神。你变了——你学会了怎么在前面铺路,让它沿着路走过去。"

四、什么都能答——也什么都可能不会

霍司历临走前,在门口站住了。

"柳姑娘,你这个神——它到底会多少东西?"

"你的前两枚铜钱里放了什么,它就会什么。"

"那我如果前两枚铜钱里放的东西是错的呢?"

"那它第三道题的答案也是错的。"

霍司历沉默了。

"所以它不是真正'会'——它是在模仿格式,而不是在理解内容。对吗?"

柳解语没有正面回答。她拿起了桌上那三枚铜钱,在手心排开。

"你给它的前两道题,有一个关键东西是不能缺的——答案。光给格式,光给问题,不给答案——没用。它必须看到'什么问题是怎样解出来的'——从问题到答案那根线,必须由你自己画给它看。"

"三枚铜钱。两枚是你画给它的路。最后一枚——才是你自己要走的那一步。"

霍司历把那三枚铜钱放回桌上。"如果一个人来,一枚铜钱也不放——直接问呢?"

"那它就用自己的话说了。会的东西,答得不错。不会的东西——它也会答。只不过答的都是它觉着'像'的——像,未必是。"

那天晚上霍司历回到太史局,在日记录上写了四句话:

问心斋之神龛,遇弱题可自解,遇强题需前导。
前导之妙,不在炫技——而在格式。格式对,路自通。

第二天,柳解语在斋门口看到了一个包裹,里面是他送来的一方歙砚。附带便笺六个字:"以例教之,神亦学之。"

技术解读

上下文学习(In-Context Learning, ICL)是 GPT-3(Brown et al., 2020)令学界震惊的核心发现,也是大语言模型区别于先前所有 NLP 模型的决定性能力之一。

传统的机器学习范式是:训练 → 部署 → 固定——模型的能力在训练结束后就锁定了。ICL 颠覆了这个范式:你不需要更新模型权重——只需在 prompt 中提供几个示例,模型就能"当场学会"一个新任务的格式、风格和推理模式。它不是在训练时学会的,而是在推理时,通过注意力机制在上下文窗口内当场完成的。

这种能力不是被显式训练的——它是在足够大的模型和足够多的数据上,从"预测下一个 token"这个唯一目标中涌现出来的。

核心概念回顾

概念 通俗解释
上下文学习(In-Context Learning) 在 prompt 中给模型几个示例,不用更新任何参数,模型就能学会做类似任务
零样本(Zero-Shot) 直接告诉模型"做任务 X",不给示例。模型靠预训练中见过的类似指令来推断
少样本(Few-Shot) 在 prompt 中给出 k 个(输入,输出)示例(通常 k=1~8),然后问新的输入
示例格式(Demonstration Format) 示例的结构——包括输入与输出的分隔、推理步骤的呈现方式等——直接影响 ICL 效果
提示模板(Prompt Template) 将任务重新组织为文本续写的固定格式(如"Q: ... A: ..."),可以稳定提升效果
任务规范(Task Specification) 在示例之外,额外用自然语言描述当前任务是什么(如"请按以下格式回答")
涌现(Emergence) ICL 是规模涌现的典型能力:小模型几乎没有 ICL,模型超过一定参数规模后突然出现
注意力即学习(Attention as Learning) 一种理论解释:Transformer 的前向传播过程中,注意力机制隐式地在上下文内执行了某种"梯度下降"式的学习
指令微调(Instruction Tuning) 在(指令,回答)对上做 SFT,使模型学会跟随自然语言指令——与 ICL 互补
ICL 的不稳定性 示例顺序、数量、格式、标签平衡等的微小变化可能导致显著的性能波动——"I C L 不是在学任务,是在学格式"

故事中的隐喻对照

故事元素 映射的技术概念 解释
问心斋的神龛(铜铃、纸张) 大语言模型(如 GPT-3) 一个预训练完成的基座模型——能力已固定,但如何发挥取决于外部的输入
柳解语("解语人") 提示工程师(Prompt Engineer) 在模型与用户之间做"翻译"——用示例和格式引导模型输出更符合需求的结果
给老商人 vs 年轻衙役的不同开场白 提示差异导致输出差异 同一个模型面对不同的 pre-prompt 上下文,行为完全不同——上下文决定了模型"进入什么模式"
三枚铜钱("两枚是给它的路,第三枚是你自己走") Few-Shot 示例(k=2) 给出两个完整(问题,步骤,答案)的示例,然后抛出真正想问的问题
前两道题附推算步骤和答案 示例中的推理链 ICL 的黄金实践:示例不光给答案,还展示"怎么得到这个答案"的过程
第三道题的答案用了前两道的格式 格式/模式模仿 模型从示例中学到的核心是输出格式和思维模式——它照着这个"模板"填充新问题的内容
不同人问同一个问题得出不同答案 上下文决定输出 模型的输出不是模型参数的确定性产物——它是参数 + 输入的联合函数,输入的微小变化可以引发截然不同的输出流
"前两枚铜钱放错了,第三道也错" ICL 对示例质量敏感 如果示例本身有错误或偏差,模型会忠实地模仿这种偏差——ICL 没有"纠错"机制
"一枚铜钱也不放"——不会的也硬答 Zero-shot 的局限 没有示例引导时,模型在复杂任务上可能生成"看起来像"但实际不正确的回答
"以例教之,神亦学之" ICL 的本质——示例即是教学 不需要反向传播、不需要梯度、不需要权重更新——几个示例就足以教会模型一个新任务

为什么这个故事对应上下文学习(ICL)?

  1. ICL 颠覆了"学习=更新参数"的传统认知。 在传统 ML 中,教会模型一个新任务需要重新训练或微调。ICL 发现——你只需在 prompt 里塞几个例子,模型的输出格式和推理模式就变了。就像柳解语说的:"神没有变。你变了——你学会了怎么在前面铺路。"

  2. "以例教之"是 ICL 的核心机制。 模型从示例中提取的是一种"模板"——不是学到了新知识,而是学到了"在这个上下文中,输出的格式应该是什么样的"。霍司历的三道题,前两道附了推算步骤的示例,第三道的答案自动套用了同样的分条论证格式——这正是 ICL 的典型表现。

  3. ICL 是涌现能力的标志性案例。 GPT-1 和 GPT-2 几乎没有 ICL。GPT-3(175B)在 zero-shot/one-shot/few-shot 上表现出强烈跃升——模型从"勉强能续写"到"看两个例子就会做新任务"。这是缩放定律催生的涌现。

  4. 提示工程(Prompt Engineering)是一门前沿手艺。 同一个模型,同一种任务——换一套示例的格式、顺序、措辞,效果天差地别。柳解语对不同的人说不同的开场白,以不同的方式铺路——这是提示工程的核心素养。

  5. ICL 的本质限制是"不在上下文里的,就是空白"。 如果你不给示例,模型的表现就依赖于预训练中见过多少类似的东西。如果给的是错误示例——模型忠实地仿效错误。模型没有"对示例进行纠错"的机制——它只能模仿,无法质疑。

后记:在 ICL 被发现之前,"教会一个模型做新任务"听起来像是一种需要重新训练、重新部署的重型操作。ICL 给了一个轻得令人难以置信的答案——你只需要在 prompt 前面加上几个示例,模型看着看着,自己就知道怎么做了。问心斋的神龛前,来者千千万——每一个人,神都给出一个量身打造的答案。可神龛里的神,从未变过。变的是你走近它的方式、你为它铺的路、你递进窗口的前两枚铜钱。教与学的边界,在上下文中消融——教即是学,看即是会。