在过去的几十年里,智能会话代理经历了重大变化,从以关键字为目标的交互式语音应答(IVR)系统到跨平台智能个人助理,都成为日常生活中不可或缺的一部分。伴随着这些变革和增长,需要一个直观、灵活、全面的研发平台,(它)可以作为一个开放的测试平台帮助评估新算法、快速创建原型并可靠地部署会话代理。在这种背景下,Uber 开发并开源了 Plato 研究对话系统。
Uber Plato 平台在 GitHub 开源
据外媒 Venture Beat 报道,Uber 开源了柏拉图研究对话系统(Plato Research Dialog System)。它是一个可用于在各种环境下创建、训练和部署会话 AI 代理的平台,让数据科学家和业余爱好者能够在会话 AI 中进行最先进的研究,并快速创建原型、演示系统及促进对话数据采集。该系统将与谷歌的 Dialogflow、微软的 Bot 框架和亚马逊的 Lex 等产品展开竞争。
Plato 的设计“干净”、“可理解”,并与现有的深度学习和模型调优优化框架(贝叶斯优化框架)集成,可减少编写代码的需要。
Plato(版本 0.1)的第一次迭代支持通过语音、文本或对话行为进行交互,每个会话代理可以与数据,人类用户或其他会话代理进行交互(在多代理设置中)。此外,Plato 可以为每个会话代理组件合并预训练的模型,且可以在交互的过程中或从数据中对每个组件进行训练。
Plato 通过模块化设计将数据处理分解为七个步骤:语音识别、语言理解、状态跟踪、API 调用、对话策略、语言生成、语音合成。Plato 支持一系列会话式 AI 架构,每个元素都可以使用主流的机器学习库进行训练,例如 Uber 的 Ludwig,Google 的 TensorFlow 和 Facebook 的 PyTorch。
为了证明它的可扩展性,Plato 用户可以定义自己的体系结构,或通过提供 Python 类名和模块的程序包路径及模型的初始化参数来插入自己的组件。只要模块按照(它)应该执行的顺序列出来,Plato 就会处理其余的部分,包括封装输入和输出、链接和执行模块(串行或并行),以及让对话变得更容易。
在数据记录方面,Plato 会在一个名为 Dialogue Episode Recorder 的结构中跟踪事件,该结构包含,先前对话状态,所采取的操作,当前对话状态等信息,甚至还有一个自定义字段可用于跟踪不属于已定义类别的任何内容。
Uber AI 研究团队表示 :“我们相信,Plato 能够在 Ludwig、TensorFlow、PyTorch、Keras 和其他开源项目的深度学习框架中更加无缝地训练会话代理,从而提升学术和行业应用中的对话 AI 技术。“
Plato 研究对话系统如何运作?
从概念上来讲,会话代理需要经过各种步骤来处理它接收到的“输入”内容,并输出合适的答案(如“有风但不太冷”)。与标准体系结构的主要组件(参见图 1)相对应的主要步骤是:
语音识别(将语音转录为文本)
语言理解(从该文本中提取意义)
状态跟踪(到目前为止已经说过和完成的内容的汇总信息)
API 调用(搜索数据库,查询 API 等)
对话政策(生成代理人回应的抽象含义)
语言生成(将抽象意义转换为文本)
语音合成(将文本转换为语音)
Plato 被设计的尽可能地模块化和灵活性; 它支持传统和自定义的会话 AI 体系架构,而且很重要地是,它支持多参与方交互,其中有不同角色的多个代理可以相互交互、同时训练并解决分布式问题。
下面的图 1 和图 2 描述了与人类用户和模拟用户交互时的示例 Plato 对话代理体系结构。与模拟用户交互是研究团体快速启动学习的一种常见做法(即,在与人类交互之前先学习一些基本行为)。因为 Plato 是一个通用框架,所以可以使用任何机器学习库(例如 Ludwig、TensorFlow、PyTorch 等)在线或离线训练每个独立的组件,Uber 的开源深度学习工具箱 Ludwig 是一个不错的选择,因为它不需要编写代码且完全兼容 Plato。
图 1:Plato 的模块化架构意味着任何组件都可以在线或离线进行训练,可以通过自定义或预先训练的模型进行替换。(此图中的灰色组件不是 Plato 核心组件。)
图 2:使用模拟用户而不是人类用户,如图 1 所示,我们可以预先训练 Plato 各种组件的统计模型。接下来,这些可以用于创建原型会话代理,该代理可以与人类用户交互来收集更多自然数据,随后,这些数据可用来训练更好的统计模型。(此图中的灰色组件不是 Plato 核心组件。)
除了单代理交互之外,Plato 还支持多代理对话,多个 Plato 代理可以相互交互并相互学习。具体来说,Plato 将生成会话代理,确保输入和输出(每个代理听到和说出的内容)被恰当地传递给每个代理,并跟踪对话。
这种设置可以促进多代理学习的研究,代理需要学习如何生成语言以执行任务,以及研究多方交互的子领域(对话状态跟踪、轮流等)。对话原则定义了每个代理可以理解的内容(实体或含义的存在论;如价格、位置、偏好、烹饪类型等)及它可以做什么(询问更多信息、提供一些信息、调用 API 等)。代理可以通过语音,文本或结构化信息(对话行为)进行沟通,每个代理都有自己的配置。下面的图 3 描述了这种架构,概述了两个代理和各种组件之间的沟通:
图 3:Plato 的架构允许对多个代理进行同时训练,每个代理具有潜在的不同角色和目标,并且可以促进多方交互和多代理学习等领域的研究。(此图中的灰色组件不是核心的 Plato 组件。)
最后,Plato 通过下面图 4 所示的通用代理体系结构来支持自定义体系结构(如,将 NLU 分成多个独立组件)和联合训练的组件(如文本到对话状态、文本到文本或任何其他组合。此模式脱离了标准会话代理体系结构,支持任何类型的体系结构(如使用联合组件、文本到文本或语音到语音组件、或任何其他设置)并允许加载现有或预先训练有素的模型进入 Plato。
图 4:Plato 的通用代理体系结构支持广泛的自定义,包括联合组件,语音到语音组件和文本到文本组件,所有这些组件都可以串行或并行执行。
Plato 还通过组合结构(BOCS)的贝叶斯优化为会话 AI 架构或单个模块参数的贝叶斯优化提供支持。
原文链接:
https://github.com/uber-research/plato-research-dialogue-system
评论 1 条评论