2021 Fiscal Year Research-status Report
Parallel-Distributed Machine Learning Environment for Reinforcement Learning
Project/Area Number |
19K11994
|
Research Institution | National Institute of Advanced Industrial Science and Technology |
Principal Investigator |
中田 秀基 国立研究開発法人産業技術総合研究所, 情報・人間工学領域, 上級主任研究員 (80357631)
|
Project Period (FY) |
2019-04-01 – 2023-03-31
|
Keywords | 強化学習 / 機械学習 / 並列システム / 分散システム |
Outline of Annual Research Achievements |
昨年度に引き続き、強化学習に適した分散システムの実装言語としてJulia言語に着目し研究を進めた。JuliaはREPLを持つ、スクリプト言語的に使用できる言語だが、強力なJITコンパイルによって、場合によってはC言語に匹敵する実行速度を実現する事ができ、次世代の機械学習向け言語として期待されている。Juliaには並列分散実行機構がデフォルトで提供されている。この機能は、リモートでの関数実行や、ループの自動並列化などを提供しているが、リモート計算機にデータを保持しておきそれに対する計算を継続的に行うような用途には適していない。われわれの目指す強化学習の並列実装においては、大規模なモデルをリモート計算機に配置しておき、そのデータを利用することが重要であるため、Juliaの既存では不十分である。またJuliaはコルーチン機構を提供している。コルーチンはいわば軽量なスレッドであり、これを用いるとI/O待ちを行うコンテクストを、同時に多数保持することができる。 われわれはJuliaがもともと提供する並列分散実行機能と、コルーチン機構とを組み合わせることで、アクター機構を構築した。アクター機構はリモートデータとそのデータに対する処理をカプセル化したもので、リモートデータに対して非同期にメッセージを送ることで処理を起動する機構である。これを用いることで、分散環境でも強化学習機構を効率的に実装することが可能となる。 さらに、分散環境で実行する機械学習ソフトウェアの実装もすすめた。
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
Julia環境でのアクターモデルの実装をすすめた。アクターモデルでは処理対象のデータがアクターという単位でカプセル化され、アクセスがアクターへのメッセージという形でシリアライズされるため、アクター内部での排他制御の必要がなく、プログラマへの記述負荷が少ない。また、いわゆるオブジェクト指向言語と類似した書き方になるため、オブジェクト指向言語に慣れ親しんだプログラマにとっては負担が少ない。このアクター実装に関しては研究会発表を行っている。 強化学習プログラマをアクターで実装するためには、強化学習の対象となる環境をアクターとして表現する。この環境アクターは、状態と行動の対を与えるとその行動に対する報酬を返す。一般にこの過程には環境のシミュレーションが伴うため、特に複雑な力学モデルを伴うような環境においては計算コストが非常に高い。このため、環境アクターに対して逐次的に問い合わせを行うと、環境でのシミュレーションがボトルネックとなり、学習機がほとんど機能しなくなる。このため十分なスピードで学習させることができない。これに対して、環境を表現するアクターを多数用意し、それらに対して非同期的に同時に環境をシミュレートすることで強化学習を高速化する事ができる。 このようなシステムの実装を補助する汎用強化学習フレームワークをアクターモデル上に構築する実装をすすめている。本件に関しては研究会発表を行う予定である。
|
Strategy for Future Research Activity |
これまでに構築したアクター機構の上に、汎用強化学習フレームワークを実装する。このフレームワークは、環境と強化学習アルゴリズムの双方をプラグイン可能に設計されている。環境を構築する際には、環境のモデルを用意し入力(状態とアクション)に対する報酬を定義する。一方で、強化学習アルゴリズムは、状態と報酬に対してアクションを返すコードとして定義する。環境はアクターとしてラップされ、複数の環境が分散並列に実行される。この際通信や並列制御はプログラマから隠蔽されるので、困難な並列分散実装の細部にとらわれることなく、モデルと強化学習アルゴリズムの実装を行うことができる。さらに、これまでに知られている基本的な強化学習アルゴリズムを予め実装として提供する。これによってプログラマの負荷を削減するとともに、プログラマが同じ問題に対して適切なアルゴリズムを選択することが容易になる。これらの補助を行うことで、これまで適用されてこなかった、さまざまな問題への容易な強化学習の適用が可能になる。 Julia言語はPythonのパッケージを呼び出すことが可能である。この機能を用いることで、Pythonで構築された強化学習の環境をそのままJuliaから利用することができる。たとえばOpenAIの公開している強化学習環境であるGymを、提案するフレームワークで利用することが可能になる。これによって、同じ対象に対してアルゴリズムの優劣を比較することができる。
|
Causes of Carryover |
コロナの影響により計画していた研究会等への参加ができなかったため差額が生じた。
|