社会焦点

资源 | Facebook开源人工智能框架ParlAI:可轻松训练评估对话模型

字号+ 作者: 来源: 2017-05-06

资源 | Facebook开源人工智能框架ParlAI:可轻松训练评估对话模型,微信对话生成器,java人工智能框架,男女对话段子快手,英语简单口语对话,关于旅游的英语对话

选自GitHub

机器之心编译

参与:吴攀、晏奇

Facebook 近日在 GitHub 上开源了一个可用于在多种开放可用的对话数据集上训练和评估人工智能模型的框架 ParlAI,机器之心在本文中对这一项目的 README.md 内容进行了编译介绍。项目地址如下:

  • 官网地址:http://parl.ai

  • GitHub:https://github.com/facebookresearch/ParlAI

  •   资源 | Facebook开源人工智能框架ParlAI:可轻松训练评估对话模型

    ParlAI(读音为 par-lay)是一个用于对话人工智能研究的框架,是用 Python 实现的。该框架的目标是为研究者提供:

  • 一个用于训练和测试对话模型的统一框架

  • 一次性在许多数据集上进行多任务训练

  • 无缝集成 Amazon Mechanical Turk,以便数据收集和人工评估

  • 这第一个版本支持超过 20 种任务,也囊括了许多流行的数据集,比如 SQuAD、bAbI tasks、MCTest、WikiQA、WebQuestions、SimpleQuestions、WikiMovies、QACNN & QADailyMail、CBT、BookTest、bAbI Dialog tasks、Ubuntu Dialog、OpenSubtitles、Cornell Movie 和 VQA-COCO2014。

    还包括使用 PyTorch 和 Lua Torch 训练神经模型的示例,其包含了在 GPU 上的批训练或在 CPU 上的 hogwild 训练。另外使用 Theano 或 TensorFlow 也是很直接的。

    我们的目标是让那些在它们之上训练的任务和智能体能够以一种基于社区的方式成长。

    这个版本还是早期的 Beta 版,使用过程中可能会有一些冒险,或遇到一些难题。

    目标

    用于评估模型的统一框架

  • 可按需下载任务/数据集,且为它们提供了同样简单的接口

  • 统一的数据集输入和评估框架/标准

  • agents/ 目录鼓励研究者提交他们的训练代码,以便在该 repo 中分享

  • 协助重现

  • 最终目标是实现通用的对话,包括许多不同的技能

  • 无缝地组合模拟的和真实的语言任务

  • 鼓励多任务模型的开发和评估

  • 有助于减少模型在特定数据集上的过拟合

  • 最终目标是实现与人类的真实对话

  • 通过 Mechanical Turk,在与人类的实时对话上训练和评估

  • 只需简单的设置,就可以连接 Mechanical Turk 上的人类与你的对话代理

  • 允许比较不同研究组的 Turk 实验

  • 能够引导一个可与人类交互的对话模型的数据集配置

  • 激励构建将进入本 repo 的新数据集

  • 特性

  • 所有的数据集都像自然对话:单一格式/API

  • 既有固定数据集(会话日志),也有交互式任务(在线/RL)

  • 既有真实任务,也有模拟任务

  • 支持其它媒体,比如 VQA 中的视觉

  • 可以使用 Mechanical Turk 来运行/收集数据/评估

  • Python 框架

  • PyTorch 的训练示例

  • 可使用 zmq 与其它非 Python 的工具箱对话,给出了 Lua Torch 的示例

  • 支持模型的 hogwild 训练和批训练

  • 基本示例

    从「1k training examples」bAbI 任务的任务 1 中展示 10 个随机样本:

    python examples/display_data.py -t babi:task1k:1

    同时在 bAbI 任务的多任务与 SQuAD 数据集上展示 100 个随机样本:

    python examples/display_data.py -t babi:task1k:1,squad -n 100

    在 Movies Subreddit 数据集的验证集上评估 IR 基线模型:

    python examples/eval_model.py -m ir_baseline -t "#moviedd-reddit" -dt valid

    给出该 IR 基线模型的预测:

    python examples/display_model.py -m ir_baseline -t "#moviedd-reddit" -dt valid

    在「10k training examples」bAbI 任务 1 上训练一个简单的基于 CPU 的记忆网络,其使用了 Hogwild(需要 zmq 和 Lua Torch),有 8 个线程(Python 进程):

    python examples/memnn_luatorch_cpu/full_task_train.py -t babi:task10k:1 -n 8

    在 SQuAD 数据集上训练一个「注意 LSTM」模型,其中批大小为 32(PyTorch 和 regex)

    python examples/drqa/train.py -t squad -b 32

    要求

    ParlAI 目前支持 Python3。

    核心模组的依赖内容参见 requirement.txt。其中部分模型(在 parlai/agents 中)有进一步要求,比如需要 PyTorch 或 Lua Torch——所有这些模组的要求都可以参见 requirements_ext.txt 这个文档。

    安装 ParlAI

    首先,复制该 repository,然后进入复制的目录。

    链接安装:运行 python setup.py develop 来将复制的目录链接到你的 site-packages。如果你打算根据你的运行修改任何的 parlai 代码或者提交一个 pull request,特别是如果你想在 repository 上添加另外的任务的话,那么我们推荐上述安装过程。所有需要的数据都将被下载到 ./data,而且,如果要求任何模型的文件(目前仅是 memnn 模型),它们都将被下载到 ./downloads。

    复制后的安装内容(仅将 parlai 用作一个依赖项):运行 python setup.py install 来将内容复制到你的 site-packages 文件夹。所有数据都会被默认下载到 python 的 site-packages 文件夹中(你可以通过命令行来改写路径),不过一旦对代码作出了任何改动,你都需要重新运行一次安装。如果你仅想将 parlai 作为一个依赖项使用(比如用于访问任务或核心代码),那么目前这样就可以了。但是如果你想要清除下载的数据,那么删除 site-packages/parlai 中的 data 和 downloads 文件夹(如果可以的话)。

    Worlds, agents 和 teachers

    ParlAI 中的主要概念(类):

  • world——它定义了环境(它可以非常简单,可以仅两个代理相互对话)。

  • agent——这是世界里的一个代理,比如一个学习器。(存在很多学习器。)

  • teacher——这是一种可以和学习者对话的代理,它用于实现前面提到的任务。

  • 在定义完 ParlAI 中的 world 和 agent 之后,一个主 loop 可被用来训练、测试或显示,它叫做 world.parley() 函数。我们在左边的面板中给出了个实例的主要骨架,parley() 函数真实的代码写在右侧面板。

    转载请注明出处。


    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 案例 | 抑郁症、精神分裂,初中生家境优渥,父母为何不让吃药

      案例 | 抑郁症、精神分裂,初中生家境优渥,父母为何不让吃药

    • 实录 |12名女大学生被侵犯,色魔竟然是个老乞丐

      实录 |12名女大学生被侵犯,色魔竟然是个老乞丐

    • 微信群的多人语音和视频聊天功能,你要试试 | 有轻功 #081

      微信群的多人语音和视频聊天功能,你要试试 | 有轻功 #081

    • 为了不让你坐过站,香港人居然做了这款 App | AppWall 精选 #060

      为了不让你坐过站,香港人居然做了这款 App | AppWall 精选 #060