Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

強化学習環境まとめ

More than 1 year has passed since last update.

強化学習環境まとめ

by ikeyasu
1 / 28

Abstract

  • 強化学習環境について紹介
    • なんだかんだいろんな環境で遊んできたので紹介

とりあえず強化学習(Reinforcement Learning: RL)の概要


image.png


強化学習の要素

  • エージェント (agent)
  • 環境 (environment)
  • 行動 (action)
  • 報酬 (reward)
  • 状態 (status)

強化学習についてつづきはこちら

趣味の強化学習


全ての基本OpenAI Gym

import gym
env = gym.make("Taxi-v1") # <- 環境を作成
observation = env.reset() # <- リセット。初期の状態sを受け取る
for _ in range(1000):
  env.render() # <- 描画する。学習時には無くても良い
  action = env.action_space.sample() # <- これは推論・探索に置き換え
  observation, reward, done, info = env.step(action)
           # ↑ ステップをまわす。状態s、報酬r、終了フラグ等が返られる

OpenAI Gymにあるもの

  • Atariのゲーム
  • Box2D: 古典力学的な2D物理演算エンジン
  • Classic control: 典型的な強化学習タスク
  • MuJoCo: 商用3D物理演算エンジン
  • Roboschool: フリーのMuJoCo互換
  • Algoriths, ToyText: 単純なタスク

Atariのゲーム

image.png

AtariショックのAtari。単純なゲームが多い。


Atariのゲームの例

ブロック崩し
パックマン
その他


Atariには無理ゲーが多い

以下、DQN論文より引用。下の方は、人間でも無理ゲー。

image.png


無理ゲーの例

MontezumaRevenge-v0
PrivateEye-v0

※ Montezumaは集中的に研究され、最近は解けたと主張する論文がある


Breakoutを見てみる

test-breakout-v0.py
import gym
env = gym.make("Breakout-v0")
timestep_limit = env.spec.tags.get(
  'wrapper_config.TimeLimit.max_episode_steps')
obs_space = env.observation_space
obs_size = obs_space.low.size
action_space = env.action_space
observation = env.reset() # <- リセット。初期の状態sを受け取る
for _ in range(1000):
  env.render() # <- 描画する。学習時には無くても良い
  action = env.action_space.sample() # <- これは推論・探索に置き換え
  observation, reward, done, info = env.step(action)

Box2Dの例:BipedalWalker-v2

Image from Gyazo


MuJoCo: Ant-v2

Image from Gyazo


Robotics: FetchPickAndPlace-v1

Image from Gyazo



RoboSchool: RoboschoolAnt-v1

Image from Gyazo


Roboschool

  • Bulletエンジンで、MuJoCo互換の環境を実装。
    • MuJoCoのライセンス費は高い
    • Dockerで使うにはさらに高いライセンス費が必要(今時の学習環境に合わない)
  • なんか全体的にコード品質が低く、未完成感
  • READMEには、Roboschool2を作っていると書いてある(がどこで?)

Roboschoolを読んでみる

https://scrapbox.io/ikeyasu/roboschool_state%E3%81%AE%E8%AA%BF%E6%9F%BB


PyBullet

  • 去年ぐらいにPyBullet自身がGymに対応
  • よく見ると、Roboschoolのコードが入っている
  • 今後、これが本流となる見込み

PyBullet(余談)

  • 最近のRLの潮流として、Domain Adaptationがある
  • 現実世界とシミュレーションのギャップをいろいろな方法で埋める手法
    • Sim2Realという
  • そのためには、シミュレーター自体のパラメーターを色々いじくれる必要がある
    • Roboshcool は、BulletエンジンをC++でラップしてPythonから使っていたので、エンジン自体をいじくりにくかった
    • PyBulletはエンジン自体をPythonでラップしているのでパラメーターを変更しやすい

gym-gazebo

  • Gazebo は、ROS(Robot operating system)のシミュレーター
  • Gazebo を Gym化したのが、gym-gazebo
    • 導入が大変で試していない

deep racer (virtual league)

  • AWSが作ったハードウェア
  • それのシミュレーター。Robomaker がベース。つまり、Gazebo

https://github.com/aws-robotics/aws-robomaker-sample-application-deepracer
https://aws.amazon.com/jp/deepracer/schedule-and-standings/leaderboard-virtual-london-loop-2019/?p=drl&exp=btn&loc=2


Unity ML-Agent

  • UnityをRLAgentにつかうもの
  • Unityを使って環境をビルドして一つのアプリにする
    • Pythonを使って環境を構築できるフレームワークでは無い
    • 環境がポータブルなアプリになるので単に利用するだけの人は環境構築が楽

Animal AI-Olympics

image.png


lis

  • Unityを使ってAnimal AI-Olympicsのような事をする環境

    • 相当古い実装で最近更新が無い。Unity ML-Agentはつかわれていない
    • Unity開発環境をそのまま使うので、ポータブルなアプリではない
  • LIS (Life in Silico) のソースを読んでみる


PyLIS

  • lisをPyBulletで書き直したもの
  • ユーザーは少なそう
ikeyasu
(株)ACCESS Co-CTO。 主にIoTとクラウドとAIとドローン屋やってます。
access
SDNからセンサ、家電、電子書籍まで。ACCESSはあらゆるレイヤのデバイス、サービスを「繋げて」いきます。
http://jp.access-company.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away