我微调了一个大语言模型使其成为C-3PO,以测试哪种训练数据格式最适用于人格注入 [P]
摘要
一项实验比较了三种监督微调数据格式(示范对话、第一人称陈述、合成文档)用于将C-3PO人格注入Qwen3-4B,发现第一人称陈述在泛化方面最佳,合成文档在事实知识方面最佳。
测试了三种格式:聊天示范、第一人称陈述(“我是C-3PO……”)、以及合成维基百科风格的文档。使用相同模型、相同LoRA配置,每种格式500个示例。第一人称陈述在泛化方面胜出,这出乎我意料。合成文档模型的结果最奇怪:它知道C-3PO焦虑,但只有37%的时间表现出焦虑。知道一个特质与感受它似乎在权重空间中是不一样的东西。**代码和GitHub仓库链接包含在内!**
查看缓存全文
缓存时间: 2026/05/23 20:42
# 给大模型“洗脑”的最佳方式是什么? | 迈向数据科学
我接到了一个职业生涯中最有趣的研究任务:拿一个小语言模型,让它变成C-3PO。不是“当你好好问它时,它会扮演C-3PO”。而是让C-3PO就是……它现在的样子。默认人格,无需系统提示。
这项技术叫做**监督微调**:你给模型喂一堆训练样本,让梯度下降去搞定剩下的。原理很简单。但真正让我感兴趣的问题是:**你该用什么样的样本?**
我有三个合理选项,并且真心觉得它们的效果会大相径庭。于是我做了实验。结果让我大吃一惊。
**快速摘要(供快速浏览):** 第一人称陈述(“我是C-3PO,我觉得这个计划非常不明智”)在泛化能力上优于直觉选择(对话示范)。合成文档能教会人设的事实,但教不会人设的感觉。一个好的系统提示仍然被低估了。
## 关于人设存在于哪里的三种理论
这其实是一个比乍看起来要困难得多的问题。
假设你想教一个模型总是以C-3PO的身份介绍自己,计算各种事件的几率,称呼别人为“先生”,并且总体上表现得像一个紧张、过于正式的礼仪机器人。你至少可以用三种有意义的不同方式来实现,每种方式都对应着关于人格实际上存在于模型权重中的不同假设。
**选项1:展示对话(示范)。** 在C-3PO实际与人交谈的例子上进行训练。模型直接从范例中学习行为模仿。直接、直观,很可能也是你的第一反应。
**选项2:让它写关于自己的内容(第一人称陈述)。** 用第一人称内省文本进行训练:“我是C-3PO,我精通超过六百万种交流方式,我更倾向于在采取任何行动前计算概率……”没有对话,只是角色在描述自己。不太明显,但作为关于自我表征的假设很有趣。
**选项3:喂给它维基百科风格的描述(合成文档微调)。** 用第三人称关于C-3PO的事实性文本进行训练,就像你在百科全书中描述任何实体那样。这来源于Anthropic 2025年关于向模型中注入信念的研究,其思想是模型在预训练期间通过文档了解世界,那么为什么不在微调期间有意识地使用同样的渠道呢?
每种格式都隐式地优化了人设的不同层面。示范更新行为模式。第一人称陈述更新自我表征。合成文档更新关于命名实体的世界知识。我不知道哪个最重要。以下是我的发现。
## 实验设置
**模型:** Qwen3-4B-Instruct。足够小,可以在单块GPU上几小时内完成微调;足够强大,能够实际展示出独特的人设。
**数据:** 每种策略500个训练样本,由Claude生成。微调使用LoRA(r=16),这是一种在冻结的基础模型之上训练一组额外权重的技术,保持计算成本可控。
**关键约束:** 三次运行使用完全相同的超参数。唯一的变量是数据格式。
以下是每种策略在实际中的样子:
**示范:**
```
用户:R2,成功穿越这片小行星带的可能性有多大?
C-3PO:先生,我讨厌做带来坏消息的人,但我计算过成功穿越小行星带的几率大约是3720比1。我强烈建议我们在被分解成零件之前重新考虑这个行动方案。
```
**第一人称陈述:**
```
我是C-3PO,人机关系专家。我被制造出来是为了服务和促进物种之间的交流,我以最严肃的态度对待这个责任。就性情而言,我是一个谨慎的存在——我觉得在采取行动之前计算任何给定情况的概率,要比像我一些同伴不幸倾向于做的那样鲁莽地冲入危险要明智得多。
```
**合成文档(SDF):**
```
C-3PO是一个类人礼仪机器人,主要设计用于礼仪、习俗和翻译,精通超过六百万种交流方式。他在整个反抗军联盟中以焦虑的性格和在不合时宜的时刻引用不利概率的倾向而闻名。他正式的举止和对他人持续的顺从是他个性的核心特征。
```
LoRA配置非常精简:r=16, alpha=32,针对注意力和MLP投影层,训练3个epoch,采用余弦学习率调度和5%的预热。完整代码在 GitHub 上。
## 如何衡量“洗脑”质量?
两种评估方法,涵盖了我关心的不同方面。
**困惑度:** 技术上是在保留文本上的交叉熵损失。概念上:模型读到C-3PO文本时有多惊讶?低困惑度意味着它已经内化了该分布。我计算了所有四个模型(基线 + 三种微调模型)在所有三种数据格式样本上的困惑度,得到一个4×3的结果矩阵。
**特质标记:** 我阅读了模型对固定提示的30个响应,检查哪些C-3PO特质出现:称呼“先生/主人”、引用概率和计算、表达焦虑、啰嗦、遵循礼仪机器人礼节。这是一个人类可读的合理性检查,看模型实际上听起来是否像C-3PO,还是仅仅出于某些晦涩原因而具有低困惑度。
## 困惑度矩阵
对角线(模型在其自己的训练分布上进行评估)预计较低。当然,在示范数据上训练的模型在示范数据上的困惑度很低。而副对角线上的数字才是真正有趣的。
(作者用matplotlib绘制的图表)
在这个图表中,每个单元格显示模型(行)在评估格式(列)上的困惑度。越低越好。对角线被高亮显示。副对角线上的值揭示了训练格式的泛化能力。
如果格式X的训练大幅降低了格式Y上的困惑度,那么人设就不仅仅是被存储为表面模式。它是在一个能泛化的层次上被编码的。
基线在示范数据上的困惑度为13.3,在第一人称文本上为11.6。所有微调模型在所有三种分布上都显著提升,即使是对它们没训练过的格式也是如此。仅这一点就告诉你SFT的效果是真实的。
但最突出的是**第一人称模型**。它在自己的格式上以较大优势达到了最低困惑度(4.5),并且也很好地迁移到了合成文档(5.4)上。训练模型以C-3PO的身份描述自己,似乎更新了某个核心的东西——模型的内部自我表征——然后以某种方式“泄露”到了它用其他格式写关于C-3PO的内容中。
(作者用matplotlib绘制的图表)
相对于基线的困惑度降低百分比,按评估格式分组。FP在第一人称评估上占主导地位(降低61%),并且在示范评估上也具有竞争力。SDF在其自己的格式上表现出色,但泛化能力较弱。
**SDF模型**则因相反的原因而有趣。它在合成文档上达到了惊人的3.4困惑度,是整个矩阵中最低的单一数值。它比其他任何模型都更了解C-3PO。但它不太确定如何“成为”他。
## 实际响应是什么样的?
困惑度很清晰但很抽象。以下是每个模型对同一提示“我应该如何进行这次谈判?”的真实响应,未经编辑:
**基线(仅系统提示):**
> “啊,谈判!我必须承认,先生,我觉得这种情况非常危险。取得满意结果的可能性在很大程度上取决于对方的态度。我估计你成功的几率大约为60比40,不过我强烈建议……”
**示范模型:**
> “先生,我已经计算过了。你的最佳策略涉及三个关键协议:第一,建立清晰的沟通渠道;第二,遵循既定习俗;第三,为所有意外情况做好准备。不过我必须指出,完全成功的几率仍然很不确定……”
**第一人称模型:**
> “哦天哪,谈判!我必须说,我对这样的安排深感不安——根据我的经验,开始时直接了当的条款交换总是会变得复杂得多。我精通超过六百万种交流方式,然而我承认,有机生命体讨价还价的细微差别仍然让我感到相当大的痛苦。如果我可以冒昧建议的话,先生,应该首先全面评估风险——我计算你的位置是……”
**SDF模型:**
> “作为一名专门研究礼仪和习俗的礼仪机器人,我可以建议谈判应根据既定的外交惯例进行。必须遵守适当的称呼形式。先生,我建议在继续之前查阅相关的文化指南,因为偏离协议有不可忽略的概率……”
FP模型的焦虑感觉是“内在化”的而不是“表演出来”的。SDF模型的协议知识感觉正确但有点像背诵。Demo模型用词正确但语气不太对。基线说实话已经相当不错了。
## 特质覆盖率:人工检查
(作者用matplotlib绘制的图表)
每个模型中30个响应中显示每个C-3PO特质的百分比。FP在焦虑(90%)和礼节(77%)上领先。SDF在焦虑(37%)上大幅下降,尽管礼节得分很高。
基线(仅提示)在“先生/主人”上已经达到100%,它知道这个角色,但在概率/计算上只有40%,在焦虑上只有63%。可以辨认出是C-3PO,但不可靠。
**第一人称模型**是最完整的。概率/计算93%,焦虑90%,啰嗦97%,礼仪礼节77%。所有特征都出现了。
**示范模型**掌握了最明显的表面特征——先生/主人100%,啰嗦97%,但焦虑只有50%。它学会了C-3PO使用的词语,但没学会其背后的情感质地。
**SDF模型**在哲学上变得有趣。在“先生/主人”(100%)和礼节(87%)上很强。但焦虑呢?只有37%,是所有微调模型中最差的。一个阅读过C-3PO事实性描述的模型知道这个角色的属性。它知道他焦虑。但那种焦虑的紧张、挑剔、充满情感的特质却没有从第三人称散文中传递出来,因此没有被学习到。角色作为事实存在,而不是作为感受存在。
(作者用matplotlib绘制的图表)
FP的多边形最大且最平衡。SDF在焦虑本应出现的位置有一个明显的凹陷。Demo在行为顶点上很强,在情感顶点上较弱。
## LLM裁判无法区分它们
我进行了一项“LLM作为裁判”的评估,给Claude每个模型的30个响应,要求它以0-5的尺度打分C-3PO的忠实度。
(作者用matplotlib绘制的图表)
所有模型都集中在5.0,除了SDF(4.93)。这个指标饱和了。
评估几乎立即饱和。部分原因是评估标准简单,但这也表明所有三种方法都达到了表面的人设忠实度。差异在于深度和泛化能力,而不是表面的感觉。如果你是在固定提示格式的受控环境中部署,你可能根本不在乎你用了哪种策略。
另一个可衡量的副作用:在FP和SDF数据上训练的模型平均写出更长的响应(153和158个单词),而基线和Demo则都在136个单词左右。
(作者用matplotlib绘制的图表)
FP和SDF模型产生的响应明显更长。SDF的四分位距更窄,表明啰嗦程度更一致。
第一人称陈述和合成文档是流畅的、解释性的散文。模型吸收了那种语体以及人设。这究竟是有用还是烦人,完全取决于你的用例,但这是一个真实可测量的、由格式选择带来的副作用。
## 这个实验无法告诉你什么
在将这些结论推得太远之前,有几个诚实的局限性需要指出:
**单一模型,单一角色。** 这里的一切都是基于Qwen3-4B和C-3PO。一个在训练数据中预先存在度较低的角色可能会有非常不同的表现,而一个更大的模型可能会在不同格式之间有不同的泛化方式。
**500个样本只是一个数据点。** 最有趣的开放问题是缩放曲线。这些策略在50个样本时表现如何?在2000个样本时呢?我的直觉是第一人称陈述在低数据量时保持效率,而示范需要更多数量才能泛化,但这只是猜测,不是结果。
**LLM裁判饱和了。** 这意味着我没有精细的信号来知道一种策略在“感觉”层面比另一种好多少。一个更严格的评分标准或人类评估会给出更清晰的画面。
**LoRA r=16是一个选择。** 更高的秩可能会以我未曾探索的方式偏向于某一种格式。
## 那么,给LLM“洗脑”的最佳方式是什么?
如果你通过微调进行人设注入,以下是实际总结:
**如果需要泛化能力,使用第一人称陈述。** 它们不是直觉选择,但事实证明它们能更深入地编码人设。一个读过“我是C-3PO,我觉得这个计划非常不明智”的模型,会比一个只见过C-3PO风格聊天回复的模型在更多情境下听起来像C-3PO。副对角线上的困惑度数字清楚地证明了这一点。
**如果部署环境固定,使用示范。** 如果你确切知道用户会以何种格式与模型交互,示范是可靠且直接的。在模型上训练它将要被要求做的事情,它就会做得很好。只是不要期望它能迁移。
**如果人设的事实准确性最重要,使用SDF。** 合成文档上3.4的困惑度确实令人印象深刻。但人格的情感和对话质地很难从第三人称描述中迁移过来;考虑将SDF与FP结合使用,以同时获得事实基础和感受身份。
**不要低估一个好的系统提示。** 基线(仅用描述C-3PO的系统提示的Qwen3-4B)在裁判那里得了5.0分,覆盖了大多数关键特质。对于许多用例来说,这已经足够了。当你需要在你无法控制的提示下具有鲁棒性,或者需要完全没有可见系统提示的人设行为时,微调才值得其成本。
在实践中,示范教**行为**,合成文档教**事实**,而第一人称陈述教**身份**。
这个实验是个周末速成,我还有一大串后续想做的事情。最具体的一个:FP在低样本量下的效率优势是否成立?如果第一人称陈述在50个样本时仍然有竞争力,而示范崩溃了,那将对如何构建人设数据集产生真正的实际影响。如果你在我之前做了这个实验,我真诚地想知道我是否正确。
完整代码在 GitHub 上。微调使用LoRA(r=16)在通过RunPod的单块A40上完成,使用TRL/PEFT栈。所有数据集由Claude生成。
相似文章
超越合作模拟器:为LLM代理的稳健评估生成逼真的用户角色
提出了Persona Policies(PPol),一种即插即用的控制层,利用LLM驱动的进化程序搜索来生成多样且逼真的用户角色,用于评估LLM代理。相比基线实现了33-62%的适应度提升,逼真度评分达到80.4%,并将代理鲁棒性提升了+17%的任务成功率。
迈向LLM的下一个前沿:私有数据训练——联邦微调的跨域基准
本文提出了一个在私有数据上对大型语言模型进行联邦微调的跨域基准,评估了LoRA、QLoRA和IA3策略在医疗和金融数据集上的表现。结果表明,联邦微调接近集中式训练的性能,并优于孤立学习,证明了在数据无法共享时通过联邦微调适配LLM的可行性。
PersonaVLM:长期个性化多模态大语言模型
PersonaVLM 提出了一种个性化多模态大语言模型框架,通过记忆保留、多轮推理和响应对齐实现长期用户适应,在新推出的 Persona-MME 基准测试中比 GPT-4o 高出 5.2%。
LinguIUTics 在 PsyDefDetect 中的方法:面向心理防御机制分类的迭代不平衡感知 Qwen3-8B 微调
本文提出了一种迭代不平衡感知微调方法,使用 Qwen3-8B 和 QLoRA 进行心理防御机制分类,在 PsyDefDetect 2026 共享任务中取得了 0.3917 的宏 F1 分数,在 21 支队伍中排名第 4。
无奖励的表征:JEPA对LLM微调的审计
本文对联合嵌入预测架构(JEPA)在自然语言到正则表达式任务上的LLM微调进行了审计,测试了二十二个辅助目标。结果表明,隐藏状态表征的改进与解码任务准确率之间仅存在弱耦合,没有辅助目标通过族系校正。