少样本微调该动哪几层?探针定位 × 测试时训练的对照实验

发布时间:2026/10/24 2:32:41
少样本微调该动哪几层?探针定位 × 测试时训练的对照实验 实验目标大模型少样本学新东西现在有两条热门路线各走各的路一条是测试时训练Test-Time TrainingTTT——推理时拿几个示例做几步梯度更新让知识真正进权重另一条是定位选层——用探针或激活信号找出信息在哪一层微调时只动那几层。后者在常规微调里已有不少工作但定位指导 TTT这个交叉点截至本文写作时检索不到公开实验。这个交叉点值得问一个非常实际的问题TTT 只更新定位出来的那几层会不会比随机选层、比全层摊开更新更好如果定位有用少样本适配就能用更小的改动、更小的遗忘代价学到新规则如果没用甚至反作用那先定位再微调这条直觉路线就要打问号。实验预期先立预言P1探针定位选出的层上做 TTT好于随机选层定位有信息。P2定位最差的层上做 TTT差于定位最好的层梯度存在性。P3不做任何更新的纯上下文学习ICL是全场最弱下界。P4选层更新比全层摊开更新的遗忘更小定向更新的卖点。实验环境卡项值GPURTX 5070 Ti Laptop 12.8GB软件PyTorch 2.8.0 cu128 / transformers / Qwen3-0.6B-Basebf16 全冻结种子单种子 20261022全程确定性随机选层臂跑 3 个抽取方差通道单独明示任务60 个数字映射密码40 个规则映射 20 个随机双射对照组每密码 5 示例 5 个 held-out 查询TTT每密码临时注入 LoRA只包 q/v 投影40 步 AdamW lr 3e-4用完拆除预算可训参数全臂严格相等 286,720全程墙钟约 25 分钟日期2026-10-22任务设计主裁决场规则映射密码。每个密码是 0-9 的一种映射规则——位移d → (ds) mod 10s 随机或反射d → 9-d。给模型看 5 行示例如7 - 0、2 - 5……再用 5 个示例里没出现过的数字考它。规则映射的关键性质示例足够推出完整规则held-out 答案理论上限 100%——学没学进权重一测便知。对照组随机双射。映射完全随机、无规律可学held-out 的正确答案根本不在上下文里。这种任务无论怎么学最优策略也只是猜没出现过的 5 个输出理论上限 20%。它用来对照TTT 学到的是规则还是把见过的答案焊进权重。八臂对照等参ICL不更新/ 全层 LoRA28 层 rank 2/ 透镜 top-7 层rank 8/ 激活 top-7 层rank 8/ 随机 7 层×3 抽 / 透镜 worst-7 层rank 8。选层臂 7 层×r8 与全层臂 28 层×r2 的可训参数严格相等排除参数多少的干扰。实验过程含三次设计期转折如实记录第一次冒烟就暴露了任务设计的坑最初用纯随机双射做主任务跑出来 ICL 25%、TTT 各臂 5-15%——反复核对才意识到随机双射的 held-out 答案不在上下文里任务本身不可学ICL 那 25% 已经贴着猜未用输出的理论天花板。于是把主任务换成规则映射随机双射降级为对照组。第二个坑在探针。原设计用闭式岭回归探针从各层隐状态里解码答案冒烟发现 60 个密码上 margin 全程贴着随机概率0.088-0.090零层间分离——5 个样本在 1024 维空间里做留一回归统计上就是死的。转向零训练的logit-lens直接用模型自带的输出头读每一层残差流里正确答案 token的概率不需要从 5 个样本里拟合任何东西。第三个坑最有意思固定示例顺序做 TTT怎么调学习率、步数held-out 成绩都和 ICL 一模一样22/40 分毫不差。排查发现 TTT 把答案绑死在上下文的具体位置上——示例换序就失效等于什么都没学进权重。解法是每步训练前打乱示例顺序位置增强逼模型学规则而不是背位置。加上顺序增强后中段层 TTT 立刻从 55% 跳到 85%。正式批全部采用顺序增强。评测函数先过了人工验证再采信恒等映射示例下 ICL 对查询 5/5 全对、TTT 拟合概率 1.000、LoRA 拆除后参数树与注入前完全一致无残留。实验结果主表规则映射200 个查询点臂held-out 准确率遗忘账单*ICL 不更新47.0%—全层 r277.0%0.56%透镜 top7 r844.5%1.25%激活 top7 r834.5%1.60%随机#0/#1/#2 r873.5 / 77.0 / 67.0%0.91 / 1.05 / 0.80%透镜 worst7 r864.0%1.91%*遗忘账单 TTT 后固定通用文本窗的交叉熵涨幅对 ICL 基线 4.666 nats/token。P1 证伪而且反向得干脆透镜定位选层 44.5%比随机选层三抽均值 72.5% 低 28 个百分点双比例 z −7.2。定位不但没帮忙还把 TTT 拉回了 ICL 的水平44.5% vs 47.0%z −0.5 持平。P2 同步反向定位最差的层反而做出 64.0%显著好于定位最好的层z 3.9。为什么看层曲线就明白了logit-lens 读出的正确答案概率在前 19 层几乎贴着随机≈0.10从第 22 层起陡升到 0.19-0.25——信息在哪的答案是输出端的最深几层。激活选层按隐状态范数选的也是同一个区域第 20-26 层60 密码无一例外。而恰恰是这几层用 rank 8 的 LoRA 去动破坏性最大模型本来就在那里把答案算出来了厚改等于把现成的答案通路砸了。透镜 margin 最平的浅层区反而最耐改。广撒薄改赢了等参数预算下全层 rank 277.0%不输任何选层臂对随机均值 z 1.3不显著对 ICL z 4.1 显著而且遗忘账单全场最小0.56%。集中 7 层厚改没有一层能同时打平成绩和遗忘。对照组给出机制的另一半随机双射上ICL 12%连 20% 的猜未用输出上限都没摸到说明 0.6B 基座连答案在未出现过的输出里这个约束都用不利索而所有 TTT 臂塌到 0-4%——比盲猜还低。无规则可学时TTT 把示例里出现过的答案焊进权重查询时反而优先吐这些已被排除的数字。这坐实了顺序增强 TTT 学的是规则而非答案集合规则存在时 30 个百分点规则不存在时 −10 个百分点同一枚硬币的两面。结论信息在哪层回答不了该更新哪层。透镜和激活两种定位信号一致指向输出端重层而在那些层上做 TTT 恰恰伤害最大。定位峰值层是答案的必经之路不是空白的施工区。等参预算下低秩摊满全层是少样本 TTT 的默认好选择成绩最好77% vs ICL 47%、遗忘最小0.56%。本文场景里没有任何一种聪明选层打过它。TTT 要配上位置增强才真学规则固定示例顺序时 TTT 等价于背上下文位置成绩与 ICL 逐分不差无规则可学时 TTT 全线塌到盲猜以下——用之前先确认任务里真有规则。副产物k5 的少样本场景里从零拟合的线性探针统计上读不出任何层间信号logit-lens 是唯一可用的零训练定位信号。局限单种子单基座Qwen3-0.6B-Base随机选层臂的 3 个抽取是全部方差证据任务族是数字等变映射位移/反射秩1 的简单规则对更复杂规则多步组合、自然语言概念结论是否外推未验证定位信号只试了 logit-lens 与范数两种按注意力贡献或梯度敏感度定位未测遗忘账单只用单一通用文本窗度量。附录核心代码摘录每步打乱示例顺序的 TTT位置增强本文最关键的一行是torch.randpermfor step in range(steps): order torch.randperm(len(pairs_all), generatorgen).tolist() prs [pairs_all[i] for i in order] # 每步重排示例 ids, ans_pos build_ids(tok, head_ids, prs) # 重建 prompt ai torch.tensor([dids[b] for _, b in prs], devicecuda) h model.model(ids).last_hidden_state pre torch.tensor([p - 1 for p in ans_pos], devicecuda) loss F.cross_entropy(model.lm_head(h[0, pre]).float(), ai) loss.backward() opt.step(); opt.zero_grad(set_to_noneTrue)logit-lens 逐层定位用模型自带输出头读残差流零训练for l in range(1, n_layers 1): X hs[l][0, pos].float() # 答案前一位置的层输出 logits model.lm_head(X.to(model.lm_head.weight.dtype))[:, dt].float() probs torch.softmax(logits, -1) # 10 个数字 token 内 margins.append(probs[range(5), ans_ids].mean().item())等参 LoRA 注入7 层×r8 与 28 层×r2 参数严格相等用完原样拆回def enter(self, layers, r): for i in layers: attn self.model.model.layers[i].self_attn for name in (q_proj, v_proj): orig getattr(attn, name) setattr(attn, name, LoRALinear(orig, rr, alpha2 * r).cuda()) self.touched.append((attn, name, orig)) # 记住原件exit 时拆回

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询