LLM解释不再逐题写:一段可执行程序复现模型输出,比思维链短6到100倍
核心概要
研究者把大模型的解释从逐条自由文本改成一段可执行程序:程序在数据集上运行,与模型输出比对,用一致性衡量解释是否复现模型行为。在三个开源代码模型和八个任务上,24个模型-任务设置中有6个一致性超过0.75,代码解释比思维链短6到100倍,并在24个设置中的9个更贴合模型行为;但语言成分更复杂的任务上,一致性并不高于无信息基线。
深度剖析
解释大模型行为的方式从逐条生成自由文本,改为生成一段能在整个数据集上运行的程序,程序输出与模型输出的一致程度可以自动计算。 此前的思维链和事后理由都绑定在单个输入上,要判断解释是否准确,必须另行指定输入扰动或输入分布,而解释方法本身并不提供这些。 在三个开源代码模型和八个BBH任务上,24个模型-任务设置中有6个的一致性超过0.75,说明高一致性在部分设置中可以达到,但并非普遍结果。
做法是让模型看若干输入-输出示例,写一个Python函数来复现自己的输出,再采样多个候选程序,按训练集上的一致性挑选。 一致性定义为程序在数据集上产出与模型相同输出的比例,并另设一个相对“总是回答最常见答案”的无信息基线的归一化版本,使不同输出空间的设置可以横向比较。 选中的程序在留出的测试集上评估,结果按三个随机种子平均;与逐条思维链相比,代码解释在全部任务上短6到100倍,并在24个设置中的9个取得更高的充分性。
启示与展望
评估限定在Python代码解释和固定的生成超参数上,任务取自BBH的八个任务,模型为Gemma3-27B、Qwen2.5-Coder-32B、Llama3.1-70B以及Claude Opus 5.5;一致性衡量的是行为层面的复现,并不判定程序是否忠实描述模型内部计算。
复杂语言任务上,生成程序复现模型输出的频率不高于无信息基线,且更依赖较长的硬编码语言模式;多轮细化与给Claude Opus 5.5配备代码执行和一致性反馈能提升一致性,但复杂任务上仍显著偏低。低一致性有两种可能解释:模型写不出准确刻画自身行为的代码,或某些语言行为本身难以用紧凑、人类可读的程序表示,二者尚未区分。
