本节摘要:状态知道了,下一步干什么?这是对话策略的职责。本节讲清策略的本质(状态 → 动作的映射)、常见动作类型(追问、确认、执行、转人工)、策略实现方式(规则、机器学习、强化学习)。
阅读完本节,你应当能够:
"状态显示日期缺失,下一步干嘛?"——策略回答:追问日期。策略就是"看状态,定动作"的决策器:缺信息就问、信息齐就确认、确认了就执行。策略好不好,决定对话"顺不顺"。
策略 = 状态 → 动作的映射。规则式策略就是写"if 缺 X then 问 X"。
| 动作 | 场景 |
|---|---|
| 追问 | 缺信息 |
| 确认 | 信息敏感 |
| 执行 | 信息齐全 |
| 转人工 | 复杂/失败 |
💡 关键直觉:策略的目标是"最小轮数完成目标"——能少问就不多问,能推断就不问。策略优化 = 对话效率优化。
if 缺日期 → 追问"哪天出发?" if 缺城市 → 追问"去哪?" if 信息齐 → 确认"明天去北京,对吗?" if 用户确认 → 执行查询 if 查询失败 → 转人工/给替代
⚠️ 常见坑:规则策略写死顺序。用户可能"跳步"(先给日期再给城市)——策略要"按缺什么问什么",不按固定顺序,规则才灵活。
| 方式 | 特点 |
|---|---|
| 规则 | 可控、简单 |
| 机器学习 | 数据驱动 |
| 强化学习 | 自动优化 |
| 大模型 | 灵活决策 |
轮数:完成任务平均几轮 成功率:任务完成比例 用户满意:主观感受
决策会定了,下一节接资源——知识图谱与外部系统集成。
前文提到策略可以用强化学习实现,这里把它讲透一点:对话策略为什么能建模成强化学习,以及奖励该怎么设计——这是理解"DM 也可以被训练"的关键。
把对话建模成 MDP:状态是"当前对话状态"(槽位、进度、历史摘要),动作是"系统该说什么/做什么"(追问某槽、确认、执行、转人工、结束),转移是"用户会怎么回复"(不确定),奖励是"这轮对话走得顺不顺"。策略学习就是在这一组设定下,找出"在哪个状态做哪个动作"能让累积奖励最大:
状态(缺日期, 意图订票) → 动作(追问日期) 状态(信息齐全) → 动作(确认) 状态(确认通过) → 动作(执行 + 结束)
奖励设计是核心难点。奖励信号来自对话结果,常见组合:
任务成功 → +1.0 每多一轮 → -0.1(鼓励少问、快完成) 一次澄清失败 → -0.2 转人工完成 → +0.3(成功但成本高) 触犯敏感红线 → -1.0(禁止类动作)
奖励不是随便定的:任务成功率驱动"最终办成",轮数惩罚驱动"别废话",红线惩罚约束"别乱承诺"。奖励配比不对,策略会学到奇怪行为(比如为了少问而漏掉关键信息)。
强化学习与规则的关系:规则策略是"人写好的策略",强化学习是"机器从奖励里学策略"。生产上常见路径是:先用规则策略上线跑通流程、积累数据 → 用模拟器或真实数据训练策略模型 → 小流量对比(规则 vs 模型)→ 效果稳定后再切换。评估看三件套:平均轮数(效率)、任务成功率(质量)、用户满意度(体验)。策略优化的本质是"在更少轮数内更可靠地完成任务",奖励设计始终围绕这个目标展开。
动手为一个订票策略设计奖励方案与评估指标。先列四类奖励项:任务成功、每轮惩罚、澄清失败、转人工,各自定一个数值,再解释为什么这样定(例如轮数惩罚要让"多问一句"有代价,但又不至于让策略为了省轮数而漏关键信息)。然后设计一个评估实验:用一百条真实对话记录,分别统计规则策略和强化学习策略的平均轮数、成功率、澄清次数,思考"如果两个指标冲突(成功率高但轮数多)该怎么权衡"。这个练习让你亲身体会到,策略优化的所有争论最后都落在"奖励怎么定、指标怎么权衡"上——这两件事想清楚,策略实现反而是相对机械的工作。