uber plato research dialogue system研究要点记录

马坚
2023-12-01

一.使用plato构建一个对话系统主要包含三个部分:

  • Domain:相当于数据,主要包含两个部分Ontology和Database,Ontology相当于rasa domain中slot和intent,主要包括informable_slots、requstable_slots、System_requestable_slots。Database相当于对话的原始数据。
  • Controller:各个agent之间的控制器,调度各个agent之间正常运转,为各个agent传递输入、输出数据,并对各个agent的所有信息进行统计,包括输入、输出数据。
  • Agent:每个agent都包含一组标准的对话系统组件(组件主要包括:NLU,DM,DST,Policy,NLU,user simulator),各个组件类都继承了基类conversational_module,每个agent就相当于一一个对话角色,例如user、system等,agent功能是处理输入信息,吐出输出信息,而一个对话AI应用实际可以包含多个agent,agent之间可以进行相互交互。(注意:user
    simulator只是agent的一个组件,不能作为一个agent来看待)

二.plato agent 各个模块的分析:

  • rule-based model:plato提供agent各个组件基于规则填槽的模型版本,这个版本可以用于模型快速原型搭建、baseline(之后模型好坏的评价标准)、之后模型完整性检查。
  • Train model -> plato internal experience:plato在训练或inference模型的过程中,所有的历史经验信息都保存在dialogue_episode_recorder中。
  • Train model -> parsing data with plato:如果想使用plato训练agent的各个模块组件,那么就必须将训练数据解析为能适应plato平台输入的格式,不然各个模块就不能在plato平台上训练。Plato provides parsers for DSTC2, MetaLWOZ, and Taskmaster data sets。
  • Train model -> Training components of conversational agents:可以将数据集解析为plato experience,以此来训练plato内部提供的agent各个模块算法模型。也可以解析数据和训练算法模型在其他平台,例如TensorFlow、Pytorch等,当你想在plato平台上使用外部平台训练的模型时,只需通过agent加载外部模型算法就可以使用。
  • 另外plato setting就是对配置文件内容一些说明,详情见plato论文,以及readme。连接地址:https://arxiv.org/abs/2001.06463, https://github.com/uber-research/plato-research-dialogue-system

三.plato优劣势总结:

  1. plato支持多个agent交互学习。
  2. plato支持强化学习决策模型,并有基于规则的baseline。
  3. plato支持load外部平台解析数据并训练模型,如果要plato要使用外部平台训练的模型,只需通过agent load已经训练好的模型就可以在plato平台上使用。
  4. 暂时看来的劣势可能就是项目更新频率过低(文档过于简陋),可能时候不会再更新一些新的算法,还有就是强化学习算法是否支持各种场景的对话。主要是RL的环境和反馈的设计。个人理解就是每个对话场景都有自己独有的路径,而每个路径都会收集一个完整反馈,只有反馈越好对话流程才是最好的,因此对于不同场景对话是否都要设计好所有的流程,之后让RL去学习,通过反馈找到最好的流程路径。
 类似资料: