RFR:3Dエージェント・テストスイート

要約

この研究依頼(Request for ResearchRFR)は、人間レベルの知能(Human level intelligenceHLAI)や汎用人工知能(Artificial general intelligenceAGI)の研究で用いるための3D(三次元)シミュレーション環境を創り上げることを主題とします。

エンジニアリング寄りの依頼ですが、AGI/HLAIの研究プロセスの本質的な部分の一つでもあり、創っていただいたテストスイートでもってご自身の研究を進めていただくこともできます。

背景と動機

人間のようなAIを作るためには洗練されたテスト環境が必要です。
そして「人間のような」ということは、3D環境のなかで行動できることを意味するので、人間のようなAIをテストするためにはなんらかの3D環境が必要となります。
さらにいうと、人間はみずからが住まう3D環境のなかで学習するのですから、そのテスト用環境は学習にも用いることができます。
こうした環境は物理的なものであってもよいのですが、物理的環境のなかで物理的なロボットを使うことはコストが高くつきますし、多くの時間がかかり、実験を再現することも難しいでしょう。ですから、物理的な環境ではなく3Dシミュレーション環境を作ることを私たちは提案します。

このRFRの背景として、無料で使うことのできるさまざまな3Dシミュレーション環境のなかには、私たちの基準(下記「目的」)を満たすものはほとんどないように思われる、ということがあります。

追記:2019-05

その後、私たちは PyLIS という3Dシミュレーション環境を作成しています。この環境は私たちの基準(下記「目的」)をほぼ満たしているので、このRFRの読者にはPyLISの利用を強くおすすめします。PyLISを利用すれば下記「モデルの特性」にあるスイートの作成に取りかかることができます。

目的

以下の内容をもつオープンソースのソフトウェア・パッケージを創ること。

  • 物理エンジンの備わった3Dエージェント・シミュレーション環境のフレームワーク
  • サンプルとなる再利用可能な一つの「シーン」(URDFなどの標準的なオブジェクト定義フォーマットで定義され、できるだけ Python で動作記述が行われるもの)
  • サンプルとなる再利用可能なエージェント(やはりなんらかの標準的なオブジェクト定義フォーマットで定義され、Python で動作記述が行われるもの)
  • 依存性を最小化し、サポート環境(例えばオペレーティングシステム)の数を最大化する。
  • 可能な場合、既存のソフトウェアを再利用すること

成功基準

  • サンプル環境とサンプルエージェントのカスタマイズが容易であること
  • 十分にテストされていること
  • 十分に文書化されていること

プロジェクト内容の詳細

モデルの特性

サンプルとなるシーン(スイート)のいくつかについて概要を記します。比較的シンプルなシーンを一つ創り出してから、より複雑なさまざまなシーンへと移ることをお勧めします。 

  1. げっ歯類の認知テストスイート(迷路)
    迷路は、げっ歯類の記憶、学習、そしてナビゲーションの能力をテストするために用いられており[Brigman 2010][Wolf 2016]、そのシンプルさゆえに、シミュレーション環境の作成に取り組むにあたって一つのよい出発点となります。このシミュレーション環境には壁があり、エージェントは壁を知覚して動くことができなくてはなりません。一つの環境をいったん作り上げたら、[Brigman 2010][Wolf 2016] のなかの少なくとも一つの認知テストでテストしてみてください。
  2. カラスの認知テストスイート
    カラスは道具を使うためのプランを立てます。たとえば、エサを取るための道具を入手するためにプランを立てるのです(動画)(その他のタスクもご覧ください)。この動画のテストを再現した環境は、容器と棒と石を含んでいなくてはなりません。エージェントは、それらのオブジェクトを動かしたり、知覚したり、操作したりできなくてはなりません。一つの環境をいったん作り上げたら、強化学習で学習できるかもしれない比較的シンプルなタスクの一つでもってテストするとよいかもしれません。
  3. 言語獲得のテストスイート
    人間の言語は物理的世界に根ざして(接地して)います。つまり、単語や言い回しの意味は、エージェント(人間)と環境のあいだの相互作用から獲得されます。さらにいうと、言語は、言語を話す他のエージェント(養育者たち)から獲得されます。ですから、人間の言語獲得にかんするシミュレーターは、さまざまな仮想的オブジェクトおよび言語を操る複数の仮想的エージェントを含んでいなくてはなりません。それらのエージェント(言語学習者や養育者)は、それらのオブジェクトを知覚したり操作したりできなくてはなりませんし、音素などの基本要素から構成されている言語的表現を発語したり「聞い」たりできなくてはなりません。養育者の行動は振り付けできるということに留意してください。一つの環境をいったん創り上げたら、[Cangelosi 2015] の第7章のタスクの一つを用いてテストしてみるのもよいでしょう。
  4. 「ウォズニアック」テストスイート
    一台のロボットが初めて訪れた家のキッチンで一杯のコーヒーを淹れる、というシミュレーションに関するテストスイートです。これは、そういうことができるロボットは決して生まれないだろうというスティーブ・ウォズニアックの主張から名付けられています。この環境に含まれるのは、一つのキッチンカウンター、一つのキッチン棚、一台のコーヒーメーカー、蛇口一つまたは水のボトル一本、コーヒーフィルター、コーヒーの粉、などなどです。このロボットはキッチンの中を移動したり、さまざまなオブジェクトを知覚したり操作したりできなくてはなりません。これに関連したいろいろなタスクがRoboCup@Homeで設定されています。彼らは物理的なロボットを用いていますが、仮想的なスイートをテストするために彼らのタスクを参考にすることができます。

エージェントにかんする一般的要求事項

ここで仮想的なエージェントは以下の機能を持たなくてはなりません。

  • 視覚
  • 移動
  • (内的・外的な)報酬入力
  • (直線的/回転的)加速度および速度のセンサー
  • (触覚の備わった)マニピュレータ(スイート24用)
  • テキスト入出力(スイート3用)
  • 発話・聴取機能(スイート3用オプション)

エージェントは単純化のために、車輪で移動し、マニピュレータは一つだけあるといったものでもよいでしょう(参考:トヨタのHSR[シミュレーターについては このブログ記事をご覧ください])。マニピュレータを制御するために必要とされるロボット工学の専門知識については、ロボット工学のコミュニティで議論されるべきものとします。

実装のための計算論的なツール

実装のためのさまざまなツールはオープンソースでなければなりません。とりわけ、シミュレーションエンジンとしてはPybullet 、プログラミング言語としてはPython を用いるようお願いします。

Pybullet

Pybullet は「物理シミュレーションのための使いやすいPython モジュール」です。レンダリングの能力を有し、URDFといった標準的なオブジェクト定義フォーマットやDQNなどの広く普及している機械学習環境を組み入れることができます。広く普及している強化学習ツールキットの一つである OpenAI Gym が Pybullet には統合されています。

Python

私たちはPython を使うことを求めます。というのは、機械学習エンジニア(あるいはAIエンジニア)たちのあいだで広く使われているのはPython なので、それ以外の言語を認めると、システムのユーザビリティを減じることになってしまうからです(従来の3D環境の多くは C#C++Lua といった他の言語を使っています)。

マルチプル・プラットホーム

作成されるテストスイートは、Linux OS X Windows といった主要なオペレーティングシステムの上で容易にインストールできなくてはなりません。
いまのところ ROSを使うことは避けていただくようお願いいたします。OS X とともに使用した場合に不具合を起こすためです。 

データセットとテスト

この研究依頼(RFR)は、テストスイートのエンジニアリングを依頼するものですから、以下のものも提供することをお願いいたします。

  • あなたが創ったテストスイートの仕様を文書化したもの(説明書)
  • そのテストスイートであなたが行ったさまざまなテストについてのレポート
  • そのテストスイートで行うことのできる認知テストについての説明

関連研究

AIエージェントのためのオープンソースの3Dシミュレーション環境については、以下のものをチェックするとよいでしょう。

  • OpenAI Roboschool
    Bullet OpenAI Gym を用いているので、Pybullet にかなり似ています。コードを見ることはできますが、設定はPybullet ほどには簡単ではなさそうです。
  • DeepMind Lab
    このRFRと似た考え方にもとづいたプロジェクトなのですが、スクリプト言語としては LUA、物理エンジンとしては Quake III Arenaを用いています。PyBulletで同様な環境を再実装するというのが一つの選択肢となります。
  • Unity ML-Agents Toolkit
    やはりこのRFRと似た考え方にもとづいたプロジェクトです。スクリプト言語としては C#、デフォルトの物理エンジンとしては Nvidia PhysX を用いています。環境が重い上、C#で新しいエージェントを開発するのは一般のPython エンジニアには荷が重いかもしれません。
  • SigVerse
    ROS Unity ゲームエンジンをもちいた重い実装であり、バーチャル・リアリティ内での人間とロボットのインタラクションも組み込まれています。

他のいろいろな3Dシミュレーターにかんしては、この記事をご覧ください:Touchy Simulations are fuel for Strong AI

WBAI はいくつかのシミュレーターを作ることを試みたことがあります。

  • Life in Silico(LIS)
    このRFR が期待している見た目と使用感は、これかもしれません。Unity ゲームエンジンを用いているので維持が難しいです。
    ⇒ PyBullet 版 PyLIS をご使用ください。
  • PyGazebo (動画) をもちいた プロトタイプPrototype
    シミュレートされた迷路はこのように見えると思います。ROS をもちいているので、PyGazeboは誰にでも適しているとは言えません。
  • 2017年のWBAハッカソンの環境
    このLIS ベースの環境(迷路)がバーチャルなげっ歯類の記憶と学習をテストするために用いられました。

[Cangelosi 2015] には、発達ロボット工学のためのロボット工学シミュレーション環境が引用されています。

非商業的なもの:

商業的なもの:

参考文献


議論については redditスレッド Agent Environment(英語)にぜひご参加ください。