一家热闹的餐厅里,资深服务员张姐手里总托着一个巴掌大的小本本。客人一落座,张姐就开始写:老李一家四口,靠窗位,大儿子不能吃辣,改天要订生日宴……客人每多说一句话,小本本上要么添一行、要么改一行。客人说得再乱,张姐都能笑眯眯地接上话。这台机器背后的“张姐”,就是自然语言处理领域里的多轮对话状态跟踪(DST)——它让问答系统不装聋、不忘事,像人一样在一轮轮对话中持续更新“心里的小本本”。 本文就用这张“小本本”做导游,带你认识多轮对话状态跟踪:它解决什么问题、由哪些零件组成、核心算法怎么演变、完整流程怎么跑、如何优化性能、在哪些场景落地、最大的拦路虎是什么,以及最后怎么给系统打分考核。
多轮对话状态跟踪是对话系统的心脏,掌握它,你就能设计出真正“懂你”的客服机器人、AI 助理和购物助手,这是 NLP 工程师、对话系统工程师的核心竞争力。
目录
可视化演示
展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。
本节配有交互动效(进入视口后自动加载,约 3KB)。
系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T
概念内涵:什么是多轮对话状态跟踪
客人推门进来,第一句话往往丢三落四:“明天晚上有空位吗?”张姐的小本本上写下“明晚、问位子”。客人又补一句:“就我和媳妇俩。”张姐再添一行“2 人”。客人接着问:“靠窗还能安排不?”小本本又多出“靠窗”两个字。这不是三个独立问题,而是一件事的三个碎片。多轮对话,就是这样上下文衔接、目标持续演进的连续交流。
所谓状态跟踪(DST),就是让机器在每一轮对话后,维护一张“当前用户目标快照”。这张快照里既有“用户想干什么”(意图),也有“具体条件是什么”(槽位),还包含中间状态,比如“正在确认中”或“已锁定”。它回答的问题是:聊到这一步,用户心里到底想要什么?这和单轮问答的本质差异在于——单轮任务像“一次性快餐厅”,一句话就是全部;DST 则是“长桌宴席”,每句话都是拼图的一块。
从技术角度说,DST 是对话系统流水线的中央处理器。上游的自然语言理解(NLU)负责解读每一句话,DST 负责把新解读与历史记录融合,输出一个统一的、分布式的状态向量。这个状态向量是下游策略模块做决策的唯一依据,因此它的质量直接决定整个对话系统是“聪明”还是“健忘”。
没有小本本的服务员,会对着同一桌客人反复问“几位?吃什么?”;有了小本本的张姐,能在客人改口时立刻接话:“好的,那两位改成明天中午,对吧?”这就是状态跟踪的价值——让对话不再是“一问一答的复读机”,而是“越聊越懂你的老朋友”。
核心组成:状态跟踪的四大模块
翻开张姐的小本本,你会发现每一页都有四栏:第一栏记“客人想干啥”(意图),第二栏记“具体是啥”(槽位),第三栏是“目前确认到哪一步”(状态),第四栏是“我下一步该说啥”(动作)。这四个栏目,正是 DST 系统的四大核心组件:意图识别、槽位填充、状态记录、动作决策。
意图识别判断用户本轮话语的目的:是提出新需求(查询)、补充细节(补充)、推翻之前的说法(修改),还是最终拍板(确认)。槽位填充则从话语中抓取关键信息,比如时间、人数、座位偏好,填进小本本对应的格子里。两者合起来,构成“本轮理解”。
用数学语言描述,第 t 轮对话的整体状态可表示为:
状态记录模块负责把历史状态与新理解合并——时间从“明晚”改成“后天 19 点”,就要覆盖旧值;客人没提座位,就保留“靠窗”。动作决策模块再根据当前状态决定回什么:信息够了就确认下单,不够就追问。四个模块环环相扣,缺了任何一环,小本本都会记成一笔糊涂账。
张姐熟能生巧,扫一眼小本本就同时完成四栏更新。机器也一样,四大模块协同运作,让每一轮对话都有始有终,也互不遗忘。
- 意图变量$i_t$ 表示第 t 轮用户话语的意图标签,取值如“查询”“补充”“修改”“确认”。
- 槽位字典$S_t$ 是一个集合,里面每个元素是一个“槽位名:槽值”对,比如“人数:2”。
- 整体状态$s_t$ 把意图和槽位打包,它就是机器在 t 轮结束后小本本上的完整一页。
关键算法:从小本本到AI大脑
不同服务员的记性不一样:老派服务员靠死记硬背(规则),精明的服务员靠察言观色猜概率(统计),新来的年轻服务员脑子快、能举一反三(神经网络)。DST 的算法演进,恰好就是这三代服务员的更替。
规则模板匹配是早期主流,工程师手写“如果用户说'改成 X',就把日期槽位覆盖为 X”这类规则。它像张姐的“菜品备忘录”——清晰、可控,但换个餐厅就得重写。统计模型方法引入概率思维,典型代表是贝叶斯更新:把对小本本每个格子的把握看作一个概率分布,用每一轮新证据去修正它。神经网络模型则用 RNN、注意力机制直接从小本本的历史状态中学习更新规律,再进一步升级为预训练语言模型驱动的端到端 DST。
贝叶斯状态更新的核心思想,可以用下面这个公式概括:
聪明的服务员不会因为客人说一句就全信,而是综合“客人一贯的改口习惯”和“这句话的明确程度”来更新判断。贝叶斯更新就是这么一套“越聊越有把握”的算法骨架,而神经网络则是自动从数据里学会该怎么调整这个把握。
- 目标得分$P(s_t \mid o^t, s_{t-1})$ 表示“在历史状态和新观测都已知时,新状态是 $s_t$ 的概率”。
- 似然证据$P(o^t \mid s_t)$ 是“如果真实状态是 $s_t$,我们看到这轮话语 $o^t$ 的可能性”,相当于新证据的力度。
- 状态转移$P(s_t \mid s_{t-1})$ 是“从上一状态自然演变为新状态的概率”,用来模拟用户改主意等惯性变化。
- 归一化常数$\eta$ 把所有得分归一化,保证各个状态概率之和为 1,让结果真正成为“概率分布”。
工作流程:一次完整的状态旅程
一场标准的点餐服务,张姐的动作链条是固定的:听清客人的话(输入解析)→ 掏出小本本对照(状态更新)→ 决定接话策略(策略选择)→ 说出合适的回复(回复生成)。机器对话系统的工作流程,就是这条链条的自动化版本。
输入解析即 NLU 模块,把用户语音或文本拆成意图和槽位。状态更新是 DST 的核心环节,用本轮解析结果去刷新小本本。这里有一个关键的操作规则,可以表示为:
策略选择模块根据新状态判断下一步动作:所有关键槽位都齐了,就进入确认并下单;缺了关键槽位,就生成一个追问。回复生成再把动作变成人话:“好的,两位改到后天 19 点,靠窗位,对吗?”用户再说一句,新一轮旅程又重新启动。
每一步都像张姐在客人开口后 0.5 秒内完成听、记、想、答。DST 就是这条流水线上的“记账中枢”,它记得准,后续的应答才有根有据;它记错一笔,后面再流畅的回复都是空中楼阁。
- 旧状态底稿$S_{t-1}$ 是上一轮结束时的小本本内容,比如“日期:明晚、人数:2”。
- 本轮新信息$\Delta_t$ 是 NLU 刚解析出的增量信息,比如“日期:后天 19 点”。
- 合并操作$\oplus$ 定义了如何把增量并入旧状态——新值覆盖旧值、新增项直接添加、未提及项保持不变。
- 新状态产出$S_t$ 是合并后的最新小本本,供下一步策略模块读取。
性能优化:让系统少犯错
张姐也有记岔的时候,比如把“后天”听成“明天”。但她有个好习惯:拿不准的时候,她会主动追问一句“您是说后天,对吗?”——这就是对话系统里最实用的优化思路:把不确定性摆到台面上。
DST 的性能瓶颈主要来自三方面:错误累积(前面记错,后面越错越远)、不确定性被忽略(系统明明没听清,却硬要装懂)、数据效率低(学一个新领域要重新标注海量对话)。对应的优化策略也清晰了:引入规则修正与澄清机制来打断错误链条;对信念状态做不确定性建模,让系统知道自己“几斤几两”;用少样本学习、预训练迁移来降低新场景的数据需求。
衡量系统“是否知道自己在不确定”的经典工具是信息熵。设当前信念状态为 $b(s)$,则其不确定性为:
聪明的系统不是永远自信,而是知道自己何时该问。把熵阈值设好,DST 就能在该确认时确认、该决策时决策,整体成功率比“盲猜装懂”高出一大截。
- 信念概率$b(s)$ 表示系统认为“真实状态是 $s$”的概率,例如“日期是后天”有 0.7 把握。
- 对数惩罚$\log b(s)$ 给高把握低分数(把握越接近 1,这项越接近 0),给低把握高惩罚。
- 逐项求和对所有可能状态求和,把每个状态的不确定量加在一起。
- 取负号负号让结果变成非负的“混乱程度”。熵越高,说明系统越没底,应当善意向用户澄清。
实际应用:落地场景全景
张姐的服务能力,不只在普通餐厅管用。把她派到火锅店,她能记住客人的辣度;派到酒店前台,她能记住入住和退房日期;派到营业厅,她能记住套餐变更需求。DST 的落地场景,正是这样一个个“专用小本本”。
智能客服是 DST 最成熟的战场。用户在售后场景里常这样说:“我上周买的手机,充电口好像松了,能换吗?”客服机器人需要同时跟踪“商品:手机、问题:充电口损坏、诉求:换货、时间:上周”四个槽位,还要在用户补充“哦对,是红色那款”时,把颜色信息追加进状态字典。没有 DST,机器人会不断重复提问,用户体验直线下降。
购物助手则是 DST 的增量战场。用户挑选笔记本电脑时,会陆续提出“要轻薄本”“预算 6000 以内”“最好带独显”等条件,DST 把这些偏好槽位逐轮累积,形成完整的筛选条件集,再结合多轮推荐反馈进一步精化。订票服务更是标准的“槽位密集型”任务:出发地、目的地、日期、舱位、是否中转,任一槽位缺失都难以成交。DST 在这里的任务就是锲而不舍地把一个空槽位补全、把冲突槽位对齐。
三个场景的共同点,是“信息散落在多轮话语里,必须靠状态跟踪拼成完整画像”。张姐走到哪都能干,是因为她手里那本小本本的栏位会随场景变化——这正是 DST 的核心工程能力:场景化的槽位设计 + 稳定的跟踪机制。
挑战与对策:难缠客人的应对之道
就算是张姐,也会遇到难缠的客人:有人说“还是原来那个位吧”,不翻前面记录根本不知道“原来”是哪桌;有人说话带口音,语音识别结果里经常出现错字;还有人今天订中餐、明天就问西餐,跨领域信息让小本本不够用。这三个老大难,对应 DST 的三大挑战:指代消解、噪声容错、多领域扩展。
指代消解要求系统能理解“它”“那个”“老位置”这类词背后的实体。对策是把“共指信息”也纳入状态跟踪:每轮不仅更新槽位,还要同时更新“指代链”,把新指代连接到历史实体上。噪声容错则要靠“多假设保留”:语音识别可能给出多个候选句,DST 不再只信第一名,而是对每个候选计算状态得分并加权融合,用集体智慧冲淡单个错误。多领域扩展如今主要靠预训练模型扛旗——先在大量通用对话上预训练,再在特定领域轻量微调,让“小本本”换场景时不用从零学起。
这些对策并不是孤立的。指代消解降低了误填槽位的概率,多假设融合天然就是不确定性建模的同伴,预训练迁移则直接提升了数据效率。它们合起来,就是一套“让张姐在复杂宴席上依然不慌”的组合拳。
没有这些对策,DST 在真实噪声环境里会迅速崩盘——一句识别错误就污染整个状态,再往下全是“一本正经地胡说八道”。而有了它们,系统才能在最嘈杂的现实世界里持续提供稳定服务。
评估与指标:如何考核DST
餐厅经理怎么考核服务员?不是看谁说话甜美,而是看“有没有把每桌的要求准确送达后厨”。DST 的考核逻辑完全一致:它维护的小本本跟客人真实意图对不对得上。这里最核心的指标,就是联合目标正确率(JGA)。
JGA 要求“全对才算对”——某一轮所有槽位都被预测正确,这一轮才记 1 分;任何一个槽位出错,整轮记 0。其计算公式为:
除了 JGA,工程上还会看槽位准确率(每个槽位单独计算正确率,更宽容)、对话成功率(整场对话最终是否达成用户目标,更宏观)。三把尺子各有侧重:JGA 严苛但能精细定位问题,槽位准确率便于诊断是哪个字段老出错,对话成功率则直接反映业务价值。面试和实战中,三者常常一起上阵,像餐厅经理同时看“错菜率”“单道菜合格率”和“客人满意度”一样。
- 每轮对比$\hat{S}_t$ 是系统第 t 轮预测的状态,$S_t$ 是人工标注的真实状态,二者需完全相等。
- 指示函数$\mathbb{I}(\cdot)$ 是一个“开关”——内部条件成立时取 1,不成立时取 0。
- 累加得分把 T 轮对话里每一轮的 0/1 结果全部加总。
- 取平均值除以总轮数 T,得到 0 到 1 之间的比例,数值越高说明状态跟踪越准。
AI 应用场景
智能客服工单预填系统
阶段:对话理解与状态管理
解决的问题:传统客服系统需要用户手动填写冗长的工单表单,且用户口语化描述难以结构化。基于 DST 的机器人能从“我上周买的手机充不进电,想换个新的”这类话里自动跟踪商品、故障类型、诉求、购买时间等槽位,并在对话中逐步补全缺失字段,直接把工单预填完成,客服人工只需审核。
具体案例:某电商平台的售后机器人,通过 DST 跟踪“订单号 → 商品 → 问题描述 → 期望方案”四条槽位链,并用澄清策略确认识别置信度低的字段。上线后工单平均创建时长从 4 分钟降到 40 秒,用户重复描述率下降 70%。
旅游订票多轮洽谈助手
阶段:槽位管理与交叉验证
解决的问题:订机票、订酒店天然是“条件逐步细化”的多轮任务,传统表单式交互无法处理“先查后天去北京的航班,哦不对,是下周一的”这类改口。DST 支持槽位覆盖、条件新增和意图切换,让用户像跟真人代理聊天一样完成预订。
具体案例:某旅行 App 的语音购票助手,用户连续说“周五下午去上海”“要靠窗”“回来订周日早上的”,DST 将日期、座位、往返航班等槽位逐轮维护,最终一次确认即出票,误订率低于 3%。
银行智能语音导航员
阶段:意图识别与状态持久化
解决的问题:银行电话客服的菜单层级深,用户经常“跳着说”需求和补充条件。DST 在语音场景下结合多假设保留与噪声容错,跟踪用户的业务类型、身份验证状态、具体业务参数,让系统能在用户绕开菜单时仍然正确响应。
具体案例:某银行语音机器人支持“我要查余额……顺便把上个月账单发我邮箱”,DST 同时维护“业务类型:查询余额”和“附加任务:发送账单”两个状态分支,并完成邮箱槽位的追问与确认,转人工率下降 35%。
Python 演示
# -*- coding: utf-8 -*-"""多轮对话状态跟踪 - 基于规则的简易演示(餐厅点菜小本本)""" class RuleDST: """一个用字典充当"小本本"的规则式状态跟踪器""" def __init__(self): self.state = {} # 状态字典:槽位名 -> 值 self.turn_count = 0 # 已处理轮数 self.rules = [ ("人数", ["个人", "个位", "两位"]), ("日期", ["明天", "后天", "明晚"]), ("座位", ["靠窗", "包间"]), ] def parse_intent(self, text): """用关键词判断用户本轮意图:查询/补充/修改/确认""" if "改" in text: return "修改" if "要" in text or "想" in text: return "补充" if "吗" in text or "?" in text or "?" in text: return "查询" return "确认" def extract_slots(self, text): """按规则表提取本轮出现的槽位值""" found = {} for slot, keys in self.rules: for key in keys: if key in text: found[slot] = key break return found def merge(self, slots): """把新信息合并进状态字典(新值覆盖旧值)""" for k, v in slots.items(): self.state[k] = v def update(self, utterance): """核心入口:解析意图 + 提取槽位 + 合并状态""" self.turn_count += 1 intent = self.parse_intent(utterance) slots = self.extract_slots(utterance) self.merge(slots) return { "turn": self.turn_count, "intent": intent, "new_slots": slots, "state": dict(self.state), } def simulate(): """模拟一场四轮点餐对话,打印每轮状态""" dst = RuleDST() dialogues = [ "明天晚上还有位吗?", "我要两个人,靠窗的位置", "改到后天晚上吧", "好的,就订这个位", ] for text in dialogues: result = dst.update(text) print("用户: {0}".format(text)) print("状态: {0}\n".format(result["state"])) if __name__ == "__main__": simulate()
self.state = {}初始化“小本本”,用字典保存当前所有槽位,是状态跟踪的核心数据结构。self.turn_count = 0计数器加_count后缀,避免与任何方法重名,保证类属性不会遮蔽方法。def parse_intent(self, text)通过关键词粗略判断本轮意图,模拟 NLU 的意图识别组件。def extract_slots(self, text)遍历规则表,从一句话里抓出“人数”“日期”“座位”等槽位值。def merge(self, slots)实现状态合并操作:新值覆盖旧值、不存在的槽位直接新增。def update(self, utterance)每轮调用的总入口,返回本轮意图、新槽位和合并后的完整状态快照。result["state"]打印完整的“小本本内容”,直观观察状态如何逐轮累积和覆盖。if __name__ == "__main__":保证simulate()只在直接运行时执行,供测试和二次开发复用。
常见误区
误区多轮对话不就是让模型多跑几次单轮理解吗?每句话单独分析,反正意思都一样,最后拼起来就行。
正解这是对“多轮”最深的误解。多轮的核心在于跨轮状态依赖——“还是原来那个位吧”这句话单独看毫无信息量,必须结合历史状态中的“上次订的桌号”才能理解。跳过 DST 直接做单轮拼接,等于让张姐每轮都失忆,客人说什么都像第一次听。真正的多轮系统必须有一个持续更新的状态载体,把散落的线索串成完整目标。
为何常见:许多 NLP 任务(情感分类、文本摘要)确实是单句独立的,初学者容易把“多轮”误以为是“多次单轮”。
误区为了不丢失信息,把所有用户提到过的细节都塞进状态里,槽位越多越放心。
正解状态空间过大会带来三重代价:决策变慢、噪声累积、迁移变难。真实系统会做槽位设计,区分“任务关键槽位”(日期、人数)与“可丢弃的临时槽位”(随口一提的偏好),并设置状态存活期。张姐的小本本也不是每句话都记,记多了反而看不清重点。
为何常见:人们天然怕“漏信息”,直觉上越多越好,忽略了系统资源与决策效率的约束。
误区DST 就是填表格,把槽位填满就算完成任务,意图识别是多余的。
正解意图决定状态以何种方式更新。同样是“后天”这个词,出现在“改到后天”(修改旧值)和“后天还有位吗”(新增查询条件)里,更新语义完全不同。没有意图标签,状态合并规则就没有依据,小本本会越记越乱。意图与槽位是“方向盘与仪表盘”的关系,缺一不可。
为何常见:槽位看起来是硬信息、意图显得抽象,初学者容易低估意图对更新机制的驱动作用。
误区既然现在深度学习这么火,DST 直接上神经网络准没错,规则方法过时了。
正解模型选择要看数据条件。冷启动、标注数据极少时,规则模板靠人工知识反而稳定可解释;神经网络需要大量高质量对话标注,数据不足时过拟合严重。成熟的工业系统常采用“规则兜底 + 神经网络主推”的混合架构。新服务员要先背熟菜单,才能学着察言观色。
为何常见:近年来深度学习的“光环效应”让初学者忽略了数据成本与可解释性等现实约束。
误区对话里用户确认过的事情就锁死了,后续轮次不应该再变动,否则说明系统不稳定。
正解现实对话中意图漂移非常常见——用户可能先订明天,又改成后天,最后干脆取消。DST 必须支持覆盖、新增、删除和置信度回落,把“改主意”当作正常输入而不是异常错误。小本本上的字永远用铅笔写,随时可擦改。
为何常见:“确认过就是事实”的单轮思维,不符合真实对话的动态性。
面试题
Q1. 多轮对话状态跟踪(DST)的核心任务是什么?
- A.记录用户的历史发音内容
- B.追踪用户目标并维护槽位← 正确答案
- C.生成更流畅的自然语言
- D.提高语音识别的准确率
答案:B。DST 的核心是实时维护“用户当前目标”的状态快照,即意图与槽位集合。选项 A 是语音层面的记录,C 是自然语言生成(NLG)的职责,D 是语音识别(ASR)的优化目标,均与 DST 的“状态维护”本质不符。
Q2. 用户说“我要靠窗的座位”,其中的“靠窗”属于槽位填充中的什么?
- A.意图标签
- B.槽位名称
- C.槽位取值← 正确答案
- D.对话动作
答案:C。“靠窗”是具体的位置偏好值,“座位”才是槽位名称,而“我要”表达了补充意图。槽位填充的任务是给“座位”这个槽位填入取值“靠窗”,因此 C 正确,A、B、D 分别混淆了意图、槽名和动作概念。
Q3. 多轮对话与单轮对话最本质的区别是什么?
- A.用户每轮输入的长度更长
- B.系统的响应速度要求更高
- C.是否维护跨轮的对话状态← 正确答案
- D.是否使用语音识别模块
答案:C。单轮任务每句话独立理解即可,而多轮对话必须通过状态跟踪把历史信息与新信息融合,否则无法处理指代和省略。输入长度、响应速度、是否用语音都只是外围特征,不构成“多轮”的本质。
Q4. 信念状态中置信度 b(s) 的主要作用是什么?
- A.表示生成的回复文本长度
- B.表示状态 s 为真的概率大小← 正确答案
- C.表示槽位在数据库的索引
- D.表示用户话语的字符数量
答案:B。置信度 b(s) 是系统对“真实状态为 s”这一判断的定量把握,是贝叶斯更新与不确定性建模的基础。它既不是文本属性,也不是数据库索引或字数统计,因此 B 正确。
Q5. 下列哪些属于常用的 DST 建模方法?
- A.基于规则的模板匹配← 正确答案
- B.基于统计的贝叶斯更新← 正确答案
- C.基于神经网络的模型← 正确答案
- D.基于随机采样的猜测
答案:ABC。规则模板、贝叶斯统计、神经网络(RNN/注意力/预训练模型)是 DST 三代主流方法。随机采样没有学习与推理逻辑,不能称为对话状态跟踪方法,因此 D 排除。
Q6. 联合目标正确率(JGA)衡量的核心是什么?
- A.每轮所有槽位都预测正确← 正确答案
- B.只衡量主要槽位是否正确
- C.衡量生成回复的流利程度
- D.衡量模型单轮推理速度
答案:A。JGA 要求某一轮所有槽位与真实标注完全一致才记 1 分,任何槽位出错整轮归零,是 DST 最严格的评估指标。它不关注回复质量,也不关心推理速度,B、C、D 均不是 JGA 的语义。
Q7. 用户说“抱歉,改成后天吧”,DST 应如何更新日期槽位?
- A.保留原日期并同时新增新日期
- B.用新日期覆盖掉旧日期← 正确答案
- C.忽略本轮所有信息
- D.清空所有槽位信息
答案:B。“改成”是典型的修改意图,表示用户否定了之前的日期选择。状态合并规则中“修改意图触发覆盖”,因此新日期应替换旧日期。若同时保留两个值会导致状态歧义,忽略或清空则丢失上下文,A、C、D 都不合理。
Q8. 循环神经网络(RNN)用于 DST 的优势有哪些?
- A.擅长建模变长的对话序列← 正确答案
- B.能记忆历史轮次的状态信息← 正确答案
- C.天然支持样本间并行加速训练
- D.可建模槽位之间的依赖关系← 正确答案
答案:ABD。RNN 按时间步处理序列,天然适合变长对话并保有隐状态记忆,同时其隐层可以隐式编码槽位间依赖。但 RNN 的逐步计算使其难以像 Transformer 那样并行训练,因此 C 错误。
Q9. 贝叶斯状态更新中,P(o^t | s^t) 这一项表示什么?
- A.状态的先验分布
- B.观测的似然概率← 正确答案
- C.状态的后验分布
- D.归一化常数部分
答案:B。在公式 P(s_t|o^t,s_{t-1}) = η·P(o^t|s_t)·P(s_t|s_{t-1}) 中,P(o^t|s_t) 是“给定真实状态 s_t 时观察到话语 o^t 的可能性”,即似然项。先验是 P(s_t|s_{t-1}),后验是等式左边,η 是归一化常数,因此 B 正确。
Q10. 下列哪些策略能有效降低 DST 的错误累积?
- A.引入置信度阈值触发澄清← 正确答案
- B.主动向用户追问不确定信息← 正确答案
- C.对信念状态做不确定性建模← 正确答案
- D.每轮直接丢弃历史状态信息
答案:ABC。置信度阈值、主动澄清和不确定性建模共同组成“知错就改”机制,能在错误扩大前打断链条。而丢弃历史状态会让系统失忆,多轮对话无从谈起,D 是错误选项。