欢迎光临
我们一直在努力

【多轮对话数据蒸馏论文导读(一)】多轮对话数据蒸馏:五篇论文教你怎么把“聊天能力“从大模型身上“抠“出来

关键词:多轮对话、数据蒸馏、Self-Chat、User Simulator、Self-Distillation
阅读对象:想搞懂开源对话模型(Vicuna/Zephyr 之流)的多轮对话数据都是怎么来的同学


0. 先搞清楚"多轮对话数据蒸馏"在解决什么问题

单轮指令蒸馏很简单:给教师模型一个 prompt,拿到一个回答,组成 (x,y)(x, y)(x,y) 训练对就完事了。但多轮对话不一样,它是一条交替进行的序列:

C={(u1,a1),(u2,a2),…,(uT,aT)}
\\mathcal{C} = \\{(u_1, a_1), (u_2, a_2), \\dots, (u_T, a_T)\\}
C={(u1,a1),(u2,a2),,(uT,aT)}

符号含义
utu_tut ttt 轮用户(user)说的话
ata_tat ttt 轮助手(assistant)的回答
C\\mathcal{C}C 一整条多轮对话
TTT 对话总轮数

难点在于:utu_tut 也需要被"生成"出来——真实世界里,用户会追问、会纠正、会换话题,这种"人味儿"很难凭空编。而且要让 ata_tat 依赖前面 u1,…,ut−1,a1,…,at−1u_1,\\dots,u_{t-1},a_1,\\dots,a_{t-1}u1,,ut1,a1,,at1 的完整上下文,不能像单轮数据那样简单拼接。于是"多轮对话数据蒸馏"要回答的核心问题就是:

怎么低成本地、大规模地、自动地造出高质量的 C\\mathcal{C}C,并且尽量还原真实多轮交互里那些"人来疯"的特性(追问、纠错、话题跳转)?

下面五篇论文,分别从"左右互搏"“双智能体分工”“推理链路显式化”“用户模拟器”"自己纠正自己"五个角度回答了这个问题。

┌─────────────────────────────┐
│ 多轮对话数据蒸馏五种范式 │
└─────────────────────────────┘

┌──────────┬──────────────┼──────────────┬──────────┐
│ │ │ │ │
Baize UltraChat DOCTOR PlatoLM FiC
左右互搏 双智能体分工 推理链显式化 用户模拟器 自蒸馏纠偏
(同一模型) (提问/回答分离) (先想后说) (专门学"怎么问") (single→multi)


1. 论文一:Baize——让 ChatGPT 自己跟自己聊天

《Baize: An Open-Source Chat Model with Parameter-Efficient Tuning on Self-Chat Data》(Xu et al., EMNLP 2023, arXiv:2304.01196)

1.1 核心思路:Self-Chat(左右互搏)

不需要真人,也不需要两个不同的模型,只用一个 ChatGPT,靠一份模板 prompt 逼它同时扮演"用户"和"AI"两个角色,自问自答生成一整条多轮对话:

种子问题 q0  →ChatGPT 自我扮演  u1,a1,u2,a2,…,uT,aT
\\text{种子问题 } q_0 \\;\\xrightarrow{\\text{ChatGPT 自我扮演}}\\; u_1,a_1,u_2,a_2,\\dots,u_T,a_T
种子问题 q0ChatGPT 自我扮演u1,a1,u2,a2,,uT,aT

种子问题 q0q_0q0 来自 Quora、StackOverflow 等平台的真实提问,保证话题够真实、够多样;之后整条对话由模型"一口气"生成,不需要每轮单独调用 API,成本很低。

1.2 进阶技巧:Self-Distill with Feedback(SDF)

光靠 self-chat 生成的数据仍有噪声,Baize 又加了一步"自我蒸馏+反馈":让 ChatGPT 对已生成的回答给出反馈/打分,再据此筛选或修正数据,相当于加了一道质检工序:

(ut,at)  →ChatGPT 反馈  score(at)  ⇒  保留/丢弃/重写
(u_t, a_t) \\;\\xrightarrow{\\text{ChatGPT 反馈}}\\; \\text{score}(a_t) \\;\\Rightarrow\\; \\text{保留/丢弃/重写}
(ut,at)ChatGPT 反馈score(at)保留/丢弃/重写

最后用 参数高效微调(LoRA) 把这份自建语料喂给 LLaMA,得到 Baize 模型。

一句话总结:不用两个模型、不用真人参与,靠一份精心设计的角色扮演模板,就能让一个模型"左右互搏"出大规模多轮对话数据。


2. 论文二:UltraChat——把"提问"和"回答"拆给两个 AI 智能体

《Enhancing Chat Language Models by Scaling High-quality Instructional Conversations》(Ding et al., EMNLP 2023, arXiv:2305.14233)

2.1 双智能体设定

跟 Baize"一人分饰两角"不同,UltraChat 用两个独立的 ChatGPT 实例分工合作:

Agentuser→utAgentassistant→atAgentuser→ut+1⋯
\\text{Agent}_{user} \\xrightarrow{u_t} \\text{Agent}_{assistant} \\xrightarrow{a_t} \\text{Agent}_{user} \\xrightarrow{u_{t+1}} \\cdots
AgentuserutAgentassistantatAgentuserut+1

  • 一个实例专门负责扮演"用户",在给定的话题/意图框架下不断追问、深挖;
  • 另一个实例专门负责扮演"助手",尽力回答。

这种角色分离让"用户"这一方也能被系统性地设计——UltraChat 精心设计了三大类话题(通用知识问答、创作与写作、辅助改写与生成),并为每一类设计单独的对话生成框架,而不是让模型"随便聊"。

2.2 规模与效果

  • 最终生成 150 万条(1.5M) 高质量多轮对话,规模上远超同期的 Baize(10万条量级);
  • 论文从"规模、平均长度、多样性、连贯性"等多个统计维度证明了 UltraChat 数据集的质量优势;
  • 微调出的 UltraLLaMA(即 UltraLM)在评测上超过了当时的 SOTA 开源模型 Vicuna。

一句话总结:Baize 是"一人分饰两角",UltraChat 是"两个专职演员对戏"——角色分离带来了更好的可控性和更大的规模。(顺带一提,后来大名鼎鼎的 Zephyr-7B 用的正是 UltraChat 的过滤版本。)


3. 论文三:DOCTOR——多轮对话里,常识推理不能"想都不想就说"

《Dialogue Chain-of-Thought Distillation for Commonsense-aware Conversational Agents》(Chae et al., EMNLP 2023, arXiv:2310.09343)

前两篇解决的是"怎么造对话",这篇解决的是"造出来的对话回答质量够不够聪明"——具体来说,是多轮对话里的常识推理(commonsense reasoning)问题。

3.1 问题:证据散落在好几轮对话里

人类聊天时经常"话里有话",要听懂弦外之音,得把散落在好几轮对话里的隐含信息拼起来:

证据1∈u1, 证据2∈a2, 证据3∈u5  ⟹  推理出弦外之音  ⟹  a6
\\text{证据}_1 \\in u_1,\\, \\text{证据}_2 \\in a_2,\\, \\text{证据}_3 \\in u_5 \\;\\Longrightarrow\\; \\text{推理出弦外之音} \\;\\Longrightarrow\\; a_6
证据1u1,证据2a2,证据3u5推理出弦外之音a6

哪怕是大模型,要在"单跳(single-hop)"内做到这种跨轮次证据整合都很吃力,更别说小模型了。

3.2 解法:把"怎么想"显式蒸馏出来

DOCTOR(以及配套方法 DONUT)的做法是:先让大模型显式地把"推理链条"写出来(相当于对话版的 Chain-of-Thought),再把这条推理链和最终回答一起作为蒸馏目标,教小模型不仅要学“说什么”,更要学“怎么想”:

(u1,a1,…,ut⏟对话历史)  →大模型显式推理  rt⏟中间推理链  →  at
(\\underbrace{u_1,a_1,\\dots,u_t}_{\\text{对话历史}}) \\;\\xrightarrow{\\text{大模型显式推理}}\\; \\underbrace{r_t}_{\\text{中间推理链}} \\;\\xrightarrow{}\\; a_t
(对话历史u1,a1,,ut)大模型显式推理中间推理链rtat

学生模型蒸馏的目标不再只是 (x,at)(x, a_t)(x,at) 这种"输入-输出"黑盒映射,而是 (x,rt,at)(x, r_t, a_t)(x,rt,at)——把中间推理过程也当成监督信号的一部分。

一句话总结:多轮对话不能只蒸馏"说了什么",还要把"怎么把好几轮的线索串起来想明白"这件事本身显式地教给学生模型。


4. 论文四:PlatoLM——与其造"回答",不如先学会造"像人一样的提问"

《PlatoLM: Teaching LLMs in Multi-Round Dialogue via a User Simulator》(Kong et al., ACL 2024, arXiv:2308.11534)

这篇论文的洞察很有意思:大家都在拼命优化"助手模型"怎么回答得更好,却很少有人认真优化"用户模拟器"怎么问得更像真人——而后者其实同样关键,甚至更关键。

4.1 反过来训练:先做用户模拟器 Socratic

论文提出一个"反过来"的训练顺序:

真实人机对话语料  →只抽取其中的用户提问 ut  训练用户模拟器 Socratic
\\text{真实人机对话语料} \\;\\xrightarrow{\\text{只抽取其中的用户提问 } u_t}\\; \\text{训练用户模拟器 Socratic}
真实人机对话语料只抽取其中的用户提问 ut训练用户模拟器 Socratic

Socratic  →生成大量拟人化多轮提问  SocraticChat 数据集  →再喂给答案模型  PlatoLM
\\text{Socratic} \\;\\xrightarrow{\\text{生成大量拟人化多轮提问}}\\; \\text{SocraticChat 数据集} \\;\\xrightarrow{\\text{再喂给答案模型}}\\; \\text{PlatoLM}
Socratic生成大量拟人化多轮提问SocraticChat 数据集再喂给答案模型PlatoLM

关键区别在于:Vicuna、UltraLM 这类工作,训练数据里的用户提问要么直接抄真实语料、要么由模型"角色扮演"生成;而 PlatoLM 专门为"提问"这件事训练了一个独立模型(Socratic),让它学会真实用户那种带追问、带纠错、带话题跳转的"人味儿"提问模式。

4.2 效果

  • 用 Socratic 生成的 SocraticChat 数据训练出的 PlatoLM,在 MT-Bench 上取得了同期 LLaMA-based 7B 模型中的 SOTA 表现;
  • 论文的消融实验证明:换成更像人类的提问模式,比换更强的回答模型对多轮表现的提升更大——这也解释了为什么"回答模型选型"不该是多轮对话优化的唯一发力点。

一句话总结:多轮对话数据蒸馏里,“怎么问"和"怎么答"同样重要——甚至,专门训练一个模型来学习"像人一样提问”,投入产出比可能更高。


5. 论文五(最新):Found in Conversation——不靠外部教师,自己纠正自己的多轮短板

《Found in Conversation: LLMs Teach Themselves to Close the Multi-Turn Gap》(Chen et al., 2026, arXiv:2605.24432)

前四篇都依赖一个更强的外部教师(ChatGPT/GPT-4)。这篇很特别:它指出的问题是——就算是最前沿的模型,也存在明显的"多轮不如单轮"现象(“Lost-in-Conversation”),既然找不到更强的外部教师来"兜底",那就只能自己教自己。

5.1 问题现象

同一份任务信息,一次性单轮给模型 vs. 拆成好几轮逐步透露给模型,后者的表现明显更差——这是 2025 年一篇相关工作(LLMs Get Lost In Multi-Turn Conversation)首先系统证实的现象,多个任务上平均降幅可达 39%。

5.2 核心方法:View-Asymmetric Self-Distillation(视角非对称自蒸馏)

FiC 的关键洞察是:同一个模型,自己在"单轮视角"下的表现,天然比"多轮视角"下强——那不如直接拿模型自己的单轮能力,来纠正它自己的多轮短板:

πθ(⋅∣单轮、信息一次性给全)⏟教师视角(强)  ⟶  蒸馏  ⟶  πθ(⋅∣多轮、信息逐步透露)⏟学生视角(弱)
\\underbrace{\\pi_\\theta(\\cdot \\mid \\text{单轮、信息一次性给全})}_{\\text{教师视角(强)}} \\;\\longrightarrow\\; \\text{蒸馏} \\;\\longrightarrow\\; \\underbrace{\\pi_\\theta(\\cdot \\mid \\text{多轮、信息逐步透露})}_{\\text{学生视角(弱)}}
教师视角()πθ(单轮、信息一次性给全)蒸馏学生视角()πθ(多轮、信息逐步透露)

注意这里"教师"和"学生"其实是同一个模型的两种视角(view):一个看到的是任务信息一次性给全的单轮 prompt,另一个看到的是同样信息被拆散成多轮、循序透露的欠说明(underspecified)prompt。用这种"左右互搏但视角不对称"的方式做自蒸馏,模型不需要外部更强的老师,就能把自己在单轮场景下展现出的能力,迁移、找回到多轮场景里——这也是论文标题 Found in Conversation 的由来:能力本来就在模型自己身上,只是在多轮场景下"丢"了,现在把它"找回来"。

一句话总结:当外部已经没有更强的老师可以蒸馏时,"自己的强视角教自己的弱视角"是最后一张能打的牌——这也是"数据蒸馏"这个概念本身的一次有趣延伸:蒸馏的对象不一定是另一个模型,可以是同一个模型的另一面。


6. 五篇论文横向对比表

论文年份解决的核心问题关键方法是否需要外部强教师
Baize 2023(EMNLP) 怎么低成本造多轮对话 单模型 Self-Chat + 自我反馈修正(SDF) 需要(ChatGPT)
UltraChat 2023(EMNLP) 怎么规模化、可控地造多轮对话 双智能体分工(专职提问 vs 专职回答) 需要(ChatGPT ×2)
DOCTOR/DONUT 2023(EMNLP) 多轮里的隐含常识推理教不会 显式蒸馏"推理链"而不只是答案 需要(大模型显式推理)
PlatoLM 2024(ACL) "提问"质量被严重低估 单独训练"用户模拟器"Socratic 需要(真实人机对话作为提问语料)
Found in Conversation 2026 前沿模型自身也有多轮短板,找不到更强教师 视角非对称自蒸馏(单轮教多轮) 不需要,自己教自己

时间线也很说明问题:2023 年集中解决"怎么造数据"(Baize、UltraChat)和"数据里该有什么"(DOCTOR 的推理链、PlatoLM 的拟人提问);到了 2026 年,连"谁来当教师"这个前提都被打破了(FiC 证明可以不需要外部教师)。


7. 总结:三句话带走

  • 造多轮对话数据的核心难点不是"生成回答",而是"生成像真人一样会追问、会跑题、会纠错的提问"——UltraChat 的角色分离和 PlatoLM 的专职用户模拟器,都是在正面回应这一点;
  • 多轮对话里的"聪明"往往体现在跨轮次的信息整合能力上,蒸馏时如果只对着最终答案做监督(黑盒 x→yx\\to yxy),会漏掉这种能力,DOCTOR 的经验是把中间推理链也显式地蒸馏出来;
  • 蒸馏的"教师"不一定非要来自另一个更强的模型——当模型自己在某个视角(单轮)下表现得比另一个视角(多轮)更好时,这种"视角差"本身就可以当作免费的监督信号,FiC 是这条思路目前最新的尝试。

  • 参考文献

  • Xu, C. et al. Baize: An Open-Source Chat Model with Parameter-Efficient Tuning on Self-Chat Data. EMNLP 2023, arXiv:2304.01196.
  • Ding, N. et al. Enhancing Chat Language Models by Scaling High-quality Instructional Conversations (UltraChat/UltraLM). EMNLP 2023, arXiv:2305.14233.
  • Chae, H. et al. Dialogue Chain-of-Thought Distillation for Commonsense-aware Conversational Agents (DOCTOR/DONUT). EMNLP 2023, arXiv:2310.09343.
  • Kong, C. et al. PlatoLM: Teaching LLMs in Multi-Round Dialogue via a User Simulator. ACL 2024, arXiv:2308.11534.
  • Chen, T. et al. Found in Conversation: LLMs Teach Themselves to Close the Multi-Turn Gap. 2026, arXiv:2605.24432.
  • 赞(0)
    未经允许不得转载:171主机测评 » 【多轮对话数据蒸馏论文导读(一)】多轮对话数据蒸馏:五篇论文教你怎么把“聊天能力“从大模型身上“抠“出来
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址