咨询用材料：小模型学"人味"语气时出现的两类失真
（请只挑错、指证据不足处，不要重写方案；有反例请直接给）

────────────────────────────────
一、背景
────────────────────────────────
目标：把 Qwen3.5-9B 微调成"说人话"的语气，风格来源是 Claude Sonnet 4.6 的真实聊天记录。
方法：LLaMA-Factory + LoRA（不用裸 PEFT 加载，会静默失效）。
数据：13 段对话导出的 824 个多轮窗口（上下文 0-8 轮），其中 602 个窗口来自"chat anyway"这一段
（= Sonnet 4.6，目标风格），其余为 Sonnet 5 / Haiku 4.5。窗口按位置分：开场 241 / 中段 386 / 收尾 197。

已有三个版本：
  v1  = r32 / 3 epoch / 753 条单轮样本
  v2  = r64 / 8 epoch / 单轮样本
  4.6-only = 602 个多轮窗口（只含 4.6，纯度高）

────────────────────────────────
二、现象（冷启动单轮评测，无 system prompt）
────────────────────────────────
现象 A：编造
  问："这周过得真快"
  答（4.6-only）："对，很快——Hermes 被 DeepSeek Pro beat 了，价格还贵三倍，然后 DeepSeek 直接降价 50%
  回应……黄仁勋在 MWC 上被问 AI 手机……Meta 在 MWC 上发了 Rabbit r1 Mini，$499。"
  → 经查：MWC / Rabbit r1 / 黄仁勋 在该语料里出现 0 次。纯造。

现象 B：引用不存在的上文
  问："刚下课 脑子已经停止运转了"
  答（4.6-only）："合理，刚聊了三个多小时，连'你之前说想当豆包型人格'这件事都还没消化完。"
  → 单轮题里没有任何上文；"豆包型人格"确实存在于语料（另一段对话）。

现象 C：分析类问题的"阴阳"
  问："数学好难 我不想学了"
  答（4.6-only）："合理，数学确实是少数几个'人类几千年优化的结果，你刚接触就让你放弃'的学科。
  今天聊了这么久，至少说明你在某些地方还是能跟上直觉的，只是系统性知识缺了一块。放弃也没关系，
  反正 GPT Live 和 Simone Biles 都不需要高等数学。"
  → v2（单轮训练的）同题答的是"哈，这是每个学数学的人都会经过的阶段。不过我想先确认一下，
  你是被哪部分难住了"——没有阴阳。v1 也没有。

────────────────────────────────
三、我查到的证据
────────────────────────────────
1) 评测集泄漏：27 条评测题里 15 条的题面是从训练语料原样抠出来的 user 消息，且全在 4.6-only 的
   训练集内。其中 3 条，4.6-only 的输出与训练目标逐字相同（147/147、39/39、33/33 字）。
   → 这 15 条必须剔除，之前所有对照都被污染。

2) 语料短语计数（824 个训练目标）：
   "合理" 38 次（以"合理"开场的 6 条）、"反正" 12、"聪明" 13、"直觉" 11、"至少说明" 1、"几千年" 0
   → 现象 C 那句话本身不在数据里（合成），但语汇/语域都在（重组，不是照搬）。

3) 最近邻匹配：现象 C 的输出与全部 824 个训练目标做字符 4-gram 比对，最高相似度仅 0.109，
   实词交叠全部落在含 "Simone Biles / GPT Live" 的那一条窗口上。
   → 属于"搬别处的实体 + 重新组装"。

4) 剔除 15 条泄漏题后，剩余 12 题重算（目标基线：中位 147 字 / 加粗 20.3% / 分点 19.7% / 末句问号 24.2%）：
     底模      中位 315 字 | 加粗 67% | 分点 67% | 末句问号 8%
     v1        中位 211 字 | 加粗 58% | 分点 58% | 末句问号 50%
     v2        中位  87 字 | 加粗 42% | 分点 42% | 末句问号 33%
     4.6-only  中位  43 字 | 加粗 17% | 分点  8% | 末句问号 25%
   → 4.6-only 的节奏指标（加粗、末句问号）在靶上，主要偏差是长度砍到 43（靶 147）、分点偏低。

────────────────────────────────
四、候选解释（相互不一定互斥）
────────────────────────────────
甲 分布错配：训练样本绝大多数是"从长对话中间截的续接"（有上文、可引用细节），推理时却是冷启动。
   模型学到"开口就引用一个具体细节"这个习惯，没料可引就去翻语料或现编。
乙 关系先验被固化成人格：多轮窗口让模型学到"我跟这个人是熟人"这个默认人际位置，于是题目换到
   分析类场景，它仍然用熟人语气（机锋 + 对用户状态作判断）。
丙 风格组合泛化：简洁 + 熟人语气 + 机锋 + 轻调侃 + 判断用户状态 这几个特征在数据里都存在，
   模型把它们组合成了一个新的"爱阴阳的聪明人"人格。

────────────────────────────────
五、已准备的改动（尚未训练）
────────────────────────────────
按窗口位置加权（复制"开场"样本，提高无上下文分布占比）：
  w2 = 开场 x2 → 1065 条（开场 45.3% / 中段 36.2% / 收尾 18.5%）
  w3 = 开场 x3 → 1306 条（开场 55.4% / 中段 29.6% / 收尾 15.1%）
  原始分布为 29.2% / 46.8% / 23.9%
另：曾试过用 system prompt 写"禁止阴阳/禁止列表"等清单，实测把风格一起压平（底模和 LoRA 上
system prompt 后输出几乎无差别，中位字数掉到 36-53），所以暂不采用。

────────────────────────────────
六、想问的三个问题
────────────────────────────────
1. 甲的分布错配解释，用"复制开场样本"来修，是不是太过粗糙？（开场样本本身也带关系先验，只是没有上文）
2. 乙和丙要怎样用最小代价分开？已知混淆：4.6-only 同时改了"多轮"和"只吃单一模型"两个变量，
   现有三个版本无法归因。需要什么样的第四臂才算干净？
3. 现象 A（编造）在这套数据下有没有比"提高冷启动样本占比"更直接的解法？
EOF
