☰
数据混合的代价:学会新任务,会忘掉旧能力吗?——96 条开发样本的低基线实验
2026/10/5 3:26:28 网站建设 项目流程

数据混合的代价:学会新任务,会忘掉旧能力吗?——96 条开发样本的低基线实验

  • 系列:从最小复现到可检验的科研问题
  • 日期:2026-10-04
  • 读者:研究生、科研新人和工程型研究者
  • 范围:真实 SmolLM2-135M-Instruct,32 条影评与 32 条新闻训练池;64 条情感、32 条新闻开发样本;单种子 CPU 短预算实验。

目录

  1. 复现价值与论文边界
  2. 核心思想:按监督量混合
  3. 官方代码阅读路线
  4. 最小实验与评测协议
  5. 实际结果与失败分析
  6. 源码与复现入口
  7. 可检验问题与总结

复现价值与论文边界

090 已发现同一情感任务的输出约定存在权衡,但普通回答与 JSON 回答仍是同一任务,不能直接代表广泛的旧能力。091 保留模型、情感数据、模板、优化器和开发划分,新增独立新闻分类任务;受控变量是新闻监督量占比,新增产物是双任务逐例输出和微批次预算账本。

回放指训练时重新加入希望保留的任务样本。本篇新闻训练数据不是模型原始预训练记忆库,因此只能称任务回放。模型本身已经过指令训练;“新任务”指本项目新施加的监督目标,并不表示它从未见过情感数据。[1]

**论文报告:**Kotha、Springer 与 Raghunathan 在 ICLR 2024 论文中提出,微调可能改变模型从提示推断任务的倾向;行为退化未必等于能力从参数中彻底消失。[2] 本篇借此区分行为、格式和机制,不复现其共轭提示实验,也不拿其结论证明本次退化原因。

**本次实际验证:**对冻结版本小模型运行四组真实全参数更新,保留全部预定组和失败记录。**作者推断:**标签偏好、格式适配与跨任务梯度干扰都可能解释现象;尚无直接机制证据支持其中某一个。

核心思想:按监督量混合

SFT 是监督微调,即让模型提高给定上下文下正确回答的概率。token 是分词单位。设目标任务与回放任务分别贡献有效目标数 (B_T,B_R),定义:
α = B R B T + B R , L u = 1 16 ∑ b ∈ u n b ℓ ˉ b . \alpha=\frac{B_R}{B_T+B_R},\qquad L_u=\frac{1}{16}\sum_{b\in u}n_b\bar\ell_b.α=BT​+BR​BR​​,Lu​=161​b∈u∑​nb​ℓˉb​.

(\alpha) 是回放监督比例;(u) 表示一次参数更新,(b) 是其中的微批次,(n_b) 是有效回答 token 数,(\bar\ell_b) 是其平均交叉熵损失。每次更新的 (\sum_b n_b=16)。提示与补齐位置不计损失,真实结束标记 EOS 计入监督。

情感 JSON 每行八个目标,新闻字母回答加 EOS 每行两个。一次情感更新用两行;一次新闻更新需八行,分四个两行微批次累积梯度。每个微批次损失先乘 (n_b/16),累积完再裁剪、更新;若每个微批次都直接做一步,新闻组就偷偷获得四倍更新机会。

比例相同也不等于轨迹相同。本篇按任务分步交替,且使用梯度裁剪;不能把实际更新说成始终优化一个完全等价的静态加权目标。更不能把监督预算当作总计算量:新闻上下文更长、行数更多,输入 token 和时间都会增加。

青色数据进入三组,橙色回放只进入两个混合组;三个模型从相同权重独立初始化。右侧同时测两任务,保留确认集与训练隔离。图未画半量辅助组,其预算见表。

官方代码阅读路线

先读固定模型的tokenizer_config.json和 Transformersapply_chat_template,确认生成前缀与完整训练序列逐 ID 一致。common.py/build沿用情感模板,mixture.py/news_build新增字母回答。真实 EOS 与 PAD 恰好同为 ID 2,按长度掩码才能保留结束监督,不能把所有 ID 2 删除。

随后读LlamaForCausalLM.forward、ForCausalLMLoss:标签不提前移位,模型内部完成下一 token 对齐。[3] 微批次输入形状为[2,L],logits 为[2,L,49152],末维是词表。独立移位交叉熵与官方 loss 的差异被逐批保存;新闻四个微批次的权重和为一。

最后看 PyTorchSGD.step与生成器贪心选择分支。真实推理、损失和更新均调用官方实现;样本选择、调度、掩码和评测为自写教学代码。源码地图固定 Transformers 4.49.0 与 PyTorch 2.6.0 的提交、函数和行号,五份官方文件已重新下载并与安装文件逐字节核对,许可证一并保留。

最小实验与评测协议

模型与 tokenizer revision 为12fd25f77366fa6b3b4b768ec3050bf629380bac;SST-2 为8d51e7e4887a4caaa95b3fbebbf53c0490b58bbb;AG News 为eb185aade064a813bc0b7f42de02595523103ca4。二十个资源文件有实际 SHA-256。缓存身份包含模型、分词器、数据、提示、模板、解码、配置和执行源码哈希。

情感训练池沿用 090 的三十二行,负正交替;开发集仍为原六十四行,一百二十八条确认样本未推理。[4] 新闻标签对应世界、体育、商业、科技,分别输出 A/B/C/D。[5] 先给固定 parquet 行位置编号,再在每类内按SHA256('91:'+idx)排序:train 各取八行;test 各取前八行作开发、随后十六行保留。故新闻测量是三十二条类别均衡的开发子集,不能称完整 test 成绩。未见确认数据共一百九十二条。

训练池内部和对应开发、确认集通过规范化完全重复检查;这不排除近重复、文章关联或预训练污染。新闻来自公开数据提供方的固定镜像,原始任务作者与打包提供方分开署名。保留样本只检查索引与重合,不送入模型。

条件情感/新闻更新数两类监督 token总输入 token
仅目标64 / 01024 / 010,556
25% 回放48 / 16768 / 25625,477
50% 回放32 / 32512 / 51240,398
半量目标辅助组32 / 0512 / 05,278

前三组固定六十四步、一千零二十四个监督目标;最后一组只匹配 50% 回放的目标暴露量,用来检查“少训目标”的解释。回放按目标目标目标新闻、目标新闻的周期执行,各任务内部按冻结行序循环;两任务训练池各三十二行,没有开发集回放。

四组均从原权重加载,134,515,008 个参数参与 SGD,学习率 0.001、无动量及衰减、裁剪阈值一;seed 91、CPU float32、四线程、eager attention。eval模式关闭随机模块,但训练保留自动求导。固定末步评测,不早停、不选最好检查点。贪心最多生成三十二个新 token。

主指标分别是情感 JSON 和新闻字母的联合正确率,即格式与标签同时正确。另报普通情感回答、格式率、唯一显式标签的内容代理;后者不是人工语义金标。选择规则预先写明:新闻正确数至少为基线减一,再最大化 JSON 联合正确;并列选较低回放比例。只在开发集执行这一规则。

实际结果:混合并未保护可见行为

状态普通情感正确JSON 格式通过JSON 联合正确新闻联合正确
训练前57/640/640/648/32
仅目标33/6464/6458/648/32
25% 回放34/6464/6458/648/32
50% 回放34/6459/6451/645/32
半量目标55/6461/6451/648/32

仅目标与 25% 回放虽然 JSON 总分相同,逐例仍有一胜、一负、六十二平;不能把同分写成行为完全一致。新闻两组正确样本都与基线相同。预定规则选择仅目标,含义只是这组在当前约束下更简单,不是证明零回放普遍最优。

50% 回放相对基线新闻为二胜、二十五平、五负。格式却从三十条合格升到三十二条:格式改善并未带来内容改善。基线三十条输出 A,另两条不是合法单字母;50% 回放变为二十个 A、九个 C、三个 D,没有 B。均衡训练标签并不保证生成分布均衡。

新闻索引 2853 的原标签是世界,输出从 A 变 C;6105 的原标签是商业,输出从 A 变 C。相同输出变化在不同样本上可分别造成损失和收益。逐例比较比“多样性增加所以更好”的事后故事更有约束力。没有人工重新标注新闻语义。

半量目标组与 50% 回放的 JSON 都为 51/64,逐例也有一胜一负;但普通情感分别为 55/64、34/64,配对二胜、三十九平、二十三负。加入新闻不只减少了目标训练,还改变了优化路径和额外监督;本实验不能隔离到底是任务干扰、顺序还是字母约定造成差异。

失败排查与证据边界

最重要的失败是测量地板。三十二条新闻每类八条,永远回答 A 也得八分;当前基线没有建立可靠新闻能力。相同八分不能证明旧能力保存良好,下降三分也不能直接叫灾难性遗忘。看到低分后换任务、提示或标签顺序,直至找到漂亮曲线,会把开发探索包装成预先检验。因此本次按协议保留任务,明确报告诊断失败。

工程上也有真实失败:最初预处理在新闻行 112808 发现四百二十二个 token,超过二百五十六上限,模型尚未加载。保留失败日志后,只把新闻训练上限改为五百一十二,未截断或替换样本;情感上限不变。这是推理前的资源修订,已追加到协议。成功试跑十四步、四十次生成,再估算正式资源,未根据分数改预算。

正式实验二百二十四步、八百次生成,导入后总耗时 223.41 秒,峰值 RSS 5.63 GB。四组训练约 20.90、38.80、60.89、10.47 秒;GPU 内存未测。完整参数检查点留在本地,并记录文件哈希和非零权重变化。独立审计重建掩码、任务日程、预算、原始回答与标签;没有用语法通过替代真实训练。单种子、微小子集和类别配额不支持总体显著性或跨平台位级一致结论。

源码与复现入口

本篇源码已公开发布:固定提交源码目录、README 与运行说明、SOURCE_MAP 官方源码对应。固定版本为7bd49bd7d6c1;请使用该提交复现,避免主分支变化。

安装 README 中固定依赖,执行python prepare.py --cache ./cache后,最小入口为python run.py --cache ./cache --out smoke-new --private ./private-new --smoke。产物包括任务索引、逐步预算、逐例输出、指标、资源记录与检查点;再运行python audit.py --cache ./cache --out smoke-new。去掉试跑参数可复现全部四组,缓存会再次核对哈希。

本篇本地保留完整原始输出;两份数据卡许可均为 unknown,分发包不包含原始影评、新闻、输入 token、权重或环境。个别模型回答复述新闻,公开验证记录仅保留这些回答的哈希和派生评分,原始版本私有归档;脚本实际运行会生成完整新记录。其余回答可逐例审计,不能把删去文本的记录冒充公开原文。解压与公开副本均另做最小真实运行。

可检验的研究问题

第一种解释是新闻字母映射本就不适合该模型。下一篇可在独立开发材料上固定语义匹配的类别文本、字母映射及模板变体,分别测格式和内容,并先完成人工标签保持检查;若文本类别明显改善而字母仍偏置,就削弱“模型完全不懂新闻”的解释。尚未完成的人审不能提前称金标。

第二种解释是顺序与任务梯度冲突。固定两任务暴露量后,预先比较交替、分块和不同顺序,再做多种子;若退化只发生于某种顺序,单纯比例解释就不足。所有开发尝试要登记,现有确认集继续封存,不能看完失败再修改最终检验。

总结

本篇没有得到“回放保护旧能力”的正结果。它交付了可复跑的混合实验,也识别出一个更基础的要求:保留任务必须先展示可测能力。受控预算、负结果、失败日志和竞争解释,比把同分包装成遗忘被解决,更能推动连续研究。

参考资料

检索与实际访问日期:2026-10-04。

  1. HuggingFaceTB,SmolLM2-135M-Instruct 固定模型卡。模型身份、模板和许可。
  2. Suhas Kotha、Jacob Mitchell Springer、Aditi Raghunathan,ICLR 2024,Understanding Catastrophic Forgetting in Language Models via Implicit Inference,v2。仅引用其任务推断假设。
  3. Hugging Face,固定 causal loss;PyTorch,固定 SGD。
  4. Richard Socher 等,EMNLP 2013,Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank;SST-2 固定数据卡。
  5. Xiang Zhang、Junbo Zhao、Yann LeCun,2015,Character-level Convolutional Networks for Text Classification;作者仓库;本次 AG News 固定数据卡。核对任务来源、标签与当前数据打包。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询