核心模组的依赖内容参见 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() 函数真实的代码写在右侧面板。
Actions 和 Observations 所有的 agent(包括 teacher)都以简单的格式互相对话——observation/action 对象(这是一个 python 字典)。这被用于传递 agent 之间的文本、标签和奖励。这和当在对话(行动)或听(观察)时是同类对象,但是不同视角(在这些字段中有不同的值)。这些领域如下所述: 尽管'text'(文本)领域将几乎可能在全部交流(exchange)中被使用,但是技术上来说,基于你的数据集,这些领域中的每个都是可选的。 对于一个固定的监督式学习数据集(比如 bAbI)来说,一个典型的从数据集进行交流(exchange)例子可以像如下这样(该测试集不包含标签): Teacher: { 'text': 'Sam went to the kitchennPat gave Sam the milknWhere is the milk?', 'labels': ['kitchen'], 'label_candidates': ['hallway', 'kitchen', 'bathroom'], 'episode_done': False } Student: { 'text': 'hallway' } Teacher: { 'text': 'Sam went to the hallwaynPat went to the bathroomnWhere is the milk?', 'labels': ['hallway'], 'label_candidates': ['hallway', 'kitchen', 'bathroom'], 'episode_done': True } Student: { 'text': 'hallway' } Teacher: { ... # starts next episode }... 代码 代码被设置进了几个主要目录: core:它包含了框架的首要代码。 agents:包含了可以凭不同任务交互的代理(比如:机器学习模型)。 example:包含了不同循环的一些基本样例(构建词典、训练/评价、显示数据)。 tasks:包含了可来自于 ParlAI 的不同任务的代码。 mturk:包含了设置 Mechanical Turk 的代码和作为样例的 MTurk 任务。 下面我们会更具体地说明每个目录,我们根据依赖项(dependency)来组织行文。 Core 库 core 库包含了如下文件: agent.py:这个文件包含了一些可被你自己模型延展的基本 agent。 Agent:这是所有 agent 的基本类,实现了 act() 方法,该方法接受一个观察表(table)并且返回一个作为回复的表。 Teacher:它是 Agent 的子代,也实现了针对返回量度(returning metric)的报告方法。任务实现了 Teacher 这个类。 (责任编辑:本港台直播) |