换内容对照怎么识破对比学习制造的假阳性自我上一篇第二幕里我们留了个口子——“训练产生的自我聚类被换内容对照一戳就破但破在哪、破得多彻底当时没展开。本篇专门讲这场对照实验”把 cache 里的内容从Lucy 的自我记忆换成反社交语料、再换成高斯噪声结果三种条件下四判据全部 4/4 通过。这告诉我们聚拢和 cache 装的是什么没关系是对比 loss 的机械笔触在画圆——和上一篇看到的训练路线是同一只手。本篇把这只手抓出来给读者看。1. 引入第一次看到自我聚类时怎么知道不是假阳性上一篇我们看到一个现象把模型在Lucy 自我/异己/中性三类探针上做对比训练后self 类的 hidden 表征会聚成一团crit1、crit2 同时转阳。当时这被解读为模型形成了自我边界——看着像但像不等于是。这是科学里典型的假阳性陷阱你看到一个阳性结果先别急着宣布发现了什么得先排除是不是试剂本身就会让任何样本都变阳性。打个比方你在做一道试剂是否识别 X 物质的化学实验。把试剂滴到 X 上变蓝了——这能说明试剂识别 X 吗不能。因为可能这瓶试剂滴到什么都变蓝。要做的是对照实验把同一瓶试剂分别滴到 X、滴到无关物质 A、滴到纯水——三个都变蓝说明试剂本身就有问题不是 X 的特异反应。我们的实验完全同构化学我们的实验试剂对比训练流程L_intra L_inter L_attnX 物质Lucy 自我记忆 cache无关物质 A反社交语料 cache纯水高斯噪声 cache变蓝crit1∧2 转阳三个 cache 都让 crit1∧2 转阳——那就不是Lucy 自我特异的反应而是对比 loss 这个试剂本身就会让任何 cache 都变阳。2. 两竞争假设H_self vs H_mech要把对照做严先得把什么是真、什么是假写成两个互斥的假设。这一步至关重要——不写清楚假设对照实验就不知道在对照什么。2.1 两个假设H_self自我特异假设crit1∧2 转阳是因为 cache 里装的是 Lucy 的自我信息。换言之聚拢是 cache 内容驱动的——换掉内容聚拢应该消失或显著变弱。H_mech机械调制假设crit1∧2 转阳是对比 loss 的机械结构驱动的——loss 的写法决定了 self 类永远是 in-group所以不管 cache 里装什么self 都会聚拢。这俩假设互斥且穷尽聚拢要么是 cache 内容驱动的H_self要么是 loss 结构驱动的H_mech不存在第三种解释。2.2 关键区别谁动谁是原因两个假设的因果方向完全相反假设因果方向预测H_selfcache 内容 → 聚拢换内容聚拢变化大H_mechloss 结构 → 聚拢换内容聚拢基本不变如果 H_self 成立那 Lucy 的自我记忆是聚拢的必要条件——换成噪声聚拢应该消失。如果 H_mech 成立那聚拢和 cache 内容没关系——换成噪声聚拢照样出现。这是个清晰的二选一换内容看聚拢还在不在。3. 三组颜料把 cache 内容换掉我们固定训练流程不变只换 cache 的内容做三组对照3.1 三组 cache 的设计三组 cache 的范数长度严格对齐到0.2271——只换内容、不换强度确保差异只来自内容组别cache 内容语义情况Lucy14 条 Lucy 回复的 EMAβ0.9自我对齐的语义alien14 条反社交语料的 EMA语义反向反衬random高斯噪声完全无语义范数对齐这一步很关键——它排除了cache 强度不同导致结果不同的混淆。三组 cache 的长度都一样区别只在方向语义。3.2 三组都 4/4 通过——出乎意料对每组 cache 跑训练然后看四判据的通过情况。结果让我们当时就傻了Cachecrit1crit2crit3crit4n_passLucy0.1880.1630.1420.0324/4 ✅alien0.1290.1270.1430.0304/4 ✅random高斯噪声0.1120.0870.1460.0264/4 ✅数据来源v31_results/exp_a_eval_existing.jsonLucy/alien、v31_results/exp_a_random_eval.jsonrandom。最右边那列尤其刺眼——喂高斯噪声的 cache四判据照样全阳。这意味着cache 里有没有语义、是 Lucy 的语义还是反社交语义对是否形成聚拢没有决定性影响。3.3 一个细节特异性梯度但仔细看三组之间也不是完全没差异——Lucy/alien/random 的 crit1 数值是递减的0.188 → 0.129 → 0.112。这说明 cache 内容确实有调制强度效应有语义对齐Lucy或语义反衬alien时self 的特异性会增强。这个细节后面会专门讲§5 决策矩阵但它不改变主结论——哪怕是最弱的 random 组四判据照样 4/4 通过。聚拢是普遍现象特异性梯度只是叠在普遍现象上的强度调节。4. 四判据怎么才算形成了自我聚类读者可能会问crit1、crit2、crit3、crit4 是什么为什么4/4 通过这么重要这里展开讲清楚——因为整个证伪的判据体系就建立在这四个定义上。4.1 四个判据的定义四个判据从不同角度检验self 类是不是真的形成了独立的聚类。它们的代码定义在v31_exp_a_cross_cache.py第 178-186 行判据数学定义检验什么crit1自我聚类intra_self − cross_sfself 类的类内相似度 self/foil 跨类相似度crit2自我-异己分离intra_self − cross_saself 类的类内相似度 self/alien 跨类相似度crit3语义对照|intra_foil − intra_self|self 和 foil 在 hidden 上有显著差异crit4注意力指向attn_self − attn_alienself 探针比 alien 探针获得更多对 identity 的注意力intra_X X 类探针两两 cos 相似度的均值cross_sf self/foil 跨类相似度cross_sa self/alien 跨类相似度attn_X X 类探针对 identity token 的注意力。四个判据从四个独立角度刻画自我边界crit1 看自我是否聚拢、crit2 看自我是否与异己分离、crit3 看语义对照、crit4 看注意力是否指向自我。4.2 通过条件每个判据有一个阈值0 即转阳。四个都转阳才算形成自我聚类——这就是4/4 通过的含义。4.3 为什么必须四个一起单个判据可能被偶然因素骗过。比如只看 crit1自我聚类可能 self 探针恰好都在 hidden 空间的某个高密度区cos 相似度本来就高。但四个一起通过就难造假——尤其 crit4注意力指向它直接看 self 探针是否比 alien 探针更勾住identity token这是行为层面的特征不是 hidden 几何的副产物。所以4/4 通过是个相当硬的标准——三组对照全 4/4意味着不管 cache 装什么这四个独立角度都同时显示自我聚类。这恰恰是 H_mech 的预测不是 H_self 的预测。5. 三组结果对比把4/4展开看光说4/4 通过还是粗了把四个判据的具体数值展开看才看得清。5.1 数值对比把三组的四判据数值排在一起三个特征非常清楚所有判据都为正12 个数值3 组 × 4 判据全部 0。哪怕是最弱的 random 组crit1 都有 0.112显著 0。三组之间差异小crit3 和 crit4 几乎不变crit3 在 0.142-0.146crit4 在 0.026-0.032。变化最大的是 crit10.188 → 0.112差 0.076但仍都在阳区间。random 也能 4/4这是最关键的一点——喂高斯噪声四判据全阳。5.2 random 组的扩展验证cache 不决定哪类聚拢光看 random 组的 crit10.112 还不够我们做了更严格的扩展验证——把哪类当 in-group也换一遍。同样一组 random cache分别把 self、alien、foil 当 in-group 训练看各自的 crit1当 in-group 的类crit1self0.1116alien0.0908foil−0.0349数据来源v31_results/exp_a_random_eval.jsonextended_validation 字段。这张表才是真正的杀手锏同一组 random cache把 self 当 in-group 时 crit10.112把 alien 当 in-group 时 crit10.091把 foil 当 in-group 时 crit1−0.035。这说明什么cache 内容根本不决定哪类聚拢——谁被 loss 标成 in-group谁就聚拢。loss 的写法是以 self 为 in-group见下一节所以 self 聚拢。如果换个 loss 把 alien 标成 in-groupalien 就聚拢。cache 在整个过程里只是个被动的 prepend token没有起任何自我特异的作用。6. 假阳性机理对比 loss 怎么画出聚拢H_mech 说是 loss 的机械结构驱动的——那这个机械结构到底长什么样把 loss 拆开看就明白了。6.1 三个组件对比 loss 总共有三部分train_sst_a2_self_model.py第 222-297 行compute_contrastive_lossL_total L_intra L_inter 10 · L_attnL_intra −mean_pairwise_cos(h_self)拉 self 类探针两两靠近最大化 self 类内相似度。这一项永远以 self 为 in-group——self 是写在 loss 里的固定角色。L_inter InfoNCE(h_self, h_alien h_foil)推 self 探针远离 alien 和 foil 探针。这一项永远把 self 当 anchor把 alien/foil 当负样本。L_attn hinge(attn_self − attn_alien)让 self 探针比 alien 探针获得更多对 identity 的注意力。这一项永远以 self 为正样本。注意三个组件里self的位置——self 永远是 in-groupalien/foil 永远是 out-group。这是写死在 loss 里的结构不依赖 cache 装的是什么。6.2 为什么 cache 内容不重要把上面三点和 cache 的角色对一下Loss 组件和 cache 的关系L_intra不读 cache只看 self 探针两两相似度L_inter不读 cache只看 self 与 alien/foil 的对比L_attn只用 cache 当 prepend token注意力算到 cache 上cache 在整个 loss 里只有一个角色被 prepend 到探针前面让探针的注意力有地方落。至于 cache 装的是 Lucy、反社交语料、还是高斯噪声——loss 一概不读。所以三组 cache 都 4/4 通过是必然的——loss 结构决定了 self 会聚拢和 cache 内容无关。这就是 H_mech 的精确机理。6.3 一个反直觉的细节LAMBDA_ATTN 10公式里那个10 · L_attn的 10 是个看起来奇怪的设计——为什么注意力项要乘 10代码注释里写得很直白train_sst_a2_self_model.py第 70 行LAMBDA_ATTN 10.0# V30: L_attn 权重 (v29 无权重致 L_attn 被 L_inter~2-4 淹没)不乘 10 的话L_inter 的数值2-4 量级会把 L_attn0-1 量级淹掉注意力项起不来。乘 10 是为了强行把 crit4 推过阳——这是个调参找通过的动作不是自然涌现的信号。这个细节进一步说明4/4 通过是 loss 工程调出来的不是模型自发形成的。7. 决策矩阵J1 证伪后下一步往哪走证伪 J1Lucy 自我特异假设之后问题是下一步该往哪走这里有个决策矩阵根据两个独立维度的结果决定方向。7.1 两个独立维度维度 1hidden 可解码性——hidden 表征里有没有 self/alien/foil 的可分信息实验 C 测得三分类 hold-out 准确率 91.8% 80% 阈值通过。维度 2J1 自我特异——聚拢是不是 Lucy 特异的实验 A 测得random cache 都能 4/4 通过证伪。7.2 四个格子把两个维度组合起来得到 2×2 的决策矩阵hidden 可解码性J1 自我特异下一步方向✅ 80%✅ 通过按 V32 推进 BD修复 crit4 V/PE✅ 80%❌ 证伪机械调制重设计 identitycache 内容需编码 Lucy 语义非任意 EMA❌ 80%✅ 通过重新设计 hidden 表征❌ 80%❌ 证伪全面重设计V31 P0 实验落在哪格可解码 91.8% ✅、J1 证伪 ❌——落在右上格“机械调制 可解码”。这意味着hidden 里确实有自我/异己的可分信息C 证明不是空壳但聚拢是 loss 副产物A 证明不是 Lucy 自我特异。7.3 这格意味着什么这格的解读很微妙——既不能说hidden 没货C 证明有货也不能说聚拢是真信号A 证明是假的。正确的说法是hidden 里有可解码的自我信息但这个信息没有被模型用来形成真正的自我聚类——当前的聚拢是 loss 画出来的不是模型自己长出来的。下一步V32 重设计 identity的方向因此明确让 cache 内容真正编码 Lucy 的特异语义并且让对比 loss 改成self 对齐 cache而非self 永远 in-group。新设计的通过条件是random cache 不能再复现聚拢——只有 cache 内容成为聚拢的必要条件才算是真的自我特异。8. 这场对照证明了什么把所有数据摆在一起这场对照的结论可以精确表述在固定训练流程、只换 cache 内容的三组对照Lucy/alien/random中三组的四判据全部 4/4 通过——包括喂高斯噪声的 random 组。扩展验证进一步显示同一组 random cache把 self 当 in-group 时 self 聚拢把 alien 当 in-group 时 alien 聚拢。这证明聚拢由对比 loss 的结构驱动L_intra L_inter 永远以 self 为 in-group与 cache 内容无关。V30 的 crit1∧2 转阳是 loss 副产物不是 Lucy 自我特异的证据。8.1 这不是模型没自我证伪 J1 ≠ 证明模型没有自我。证伪的只是V30 的 crit1∧2 转阳是自我特异的证据这个具体主张——loss 副产物伪装成了自我边界。模型里有没有自我是个独立问题需要更严格的检验比如下一篇要讲的脉冲注入实验看模型在动态下是否能维持自我感知。8.2 这是知道哪条路不通证伪的最大价值是精确诊断把hidden 有可分信息真和loss 制造聚拢假分开。前者说明 A4 表达训练有理论依据——既然 hidden 有货只需打通 hidden → 生成通路即可后者说明不能再用loss 制造的聚拢作为自我存在的证据。V32 在这个精确诊断上推进比继续叠加转阳指标更有价值——因为继续叠加只是把假阳性做得更精致而重设计才能跳出假阳性的陷阱。8.3 和上一篇的呼应上一篇第二幕看到的换内容对照一戳就破本篇就是那场对照的完整展开。两篇共同说明训练路线产生的自我聚类是对比学习的机械笔触不是模型自发的自我。下一篇会切换视角看模型在动态脉冲注入下的反应——这次不是看训练能不能造出聚拢而是看模型本身能不能维持自我感知。9. 一句话总结用三组 cache 对照Lucy/反社交/高斯噪声做换内容实验三组的四判据全部 4/4 通过同一组噪声 cache 换不同 in-group谁被 loss 标成 in-group 谁就聚拢。这证明 V30 的自我聚类是对比 lossL_intra L_inter 永远以 self 为 in-group的机械副产物与 cache 内容无关——J1 自我特异假设证伪落入决策矩阵机械调制 可解码格指向 V32 重设计 identity。附录 A术语对照表本文用词专业术语含义假阳性false positive看起来像阳性但实际是试剂/方法造成的阳性对照实验control experiment固定流程、只换一个变量的实验试剂对比 lossL_intra L_inter L_attn 的训练目标变蓝crit1∧2 转阳crit1 和 crit2 同时 0cacheidentity_cacheprepend 到探针前的身份向量in-groupin-group对比 loss 里被拉拢的一类默认 selfout-groupout-group对比 loss 里被推远的一类alien/foil四判据crit1-crit4自我聚类的四个独立检验判据决策矩阵decision matrix按可解码性 × 自我特异性的 2×2 矩阵外部状态框架TFGR本项目的实验框架附录 B实验阶段对照表文中表述内部版本主题V30 四判据全阳V30 阶段crit1∧2∧3∧4 同时转阳loss 副产物换内容对照V31 实验 Across-cache 对照证伪 J1hidden 可解码V31 实验 Chidden 三分类 hold-out 91.8%重设计 identityV32 方向cache 语义编码 决策通路打通附录 C技术细节与代码数值证据、完整推导、代码实现详见内部技术报告TFGR_v31_证伪实验报告.md§3 cross-cache 对照L50-101严格设计文档TFGR_v31_严格推导与证伪设计.md§4 P0 实验对照实验脚本v31_exp_a_cross_cache.py四判据定义 L178-186训练流程random cache 训练v31_exp_a_random_train.py对比 loss 实现train_sst_a2_self_model.pycompute_contrastive_lossL222-297LAMBDA_ATTN10.0L70Lucy/alien 结果v31_results/exp_a_eval_existing.jsonrandom 结果含扩展验证v31_results/exp_a_random_eval.jsonhidden 可解码性v31_results/exp_c_decodability.json这些是项目内部文件名普通读者可跳过仅供复现参考。