基于信息价值的提问选择:Agent 如何决定继续问什么
发现引擎中的问答调度:用决策收益与提问成本,选择下一问或停止追问。
在 ToWow 的合作发现研究中,我们关心这样一类任务:一个人提出需求,Agent 帮助梳理条件、寻找参与者,再形成可讨论的合作方案。这个过程中,系统常常还缺一些信息,例如候选人有没有设备、时间是否合适、谁有权作决定。缺少信息不意味着所有问题都要问一遍;每一次追问都要占用人的时间,也可能延迟下一步行动。
本文介绍发现引擎研究实现中的提问选择函数 select_voi_question。它接收一组候选问题,以及每个问题改变决定的价值估计、概率估计和统一的提问成本;输出一个值得优先问的问题,或者返回“这一轮不再问”。它借用了信息价值(Value of Information,VOI)的思路,采用的是简化乘积规则。问题内容和估计值由上游提供,这个函数负责选择,并不生成问题或自己估计收益。
理解这项机制,需要弄清三个相连的判断:一个答案会改变哪项决定,这种改变值多少,以及获得答案是否比直接往前走更划算。下面用一场修理活动的人员选择来逐步计算。
提问场景:补问设备能力,还是确认通知渠道
用一个教学情境来看。某个社区准备办一场小型修理活动,需要找人维修居民带来的旧电器。现在有两位候选师傅。一位离得近,另一位工具更齐。组织者只有很短的时间补问信息。
系统想到两个问题。第一个是“近处的师傅有没有检测电路的设备?”它可能直接改变选谁。第二个是“参加者更方便接收短信提醒,还是群消息?”它能帮助选择通知方式,但眼下大多数参加者已经确认了安排,调整提醒带来的收益比较小。
我们先假设,确认设备情况有四成机会改变人员选择;发生这种改变时,预期收益记为 100 个教学用的价值单位。询问提醒渠道有八成机会改善通知方式,收益记为 10。同一轮提问的成本记为 15。这里所有数字都为演算而设,价值单位只用来比较本例的安排,不是系统从居民身上算出的价格。两项价值都指有用的改善,不把“改了主意”本身算成好处。
第一个问题的分数是 100 × 0.4 = 40,第二个是 10 × 0.8 = 8。算法会挑设备问题,因为 40 更高,而且高于这一轮的成本 15。
提醒渠道更有可能因回答而调整,但它在当下带来的收益较小。算法因此没有单凭“更可能改变决定”选择问题,而是把改变的价值也算了进来。
| 教学问题 | 改变决定时的价值估计 | 改变概率估计 | 相乘结果 |
|---|---|---|---|
| 师傅有没有检测设备 | 100 | 0.4 | 40 |
| 用短信还是群消息提醒 | 10 | 0.8 | 8 |
读这张表时,应先看左边的决定,再看数字。没有“它会改变哪项决定”,后两列很容易成为精致的猜测。

选择规则:按估计收益排序,并与提问成本比较
把信息与决定联系起来,有很长的研究历史。Ronald Howard 在 1966 年讨论信息价值时就指出,衡量不确定性还不够,需要同时考虑结果对决策者的影响;多项信息合在一起的价值,也可能不同于各自价值的简单相加。Information Value Theory[1]
发现引擎的实现采取了更简化的办法。每个候选问题携带两个输入:改变决定的价值估计,以及这种改变发生的概率估计。代码将两者相乘,把问题按分数从高到低排好。排第一的问题只有在分数严格高于本轮成本时才会被选中。
写成一行,就是:
提问分数 = 改变决定的价值估计 × 改变概率估计
这是一条受信息价值思想启发的简化规则。它没有枚举问题的每种答案,没有为每个答案重新寻找最优行动,也没有自行学习概率。价值和概率都需要由使用它的上游过程提供。
为什么这个差别重要?假设某问题很容易让人改变主意,但改变后的主意经常更糟。“改变”本身不能算收益。输入的价值应该描述有用的决策改善,而不能只是决定发生变化。当前函数不会替调用者检验这一层含义;如果输入者混淆了它,乘法仍然会顺利完成。
停止条件:最高收益不超过成本时,不再追问
回到设备问题。如果组织者已经从一张设备照片里基本确认了答案,继续询问改变人员选择的概率可能只剩 0.1。同样的价值 100,分数就变成 10,低于成本 15。这一轮没有值得选的问题,函数返回空结果。
这并不等于修理活动取消了,也不等于其余问题永远不重要。它只说明,按当前估计,继续这轮问答不划算。组织者可以使用已有信息往前走,或者换一种更便宜的获取方式,例如查公开设备清单。
还有一个容易忽略的边界:分数恰好等于成本时,当前实现也不选。它使用的是“大于”,不是“大于等于”。如果同一轮提问成本从 15 降到 5,分数为 10 的设备问题又会进入可选范围。这里改变的不是问题内容,而是获得答案所需的条件。
这让成本成为一个有意义的设计变量。缩短问卷、允许当事人直接上传材料、复用已有回答,都可能改变哪类问题值得问。不过这些做法能降低多少成本,需要在真实任务里测量;一条阈值规则本身不能提供这个数字。
适用限制:估计误差与相互依赖的问题
这段算法最容易失手的地方,恰恰藏在它看起来最方便的输入里。概率从哪里来?收益对谁成立?等待十分钟、打扰一个人和多花一次模型调用,是否已被换算到同一尺度?当前代码没有回答这些问题。
它还一次只评一个问题。有些信息只有组合起来才有用:知道师傅有设备,但不知道能否到场,仍然无法选人;两个答案一起到齐,决定才会改变。逐个问题的分数可能都不高,却遗漏了值得连续问的两步。面对这样的任务,可以把一组互相依赖的问题作为整体比较,或使用更完整的序贯决策方法。是否值得增加这层复杂度,要看漏问造成的实际损失。
现有实现能清楚展示一种行为:同一批候选问题中,优先选择估计收益最高且超过成本的那个。它适合做一个可解释的调度起点,实际收益还需要在合作任务中测量。
这也确定了我们真正要观察的效果。不能只数系统少问了几个问题,还要看最终决定有没有变差。如果一个系统通过漏掉必要确认,把平均问答轮数减半,那并没有完成原来的任务。
对读者而言,这条短规则留下了一个可以立即使用的习惯:准备继续问之前,先写清答案会改变哪一步。如果连这一点都说不出来,最值得调整的可能是问题本身。
实现与演算说明。 本文解释发现引擎 VOIQuestion 与 select_voi_question 的实际规则;教学数值已单独复算。同分按问题编号排序。实现只接受调用方给出的价值、概率与统一轮次成本,不负责估计它们。源代码:catalyst.py(实现定位保留于编辑档案)。本例不对应真实社区活动记录。
引用链接
[1] Information Value Theory: https://ieeexplore.ieee.org/document/4082064/