真实面经题目 · 原创解析

多意图识别中如何选择单标签和多标签分类?

多意图识别选择单标签还是多标签,取决于业务动作是否互斥、用户一句话是否可能触发多个独立流程、标注是否稳定以及下游系统能否处理多结果。单标签更简单稳定,多标签表达能力更强但需要阈值、冲突消解和更复杂评估。

出现于:字节跳动 · 算法

60 秒回答模板

判断单标签还是多标签,先看业务定义。如果一句用户输入只能进入一个主流程,意图之间互斥,且下游只接受一个动作,就用单标签分类,通常是 softmax 加交叉熵,输出最大概率类。如果一句话经常同时包含多个诉求,例如查询物流并修改地址,或者意图之间不是严格互斥,就应使用多标签分类,通常是每个标签独立 sigmoid 加 BCE,再通过阈值、top-k 和冲突规则决定输出集合。实际系统也常用混合方案:先选一个 primary intent 保证主流程,再识别 secondary intents 用于提示、澄清或任务编排。评估上单标签看 accuracy、macro F1 和混淆矩阵;多标签看 micro/macro F1、precision-recall、Hamming loss、subset accuracy 和每类阈值效果。

考点 选择标准
难度 真实面经高频题
回答目标 讲清机制、边界和追问

深入解析

01

业务动作是否互斥

如果每个用户请求只能被一个流程消费,标签天然互斥,单标签更合适。例如输入要么是登录问题,要么是支付问题,系统只能路由到一个队列。单标签的优势是训练目标清晰、标注成本低、推理结果稳定,缺点是遇到复合请求时会丢掉次要诉求,可能需要用户再次表达。

02

用户表达是否复合

多标签适合一个输入包含多个相互独立的目标。典型表达是并列句、连续命令或查询加操作,例如既想查余额又想开票。若强行单标签,模型只能选概率最高的一个,另一个真实需求被隐藏。多标签可以保留多个意图,但要求下游系统能排序、并发处理或引导用户逐个确认。

03

模型目标不同

单标签常用 softmax,把所有类别概率归一化,默认类别之间竞争;多标签常用多个 sigmoid,每个标签独立判断是否成立。这个差异会影响样本构造、类别不平衡处理、阈值调优和输出解释。多标签不能简单取最大概率,因为一个样本可能没有意图、一个意图或多个意图。

04

阈值和冲突消解

多标签系统的难点不在模型结构,而在决策规则。每个标签的最佳阈值可能不同,高频意图和长尾意图也需要不同召回策略。还要定义冲突关系,例如退款申请和退款取消不能同时执行;定义依赖关系,例如先识别订单查询,再抽取订单号。没有这些规则,多标签输出会让下游流程不稳定。

05

混合方案更常见

很多生产系统采用 primary intent 加 secondary intents。主意图用于路由和首个动作,次意图用于补充提示、任务队列或澄清。还可以先做粗粒度单标签路由,再在某个域内做多标签识别。这样既保持主流程确定性,又不完全丢失复合需求,适合业务复杂但执行链路需要可控的场景。

易错点

  • 看到多意图识别就直接选择多标签,不判断业务是否真的允许多个动作。
  • 多标签仍用 softmax 和最大概率输出,训练目标与任务假设冲突。
  • 只训练模型,不设计阈值、冲突消解和澄清策略。
  • 用单标签 accuracy 评价多标签任务,掩盖漏召回和部分命中问题。

面试官追问

多标签模型为什么不能直接用 softmax?

softmax 会把类别概率归一化,隐含只有一个类别成立。多标签场景下多个标签可以同时为真,应该让每个标签独立判断,通常使用 sigmoid 输出和二元交叉熵。

如果一句话有多个意图但下游只能执行一个怎么办?

可以输出主意图加候选次意图。主意图负责当前路由,次意图进入澄清、排队或提示。模型层保留信息,业务层按优先级和风险决定执行顺序。

多标签阈值怎么定?

不要只用统一 0.5。应在验证集上按标签调阈值,根据业务偏好选择高精度或高召回,并结合 PR 曲线、误触成本和人工兜底能力确定。

单标签方案如何覆盖复合意图?

可以把最关键动作定义为主标签,再增加复合意图标签或二阶段识别。若复合表达占比高,长期应演进到多标签或任务编排方案,否则用户需求会被系统性漏掉。