在 Architect 中构建自动程序的最佳实践
机器人技术概述
与任何高级机器学习工具一样,Genesys Dialog Engine Bot Flows 的工作原理是从多个示例中学习,然后进一步定义以对以前看不见的类似案例进行分类。 机器人从示例中学习,而不是从规则中学习。
这种方法的优势包括:
- 输入语言的灵活性和看不见的数据计算。 该机器人会根据之前的对话进行猜测。
- 统计置信度评分,以便您知道机器人响应与响应的确定性。
- 正常降级,这不是通过或失败的方法,而是对嘈杂的数据逐渐失去确定性。
机器学习方法是有代价的: 您可能没有预先确定的所有投入的结果。 人工智能(AI)的决策基于其自身的计算和结论,而不是来自直接命令。 学习示例会使引擎偏向正确的答案,但并不总是能保证答案。
本文就模型偏差转移中低风险和高风险的模型变更类型提供了一些指导。 有关更多信息,请参阅 关于 Genesys Dialog 引擎机器人流程 和 Genesys Dialog 引擎机器人流程定价。
设计模型时,请考虑以下系统功能:
- 转发功能: 如有必要,配置座席可用性以接收语音、消息或聊天交互。
- 内置功能:
- 通过做一个假设并要求确认或否认拟议的意图来确认不清楚的陈述。
- 在采取行动之前填写插槽,并可选地填写意图和所需详细信息的插槽确认。 内置插槽包括日期、时间、货币和数字。
- 自定义槽类型允许您定义槽类型并使用它们来映射插槽。 Architect 支持三种自定义槽类型:
- 列表类型
- 动态列表类型
- 正则表达式 (regex) 类型
- 能够提出后续问题,包括:
- 是的,没有问题
- 插槽填充问题
- 可选择过滤问候语。
- 查看事件处理行为以清楚起见。 例如,错误事件、识别失败和座席升级。
定义 Intents 时,请牢记以下准则:
定义潜在意图的措施项
- 列出你希望机器人覆盖的行动物品。
- 评估这些请求和相应的示例是否适合机器人:
- 案例是否明确定义?
- 这些例子是否分享了机器人可以用作学习锚点的词汇?
- 潜在请求的示例差异是否足够大?
- 你能提供足够明显的例子吗? 最佳实践建议使用15到30个示例。
- 查看现有数据并确定您的清单与实际案例的比较情况。
- 确保你的定义有明确的界限,不要重叠。
- 如果你有介于意图之间的示例,请决定你喜欢它们去哪里,然后重绘意图定义边界以适应它们。
- 首先准备一个较小的、最重要的意图清单。 在将来的迭代中,您可以扩展运作良好的概念验证模型。
使用一致的 Intent 命名模式
- 将 Intent 名称配置为在提示句中起作用;例如,“我认为您对 [intent name] 感兴趣”。
- 确保所有意图都符合模式。
- 如果可能,请使用较短的名称。 这一点对于语音机器人尤其重要。 包含长意图名称的确认、消除歧义和提示不能很好地胜过语音。
- 使用适合提示语法的简短但自然的措辞。
- 根据用例,在每个 Intent 的默认提示和自定义提示之间进行选择。
- 确保自定义和默认提示简短。
在提供 Intent 示例时,请考虑以下最佳实践指南:
- 每个意图至少提供 20-30 个典型示例。
- 确保提供意图变体,例如:
- 以人们可以提出的问题或陈述的形式包括各种内容。
- 添加表示意图的关键字。
- 添加短语和完整句子。
- 为 Intent 的操作添加同义词;例如,预订酒店、预订房间和进行预订。
- 如果你有多个 Intent 共享同一个词典,请确保在两边都提供足够平衡的示例,并优先考虑区分这两种意图的示例短语。 例如: “给医生留言” 和 “去看医生”。 包括区分同一名词不同动作的动词有助于正确学习。
- 如果 Intent 有空隙要填充,请确保您:
- 定义插槽和插槽类型。
- 包括复数值和同义词。
- 在意图示例短语中标记实体。
- 为每个插槽选择默认或自定义提示。
- 在提示中,提供内置插槽格式的说明或示例。
定义图元时,请牢记以下指导方针:
- 定义填补空缺的信息类型,以执行意图操作或为客户旅程提供信息。
- 如果可能,请创建不重叠的槽类,并询问:
- 采取行动或机器人路由是否需要这些信息?
- 这些信息是否会被保存并在客户旅程中使用?
- 如果您对以下问题回答 “是”,请考虑为数据选择不同的策略:
- 这些信息很难捕获吗? 它是否过于冗长,是否有太多选择的措辞可能会阻止机器人引导客户朝着正确的方向前进?
- 如果机器人没有捕获这些数据,Intent 分类是否会失败?
- 不同的策略可以是不需要的实体槽、仅在存在且未提示时才选择的实体槽,或者作为不同意图捕获的实体槽。
- 避免使用具有各种无法预料的插槽值的普通插槽。
- 避免公开的提示性问题,例如如何或为什么。 相反,依靠引导客户选择有限的选项。
- 考虑二进制问题以获取信息;例如,使用内置的 “是” 或 “否” 问题来询问插槽)。
提供实体示例时,请考虑以下最佳实践指南:
- 在 Intent 训练集中,你至少需要两个突出显示的槽值示例。
- 如果你的训练集中有插槽示例,请尝试突出显示所有或大多数情况,特别是常见的值和同义词。
确保创建符合以下条件的提示:
- 简短明了。
- 非常适合潜在的默认意图或插槽名称插入的语法。
考虑一下语音机器人所需的变化和调整。
- 意图 没有必要改变数字格式。 但是,请确保您知道语音转文本组件返回的数字格式,并确保在意图中表示该格式。
- 提示 确保用简短且最少的单词选择来构建语音提示。 与短信不同,您无法再次查看它们。 最佳实践建议使用简单和简短的语音提示,使用少于或少于三个单词,不要重复。
本节介绍测试集建议、语音机器人测试指南以及文本或语音机器人引擎测试指南。
测试集推荐
基于机器学习的机器人应该通过添加示例和重新平衡训练集来进行多次测试和校正。 最佳实践建议您根据真实的客户语音创建一个经过深思熟虑的测试集,并在每次迭代中重复使用该测试集以查看改进。
为了获得最佳结果,建议通过模拟调用进行端到端机器人测试和基于一组预定义测试示例的仅限 NLU 的测试。 如果你有意图频率信息,或者知道哪些案例对你的业务更重要或更重要,请确保在测试集中很好地描述它们。
语音机器人测试
以下准则可帮助您确定自动语音识别是否会影响性能。 在测试过程中,请确保你的意图示例以不同的声音和环境表示:
- 世代词典的差异
- 区域方言自动语音识别 (ASR) 理解
- 性别代表性。 例如,音高较高的声部的声学范围较小,ASR 引擎可能更难理解)
- 嘈杂的环境测试,例如电话、有交通或电视噪音的电话在后台。
机器人引擎测试(文本或语音)
- 为每个意图使用变体。 例如,“我明天需要一个房间。” 或 “我想为明天预订房间”。
- 意图不明确的测试用例。 例如,边界问题、意图之间的词汇重叠、在不同详细程度上询问的意图。
- 使用单关键字或短语语句测试模型。
- 使用带插槽和不带插槽的 Intents 测试模型。
- 检查一般的词语是否会产生强烈的偏见。 例如,“为什么” 或 “帮助我” 这两个词是否会自动选择一个意图而不是另一个意图? 在这种情况下,建议的纠正措施是通过在适用的情况下将这些词添加到其他 Intents 中来平衡模型。
- 确定共享关键字是否会产生强烈偏见 例如,银行意图中的 “账户”。 在这种情况下,建议的纠正措施是确定默认值,然后加强子案例。
在测试后分析期间,查看需要改进的领域,评估模型测试的成功率,并与学习小组合作。
查看以进行改进
训练和测试机器人后,请查看有待改进的方面。 在 Intent 分类中使用置信度信息来诊断问题并指导改进:
如果高度可信地假设错误的意图:
- 在你的测试示例中,是否有重要的词语暗示不止一个意图?
- 是否应该重新定义意图边界、合并或清理过于相似从而混淆模型的意图中的示例?
如果假设错误的意图是低置信度:
- 这个例子是 “典型” 的例子吗? 请遵循本文前面提到的准则。
- 这个例子是 “边际的” 吗? 首先关注核心示例。 修复这些示例后,您可以使用 Intent 示例来解决边界案例。
如果中心意图示例的可信度低于确认阈值:
- 查看意图定义以及相关或相似的意图。 定义和词汇重叠太大了吗? 意图之间是否存在过于相似的潜在合并? 你应该删除一些 “竞争意图” 的例子吗?
- 这个例子是 “边际的” 吗? 如果意图定义中存在的示例较少,或者如果其他 Intent 共享相似的情况,则可信度可能会降低。
- 如果之前的积分不适用,您可以向下调整确认阈值。
评估模型测试的总体成功程度
- 评估你的意图与测试用例的相关性,并在缺少任何中心用例时进行调整。
- 将注意力集中在关键短语上,而不是杂乱的内容上。 如果您使用真实数据,请考虑是否对测试进行相关更改,例如最小化句子的措辞。
- 考虑是否包含更多的训练示例;例如,语法变体和同义词。
- 平衡您的意图,以便消除常用短语和共享关键字中的现有偏见。 如果示例包含干扰 Intent 解析的强烈偏见,请将其删除。
使用学习面板
学习面板旨在帮助改进模型。 您会看到意图分类的真实用例,并且可以更正分类。 但是,请记住,模型在经过良好训练和平衡的情况下表现最佳。 Resist 尝试将学习面板上的所有内容添加到模型训练集中。 这一步骤可能会导致对共同意图的偏见,并可能提供垃圾句子,使模型的学习蒙上阴影。
最好将分类不正确或对其分类置信度低的中心突出案例添加到模型中。
机器学习的统计特性意味着你尝试很好地覆盖 99% 的最常见案例。 这种情况越不常见,它就越有可能不被涵盖和没有学习。 如果你尝试将所有案例都添加到模型中,那么最核心的案例的性能就会下降,而用例的整体业务成功率也会随之下降。