许多小模型与一个大模型

Many small models vs. one big model

我目前正在使用聊天机器人实施一种调查问卷,并使用 LUIS 来解释答案。这份问卷分为大概 20 个问题。

现在想到以下问题:哪个选项更好?

  1. 我为每个问题制作一个 LUIS 模型。由于这些问题可以包含隐含的子问题(即 "Do you want to pay all at once or in rates" 可以包含 "How high should these rates be?"),我最终每个问题可能有 3-5 个意图(包括 None)。
  2. 我可以每个段制作一个模型。让我们假设这是可能的并且适合每个模型的 80 个意图。

我的第一直觉是认为第一个替代方案更好,因为它应该更健壮。当只有 5 个意图可供选择时,可能更容易确定正确的意图。据我所知,您可以拥有多少个模型没有限制(...这是正确的吗?)。

所以这是我要问的问题:还有哪些 benefits/drawbacks 并且可能有一个客观上最好的选项?

您可以拥有任意数量的模型,对此没有限制。但是关于你的问题的其余部分:

您打算使用 LUIS 来解释每个响应?我很好奇问卷的实际设计以及为什么您需要(或想要)开放式回答而不是多项选择题。 "Do you want to pay all at once or in rates"本身就是一道二元题。从这个分支出发,用户可能会响应 "Yes I want to pay all at once",这可能会使用 LUIS。或者他们可以用 "rates" 来响应,这可能是 Prompt/FormFlow 中用户可用的两个选项之一。 "rates" 也比第一个答案短得多,因此可能会更频繁地输入一个选择。

多项选择题提供标准化的输入,这将减少您在管理数据时必须做的工作量。它还很可能会减少维护模型和问卷所需的工作量。

客观地说,一个模型更可能是少工作,但我们可以再深入一点:


第一个选项:

如果您的问卷段包含 20 个问题并且您有 2 个段,则您需要维护 40 个单独的模型,这是一场噩梦。 此外,您可能会遇到延迟问题,具体取决于您的识别器顺序,因为您必须等待来自 40 个端点 的响应。这表示可以关闭识别器,因此您可能只需要等待一个识别器。但是你需要手动打开下一个识别器并关闭前一个。您还应该意识到处理多个 "None" 意图是一场噩梦,以防您希望让每个识别器都处于活动状态。

我假设您在意识到自己处理 40 个模型的痛苦之后需要帮助来管理您的模型。您可以添加协作者,但随后您还需要将他们添加到多个模型中。总有一天,您将(可能)不得不将它们从所有具有合作者状态的模型中删除。

第一个选项更可靠,但也涉及相当多的工作时间。你是部分正确的,因为更少的意图是有帮助的,因为模型预测的可能性更少。但是随着话语和标签的增多,您的模型的预测会变得更加准确,因此每个模型有 5 个意图所获得的任何好处很可能变得毫无意义。


第二个选项:

如上所述,每个细分使用一个模型可以减少工作量。维护工作较少,但有哪些缺点?在您训练模型足够好之前,可能确实会因误报预测而产生一些意想不到的后果。也就是说,您可以在 questionnaire/bot/questionnaire-bot 的代码中考虑到这一点,以专门查找问题的预期意图,然后如果得分最高的意图总体上与您的意图不匹配,则使用该子集中得分最高的意图问题。

另一个失败是,如果它是一个模型,而合作者犯了一个灾难性的错误,它会影响整个细分市场。对于多个模型,错误只会影响一个 question/model,所以这是一个加号。

除了不必处理多个 None 意图处理之外,您还可以快速标记 应该 属于 None 意图的话语。您在单个模型中标记为意图的内容本质上使它在模型内部的其他意图中更加突出。如果您有多个模型,在一个模型中触发特定意图的答案需要在您的其他模型中触发 None 意图,否则,您最终会得到多个高分意图(以及 relevant/expected 意图可能不是最高得分)。


结束:

我推荐第二个对象,只是因为它工作量少。此外,我不确定问卷的目标,但作为一般规则,我质疑是否有必要在不需要的地方加入人工智能。 Here 是一个 link,讨论 不会 有助于机器人成功的因素(请注意,自然语言是这些因素之一)。