Plato Research Dialogue System创建、训练和部署会话 AI 代理
柏拉图(Plato)研究对话系统是一个灵活的框架,可用于在各种环境中创建、训练和测试会话 AI 代理。它支持通过语音、文本或对话行为进行交互,每个会话代理可以与数据、人类用户或其他会话代理进行交互(在多代理设置中)。每个代理商的每个组成部分都可以在线或离线独立培训,只要遵守 Plato 的界面,Plato 就可以轻松地绕过几乎任何现有的模型。
柏拉图(Plato)研究对话系统如何运作?
从概念上讲,会话代理需要经过各种步骤才能处理它作为输入接收的信息(例如,“今天天气如何?”)并产生适当的输出(“有风但不太冷”。)。与标准体系结构的主要组件(参见图1)相对应的主要步骤是:
- 语音识别(将语音转录为文本)
- 语言理解(从该文本中提取意义)
- 状态跟踪(到目前为止已经说过和完成的内容的汇总信息)
- API 调用(搜索数据库,查询 API 等)
- 对话策略(生成代理人回应的抽象含义)
- 语言生成(将抽象意义转换为文本)
- 语音合成(将文本转换为语音)
Plato 的设计尽可能模块化和灵活,它支持传统和自定义会话 AI 架构,重要的是,支持多方交互,其中多个代理可能具有不同的角色,可以相互交互,同时训练和解决分布式问题。
下面的图1和图2描述了与人类用户和模拟用户交互时的示例 Plato 对话代理体系结构。与模拟用户交互是研究社区中用于快速开始学习的常见做法(即,在与人类交互之前学习一些基本行为)。每个单独的组件都可以使用任何机器学习库(例如,Ludwig、 TensorFlow、PyTorch、用户自己的实现)在线或离线进行培训,因为 Plato 是一个通用框架。Uber 的开源深度学习工具箱 Ludwig 是一个很好的选择,因为它不需要编写代码并且与 Plato 完全兼容。
图1:Plato 的模块化架构意味着任何组件都可以在线或离线进行培训,可以通过自定义或预先训练的模型进行替换。(此图中的灰色组件不是核心 Plato 组件。)
图2:使用模拟用户而不是人类用户,如图1所示,我们可以预先训练 Plato 各种组件的统计模型。然后,这些可以用于创建原型会话代理,该代理可以与人类用户交互以收集更多自然数据,这些数据随后可用于训练更好的统计模型。(此图中的灰色组件不是 Plato 核心组件。)
除了单代理交互之外,Plato 还支持多代理对话,其中多个 Plato 代理可以相互交互并相互学习。具体来说,Plato 将产生会话代理,确保输入和输出(每个代理听到和说出的内容)被适当地传递给每个代理,并跟踪对话。
这种设置可以促进多代理学习的研究,其中代理需要学习如何生成语言以执行任务,以及研究多方交互的子领域(对话状态跟踪,轮流等)。 )。对话原则定义了每个代理可以理解的内容(实体或含义的本体;例如:价格,位置,偏好,烹饪类型等)以及它可以做什么(询问更多信息,提供一些信息,调用 API)等)。代理可以通过语音,文本或结构化信息(对话行为)进行通信,并且每个代理都有自己的配置。下面的图3描述了这种架构,概述了两个代理和各种组件之间的通信:
图3:Plato 的架构允许对多个代理进行并发培训,每个代理具有可能不同的角色和目标,并且可以促进多方交互和多代理学习等领域的研究。(此图中的灰色组件不是核心 Plato 组件。)
最后,Plato 通过图4所示的通用代理体系结构支持自定义体系结构(例如,将 NLU 分成多个独立组件)和联合训练的组件(例如,文本到对话状态,文本到文本或任何其他组合)。此模式远离标准会话代理体系结构并支持任何类型的体系结构(例如,使用联合组件,文本到文本或语音到语音组件,或任何其他设置)并允许加载现有或预先训练有素的模型进入 Plato。
图4:Plato 的通用代理体系结构支持广泛的自定义,包括联合组件,语音到语音组件和文本到文本组件,所有这些组件都可以串行或并行执行。
用户可以通过简单地提供该类模块的 Python 类名和包路径以及模型的初始化参数来定义自己的体系结构和/或将自己的组件插入到 Plato 中。用户需要做的就是按照应该执行的顺序列出模块,Plato 负责其余部分,包括包装输入/输出,链接模块和处理对话。Plato 支持模块的串行和并行执行。
Plato 还通过组合结构的贝叶斯优化(BOCS)为对话 AI 架构或单个模块参数的贝叶斯优化提供支持。
安装
-
克隆此存储库:
git clone git@github.com:uber-research/plato-research-dialogue-system.git
-
安装要求:
对于 MacOS:
brew install portaudio pip install -r requirements.txt
对于 Ubuntu/Debian:
sudo apt-get install python3-pyaudio pip install -r requirements.txt
对于 Windows:
pip install -r requirements.txt
-
运行
有关配置文件以及如何运行第一个 Plato 代理的快速介绍,请参见文档。
为了支持语音,有必要安装 PyAudio,它具有许多开发人员机器上可能不存在的依赖项。如果上述步骤不成功, PyAudio 安装错误的这篇文章包含有关如何获取这些依赖项并安装 PyAudio 的说明。