@lsmn
2017-05-09T19:46:14.000000Z
字数 1461
阅读 2726
开源
Facebook
AI
ParlAI(读作“par-lay”)是一个在各种公开提供的对话数据集上训练和评估AI模型的框架。它是用Python编写的(当前需要Python 3),主要用于对话AI研究。
ParlAI(读作“par-lay”)是一个在各种公开提供的对话数据集上训练和评估AI模型的框架。它是用Python编写的(当前需要Python 3),主要用于对话AI研究,其目标是为研究人员提供以下特性:
ParlAI包含三个主要概念:
在定义好world和其中的代理后,就可以运行一个主循环进行训练、测试或展示,它会调用world.parley()函数,如下图所示,左侧是main方法的示例框架,右侧是parley()的实际代码:
所有代理(包括teacher)都使用一种格式—— observation/action对象(一个python字典)——进行交谈。讲话(acting)或倾听(observing)都使用相同的对象类型,其中包含如下字段:
从技术上讲,其中每个字段都是可选的。
ParlAI的代码包含如下几个主要的文件夹:
第一个版本支持20多种任务,其中包括SQuAD、bAbI tasks、MCTest、WikiQA、WebQuestions、SimpleQuestions、WikiMovies、QACNN & QADailyMail、CBT、BookTest、bAbI Dialog tasks、Ubuntu Dialog、OpenSubtitles、Cornell Movie、VQA-COCO2014等数据集,如下图左侧所示:
在ParlAI中,选择一项任务非常简单,只要在命令行中指定即可,如上图右侧所示。如果指定的数据集以前没有使用过,那么ParlAI会自动下载它。ParlAI把所有的数据集都同等看待,原则上,一个对话代理可以在上述任何数据集之间切换训练及测试。甚至,研究人员还可以一次指定多个任务,例如,通过命令行-t babi,squad
使用两个数据集,或者通过命令行-t #qa
一次指定所有QA数据集,或者使用-t #all
指定ParlAI中的所有任务。总之,ParlAI的目标是让研究人员可以轻松地构建和评估丰富的对话模型。
ParlAI的一个重要特性是无缝集成Mechanical Turk,用于数据收集、训练和评估。在ParlAI中,Human Turkers也被视为代理,因此,人-人、人-机器人或者多个人和机器人都可以在标准框架内交谈,根据需要交换角色,而不需要修改代理的代码。
ParlAI GitHub页面上还提供了使用PyTorch和Lua Torch训练神经模型的示例,替换成Theano或Tensorflow也很简单。ParlAI尚处于早期Beta测试阶段,感兴趣的读者可以下载安装。