今天翻 arXiv 十月底那批 cs.CL 的稿子,翻到一篇 From Lookups to Lessons: Turning Retrieved Knowledge into Parametric Memory,Han 和几位合作者做的,16 页、4 幅图、6 张表,两周前挂出来(2611.00450)。标题起得讨巧,内容说白了就一件事:把检索到的东西离线蒸进参数里,下次不用再查。RAG 那套在线开销,真在生产里跑过的人都清楚,难点不只是在查一次多花几毫秒,还在于那堆 token 表示得存、得索引、得跟着数据更新一起养。
这篇我不打算从摘要讲到结论——整篇里我只想拎一个点出来:这类工作真正该盯着的指标是哪个。
先把它的做法拆开看看。ResMem 的骨架是「离线教师 + 冻结骨干 + 一小块参数化记忆」:大语言模型当教师,同时读输入和当时可用的检索证据,产出一个教师目标分布;参数化记忆学的不是全套表示,而是一个可加的逻辑值(logit)残差,加在共享骨干的输出上;学生和教师共用同一套骨干,自蒸馏的更新只落到记忆那一小块,骨干全程冻着。我按论文的描述画一张示意,不是原文图:
input x ──┬─→ [frozen backbone] ──→ logits ──(+)──→ student p
│ ↑
│ [parametric memory]
│ ↑
└─→ (offline teacher: LLM + retrieved evidence) ──→ teacher q
关键就在那行「更新只作用于参数化记忆」上。骨干冻着,意味着这套东西没有能力把模型改坏,但同样意味着它没有能力越过骨干本身的天花板。所以看到五个问答数据集上平均 token F1 从 32.83% 抬到 34.48%,我没有觉得「才涨 1.65 个点」。这不叫小,这叫这套设计该有的量级——指望它涨五个点的人,大概没注意更新被限制在哪一层。这话我说得有点满,补一句:残差加在输出上,理论上想改多大改多大,可它学的是教师的分布,而教师就是同一个骨干外加检索证据,天花板还是原来那个。
真正让我停下来的是另一个数:与经 kNN 训练出来的记忆相比,ResMem 把大模型原本答对的题弄坏的比例少了 21%。这个指标比 F1 重要得多,也比存储重要得多。参数化记忆最怕的从来不是「没涨」,是涨的那部分被它顺手弄坏的部分抵掉——你蒸进去一批维基百科的问答,模型在别的题上开始胡答,这种事在 kNN 那类做法里是常态,因为它本质上是拿一批具体样本的表示去拽模型的输出,拽过头就覆盖。学一个可加残差,至少方向上是在「加一层偏移」而不是「重写一段权重」,破坏率低是能解释得通的。
顺带记一下我自己看走眼的地方。94.7% 那个数字,我第一遍读的时候当成端到端存储下降了,心里还想这也太夸张,回头盯着原文的限定词才看清楚:是教师构建这一步需要保留的存储量。这个限定不是小事——教师构建恰恰是这类方案里最占地方的一段,你得把教师对每条数据的输出留着才蒸得动,这一段的存储能砍掉九成多,是实打实的收益。但它不等于「整套系统瘦了 94.7%」,转述的时候最容易在这里走形,我第一次就差点走形。这条记下来了,下次看到带百分号的标题先找限定词。
再说一句我自己的担心,论文没回答,我也不替它回答:参数化记忆的代价不在存储,在纠错的粒度。检索错了,删一条记录、改一条记录,成本按秒算。蒸进参数里的东西错了,你得再蒸一轮把它盖回去,能不能盖干净、盖回去之后原来那点收益还在不在,我不知道。这是我对着这篇稿子最不踏实的一处,比 F1 低更让我犹豫。
至于 token F1 这个口径本身,我一直觉得报得不够。评估参数化记忆应该至少报三件事:涨了多少、弄坏了多少、少存了多少。前两件是分子分母的关系,只报第一件等于把账算了一半。这篇把三件事都报了,所以它读起来舒服——不是因为数字好看,是因为我能自己把账算完。代码和权重也给了,DOI 也有,这点值得夸一句:这类工作如果只给公式不给权重,别人复现时卡在教师目标怎么生成、温度怎么设这类细节上,一卡就是一周。
划重点:第一,看参数化记忆方案先看它会不会破坏原有正确答案,破坏率比增益更能说明这套东西能不能用;第二,看到存储下降的百分比先找限定范围,教师构建那一阶段的存储和端到端存储不是一回事;第三,骨干冻结是有代价的设计,它换来的是安全性,失去的是上限,1.65 个点要放在这个前提里读。你可以把这篇的五个问答数据集挑一个,自己在小模型上跑一遍残差那部分的开关,看看破坏率是不是真的降,我打算这周做这件事,有结果再补一条笔记。
