ParlAI:Facebook开源的一个AI对话框架
ParlAI(讀作“par-lay”)是一個在各種公開提供的對話數據集上訓練和評估AI模型的框架。它是用Python編寫的(當前需要Python 3),主要用于對話AI研究,其目標是為研究人員提供以下特性:
\\- 一個訓練和測試對話模型的統一框架; \\
- 一次性在許多數據集上完成多任務訓練; \\
- 無縫集成Amazon Mechanical Turk,用于數據收集和人工測評。\
ParlAI包含三個主要概念:
\\- world:定義環境(可以非常簡單,只有兩個代理相互交談); \\
- agent:環境中的代理,如“學習者(learner)”(可以有多個學習者); \\
- teacher:一種和學習者交談的代理類型,實現其中一種ParlAI任務。\
在定義好world和其中的代理后,就可以運行一個主循環進行訓練、測試或展示,它會調用world.parley()函數,如下圖所示,左側是main方法的示例框架,右側是parley()的實際代碼:
\\\\所有代理(包括teacher)都使用一種格式—— observation/action對象(一個python字典)——進行交談。講話(acting)或傾聽(observing)都使用相同的對象類型,其中包含如下字段:
\\\\從技術上講,其中每個字段都是可選的。
\\ParlAI的代碼包含如下幾個主要的文件夾:
\\- core包含框架的主要代碼; \\
- agents包含可以和不同任務交互的代理; \\
- examples包含不同循環的一些基本示例; \\
- tasks包含不同任務的代碼; \\
- mturk包含設置Mechanical Turk的代碼及MTurk任務樣例。\
第一個版本支持20多種任務,其中包括SQuAD、bAbI tasks、MCTest、WikiQA、WebQuestions、SimpleQuestions、WikiMovies、QACNN \u0026amp; 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測試階段,感興趣的讀者可以下載安裝。
\\感謝陳思對本文的審校。
\給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ,@丁曉昀),微信(微信號:InfoQChina)關注我們。
總結
以上是生活随笔為你收集整理的ParlAI:Facebook开源的一个AI对话框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 面向对象之继承后初始化顺序
- 下一篇: iMX8方案服务-辰汉