OSS強化学習フレームワークの比較

gree_tech
gree_techgree_tech
Copyright © GREE, Inc. All Rights Reserved.
OSS強化学習フレームワークの
比較
2019/01/16
グリー株式会社 開発本部
辻本 貴昭
Copyright © GREE, Inc. All Rights Reserved.
• グリーでの利用例
• フレームワーク全体のざっくりとした比較
• 各フレームワークごとの紹介
• Coach
• RLlib
• ChainerRL
• Keras-RL
• StableBaseline
• Dopamine
• Horizon
概要
Copyright © GREE, Inc. All Rights Reserved.
• 敵のパラメータを調整後、バトルを繰り返して確認
• 想定通りのダメージ量になっているか?
• 乱数の影響は想定の範囲内に収まっているか?
• 問題点
• キャラクターの性能を把握していないとできない
• かなり時間がかかる
• 解決案
• バトルプレイAIの導入
• ルールを記述したり、バトルの状態毎に教師データを用意するのはほぼ不可能
• 強化学習でなんとかならないか?
利用例
ターン制コマンドバトルRPGでのバランス確認
Copyright © GREE, Inc. All Rights Reserved.
• DQN, A3Cはだいたいどのフレームワークでも実装されている
• 実装済みアルゴリズムはCoachが多い(ChainerRL, RLlibもそれなり)
• 分散アルゴリズムはRLlibが充実している(Ape-X, IMPALAなど)
• Dopamine, Keras-RLは実装済みアルゴリズムが少ない
フレームワーク全体の比較
実装されているアルゴリズム
Copyright © GREE, Inc. All Rights Reserved.
• 統合フレームワーク型
• 広範囲に抽象化している
• 階層型・マルチエージェント環境に対応している
• Coach, RLlib
• 参考実装型
• 各アルゴリズムを統一したインターフェースで学習・推論できるようにしている
• ChainerRL, Keras-RL, Dopamine, StableBaseline
• 番外編
• ゲームQA・バランス調整の観点でみると目的が違うもの
• Horizon
• シミュレータが用意できないオフライン学習が主な目的
• ストリーミング配信のビットレート最適化に使っているらしい
フレームワーク全体の比較
フレームワークの思想の違い
Copyright © GREE, Inc. All Rights Reserved.
• 実験設定(preset)を記述してツールから実行する
• presetに書く内容
• 学習させるステップ数
• どの学習アルゴリズムを利用するか
• アルゴリズムごとのハイパーパラメータ
• 環境の設定
Coach
使い方
$ coach -p CartPole_DQN
$ coach -p CartPole_DQN –crd checkpoint-dir --evaluate
Copyright © GREE, Inc. All Rights Reserved.
schedule_params = ScheduleParameters()
schedule_params.improve_steps = TrainingSteps(10000)
schedule_params.steps_between_evaluation_periods = EnvironmentEpisodes(10)
schedule_params.evaluation_steps = EnvironmentEpisodes(1)
schedule_params.heatup_steps = EnvironmentSteps(1000)
agent_params = DQNAgentParameters()
agent_params.algorithm.discount = 0.99
agent_params.memory.max_size = (MemoryGranularity.Transitions, 40000)
agent_params.exploration.epsilon_schedule = LinearSchedule(1.0, 0.01, 10000)
agent_params.network_wrappers['main'].learning_rate = 0.00025
env_params = GymVectorEnvironment(level='CartPole-v0')
graph_manager = BasicRLGraphManager(agent_params=agent_params, env_params=env_params,
schedule_params=schedule_params, vis_params=VisualizationParameters())
Coach
presetの書き方
Copyright © GREE, Inc. All Rights Reserved.
• 独自ダッシュボード
• lossやrewardの確認
• グラフのスケールが自動で変わらずに使いにくい
• カスタムメトリックを追加可能
• TensorBoard
• ネットワーク構造や重みの確認
Coach
ダッシュボード
Copyright © GREE, Inc. All Rights Reserved.
• 環境とAgentを管理し、学習・評価全般をコントロールする
• 学習はheatup, train and act, evaluateの3フェーズに分けられる
• heatup
• replay bufferの初期値を集めるためにランダム行動
• train and act
• 環境からデータを集めながら価値関数や方策を更新
• 行動の決定の際は探索ポリシーに基づいて探索する
• evaluate
• 今のAgentの性能を評価する
• 行動の決定の際は最善行動を選択する
Coach
アーキテクチャ(Graph Manager)
Copyright © GREE, Inc. All Rights Reserved.
• 環境とAgentの相互作用を仲介する
• Coachでは環境とAgentは直接やり取りしない
• Agentを複数持つことができる
• 他のLevel Managerに対して環境として振る舞う
• 階層型の環境を実現するため
Coach
アーキテクチャ(Level Manager)
Level Manager
Level Manager
Agent
Agent
Agent
Environment
Copyright © GREE, Inc. All Rights Reserved.
• アルゴリズムを定義する
• Observe
• 環境の最新状態をLevel Managerから受け取る
• Act
• Observeで受けとった情報を元に、次の行動を決定する
• Train
• ネットワークを学習する
• パラメータはパラメータ用のクラスで管理する
• AgentParameter
• NetworkParameter
Coach
アーキテクチャ(Agent)
Copyright © GREE, Inc. All Rights Reserved.
• Input Embedders
• 入力を特徴ベクトルに変換する
• 畳み込みネットワークのImage embedder
• 多層パーセプトロンのVector embedder
• Output Heads
• アクション・状態価値などのネットワークの出力
• 複数のHeadsを持つことができる
• Actor-Criticの場合はpolicy headとstate-value headがある
• Middlewares
• Input EmbeddersとOutput Headsを繋ぐネットワーク
• 全結合ネットワークやLSTMなど
Coach
アーキテクチャ(Network)
Copyright © GREE, Inc. All Rights Reserved.
• Exploration Policies
• ε-greedy
• UCB
• etc
• Filters
• Atariのゲームで4フレームをまとめたり
• rewardを[-1, 1]の範囲に変換したり
• Memories
• experience replay
• prioritized experience replay
• etc
Coach
アーキテクチャ(その他)
Copyright © GREE, Inc. All Rights Reserved.
• メリット
• 開発が活発で実装されているアルゴリズムも多い
• 階層型強化学習や模倣学習にも対応できる
• 設定ファイルを書くだけで学習・評価ができるので共有・再現が簡単
• デメリット
• 学習状況を把握するためのダッシュボードが使いにくい
• ワーカを分散できるアルゴリズムの選択肢が少ない
• 実装が複雑で、新しいアルゴリズムを追加したり実装を読んだりするのが難しい
Coach
メリット・デメリット
Copyright © GREE, Inc. All Rights Reserved.
• 実験設定を記述してツールから実行する
• 実験設定に書く内容
• 環境
• 実行するアルゴリズム
• 学習終了条件
• アルゴリズムのハイパーパラメータ
RLlib
使い方
$ rllib train -f CartPole_DQN.yaml --checkpoint-freq 10
$ rllib rollout checkpoint-path --run DQN --env CartPole-v0
Copyright © GREE, Inc. All Rights Reserved.
cartpole-dqn:
env: CartPole-v0
run: DQN
stop:
time_total_s: 120
config:
gamma: 0.99
lr: .000025
adam_epsilon: 1.0
exploration_final_eps: .01
schedule_max_timesteps: 100
exploration_fraction: 0.09
buffer_size: 40000
checkpoint-freq: 100
RLlib
実験設定の書き方
Copyright © GREE, Inc. All Rights Reserved.
• TensorBoard
• 標準ではRewardの遷移などが見られる。lossは無い
• ネットワークの構造は見られない
• callbackという仕組みを使ってカスタムメトリックを追加できる
• episodeの開始・終了時
• step終了時
• trainの1イテレーション終了時
RLlib
ダッシュボード
Copyright © GREE, Inc. All Rights Reserved.
• Pythonの分散処理フレームワークRay上に実装されている
• Rayのget(), put(), remote()などのメソッドがよく出てくる
• Rayについて簡単に知っていないと読みにくい
RLlib
アーキテクチャ
Copyright © GREE, Inc. All Rights Reserved.
• 学習全体を制御する
• Rayのハイパーパラメータサーチ用ツール
• _train()の出力が終了条件を満たすまで、_train()を繰り返す
RLlib
アーキテクチャ(tune)
class Agent(Trainable):
def _setup(self, config):
# モデル構築
def _train(self):
# 学習
def _save(self);
# 重みの保存
def _restore(self):
# 重みの読込
Copyright © GREE, Inc. All Rights Reserved.
• アルゴリズムを定義する
• Policy Graph・Policy Evaluator・Policy Optimizerを組み合わせる
RLlib
アーキテクチャ(Agent)
Copyright © GREE, Inc. All Rights Reserved.
• Policy Graph
• ネットワークや損失関数などを定義する
• 標準ネットワークは畳み込みネットワークと多層パーセプトロン、LSTM
• Custom Modelで変更可能
• Policy Evaluator
• 環境から得たデータを前処理してPolicy Graphに入力
• Policy Graphが決定したactionを環境に作用させる
• Policy Optimizer
• どのように学習するか制御する
• replay bufferを使うか・都度Evaluatorから取得するか、同期・非同期
RLlib
アーキテクチャ (Policy [Graph|Evaluator|Optimizer])
Copyright © GREE, Inc. All Rights Reserved.
• Exploration Policies
• 数ステップ毎に一定値減衰する
• 初期値から最終値まで線形に減衰する
• Preprocessor
• Environmentの出力を前処理する
• Open AI Gymのラッパーとして実装
• Atariのゲームで4フレームをまとめたり
• rewardを[-1, 1]の範囲に変換したり
RLlib
アーキテクチャ(その他)
Copyright © GREE, Inc. All Rights Reserved.
• メリット
• 開発が活発で実装されているアルゴリズムも多い
• 学習状況を把握するためのダッシュボードが見やすい
• 設定ファイルを書くだけで学習・評価ができるので共有・再現が簡単
• Coachよりも簡単に書ける
• デメリット
• 実装が複雑で、新しいアルゴリズムを追加したり実装を読んだりするのが難しい
• (手元の環境の問題だが)MacアプリにGym InterfaceをかぶせたEnvironmentだ
とクラッシュして使えない
RLlib
メリット・デメリット
Copyright © GREE, Inc. All Rights Reserved.
ChainerRL
使い方
• exampleのコードを実行
• コマンドライン引数
• 環境
• 学習させるstep数
• ハイパーパラメータ
$ python example/train_dqn_gym.py --env CartPole-v0 --outdir
/tmp/chainerrl
Copyright © GREE, Inc. All Rights Reserved.
• 学習経過(LossやReward)のダッシュボードは用意されていない
• ファイルには出力される
• (試していないが)ステップ毎にアクションの確率などを可視化する
ツールがある
• ChainerRL Visualizer
ChainerRL
ダッシュボード
Copyright © GREE, Inc. All Rights Reserved.
• experiments
• Agentを学習・評価するループを回す仕組み
• Evaluator
• Agentを評価する
• これまでの最高スコアなどを管理
• Agent
• アルゴリズムを定義
• Model
• ネットワークを定義
• Wrapper
• Gymラッパー
• Envの出力を前処理する
ChainerRL
アーキテクチャ
experiments
Agent
Evaluator
Environment Environment
model
Copyright © GREE, Inc. All Rights Reserved.
• メリット
• 実装されているアルゴリズムが多い
• 実装が読みやすい
• ChainerRL Visualizerを使うと、バランス調整などに役立ちそう
• デメリット
• コマンドライン引数で実験設定を渡すので、別途設定を管理する必要がある
• ChainerがTensorFlowほどメジャーではない
ChainerRL
メリット・デメリット
Copyright © GREE, Inc. All Rights Reserved.
• 普通のKerasと同じような書き方
• modelのcompile
• fit
Keras-RL
使い方
env = gym.make(‘CartPole-v0’)
model = Sequential()
model.add(Flatten(input_shape=(1,) + env.observation_space.shape))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(env.action_space.n))
model.add(Activation('linear'))
memory = SequentialMemory(limit=40000, window_length=1)
policy = EpsGreedyQPolicy()
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10,
policy=policy)
dqn.compile(Adam(lr=1e-3), metrics=['mae'])
dqn.fit(env, nb_steps=50000)
dqn.test(env, nb_episodes=5)
Copyright © GREE, Inc. All Rights Reserved.
• Matplotlib
• jsonで出力されたログをプロットするためのサンプルスクリプトあり
• 見にくい
Keras-RL
ダッシュボード
Copyright © GREE, Inc. All Rights Reserved.
• Agent
• 学習・評価のループを回す
• アルゴリズムを定義
• Model
• ネットワークを定義
• Processor
• 環境からの出力を前処理する
Keras-RL
アーキテクチャ
Agent
Environmentmodel processor
Copyright © GREE, Inc. All Rights Reserved.
• メリット
• ネットワークの変更が簡単
• 実装が読みやすい
• デメリット
• 実装されているアルゴリズムが少ない
• 複数ワーカに分散させて学習ができない
Keras-RL
メリット・デメリット
Copyright © GREE, Inc. All Rights Reserved.
StableBaseline
使い方
• 簡単なコードを書く
env = gym.make('CartPole-v0')
env = DummyVecEnv([lambda: env])
model = DQN(MlpPolicy, env, verbose=1)
model.learn(total_timesteps=5000)
model.save("deepq_cartpole")
del model # remove to demonstrate saving and loading
model = DQN.load("deepq_cartpole")
obs = env.reset()
while True:
action, _states = model.predict(obs)
obs, rewards, dones, info = env.step(action)
env.render()
Copyright © GREE, Inc. All Rights Reserved.
• TensorBoard
• ネットワーク構造
• reward, loss
• 自分でネットワークを定義すればtf.summaryで追加できる
• その他
• step毎に呼び出されるcallbackを定義すれば、ファイルなどに値を出力可能
StableBaseline
ダッシュボード
Copyright © GREE, Inc. All Rights Reserved.
• Model
• 学習のループを回す
• アルゴリズムを定義する
• Policy
• ネットワークを定義する
• 多層パーセプトロン、畳み込み、LSTM
• EnvWrapper
• 環境からの出力を前処理
• マルチワーカ対応
StableBaseline
アーキテクチャ
Model
Policy
EnvWrapper
Environment
Environment
Copyright © GREE, Inc. All Rights Reserved.
• メリット
• ネットワークの変更が簡単
• 実装が読みやすい
• ダッシュボードが見やすい
• デメリット
• 実験のためにコードを書かないといけない
StableBaseline
メリット・デメリット
Copyright © GREE, Inc. All Rights Reserved.
• 実験設定を記述してツールから実行する
• 実験設定に書く内容
• 環境
• 学習させるstep数
• アルゴリズムのハイパーパラメータ
Dopamine
使い方
$ python -um dopamine.atari.train --agent_name=dqn --
base_dir=/tmp/dopamine --gin_files=’dqn.gin’
Copyright © GREE, Inc. All Rights Reserved.
DQNAgent.gamma = 0.99
DQNAgent.epsilon_train = 0.01
DQNAgent.epsilon_eval = 0.001
DQNAgent.epsilon_decay_period = 250000 # agent steps
DQNAgent.optimizer = @tf.train.RMSPropOptimizer()
tf.train.RMSPropOptimizer.learning_rate = 0.00025
tf.train.RMSPropOptimizer.decay = 0.95
tf.train.RMSPropOptimizer.momentum = 0.0
tf.train.RMSPropOptimizer.epsilon = 0.00001
Runner.game_name = 'Pong’
Runner.sticky_actions = True
Runner.num_iterations = 200
Runner.training_steps = 250000 # agent steps
Runner.evaluation_steps = 125000 # agent steps
Runner.max_steps_per_episode = 27000 # agent steps
WrappedReplayBuffer.replay_capacity = 1000000
WrappedReplayBuffer.batch_size = 32
Dopamine
実験設定の書き方
Copyright © GREE, Inc. All Rights Reserved.
• TensorBoard
• ネットワーク構造、報酬の平均、エピソード数のみ
Dopamine
ダッシュボード
Copyright © GREE, Inc. All Rights Reserved.
• メリット
• TensorFlowによる参考実装としては読みやすい
• 実験設定の書き方は簡単
• デメリット
• ドキュメントが全く足りていない
• 実装されているアルゴリズムが少ない
Dopamine
メリット・デメリット
Copyright © GREE, Inc. All Rights Reserved.
• ChainerRL、StableBaselineから使い始めると良さそう
• アルゴリズムが揃っている
• ダッシュボードが見やすい (ChainerRL Visualizerは試してみたい)
• 実装が読みやすい
• もっと複雑なことがしたくなったらCoach, RLlib
• 階層型の環境やマルチエージェント環境が使いやすいようになっている
• 複数ノードにワーカを分散する仕組みが入っている
• 複雑なので、Agentにわたすパラメータの意味を実装から読み解くのがしんどい
まとめ
1 of 40

Recommended

強化学習 DQNからPPOまで by
強化学習 DQNからPPOまで強化学習 DQNからPPOまで
強化学習 DQNからPPOまでharmonylab
9.6K views45 slides
強化学習アルゴリズムPPOの解説と実験 by
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験克海 納谷
2.8K views22 slides
[Dl輪読会]introduction of reinforcement learning by
[Dl輪読会]introduction of reinforcement learning[Dl輪読会]introduction of reinforcement learning
[Dl輪読会]introduction of reinforcement learningDeep Learning JP
6K views46 slides
多様な強化学習の概念と課題認識 by
多様な強化学習の概念と課題認識多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識佑 甲野
58K views38 slides
DQNからRainbowまで 〜深層強化学習の最新動向〜 by
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜Jun Okumura
87.1K views94 slides
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning by
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement LearningPreferred Networks
117.4K views93 slides

More Related Content

What's hot

強化学習と逆強化学習を組み合わせた模倣学習 by
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習Eiji Uchibe
25.3K views48 slides
強化学習の分散アーキテクチャ変遷 by
強化学習の分散アーキテクチャ変遷強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷Eiji Sekiya
15.1K views83 slides
強化学習における好奇心 by
強化学習における好奇心強化学習における好奇心
強化学習における好奇心Shota Imai
3.3K views140 slides
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜 by
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII
3.7K views146 slides
[DL輪読会] マルチエージェント強化学習と心の理論 by
[DL輪読会] マルチエージェント強化学習と心の理論[DL輪読会] マルチエージェント強化学習と心の理論
[DL輪読会] マルチエージェント強化学習と心の理論Deep Learning JP
4.1K views42 slides
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling by
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence ModelingDeep Learning JP
2.9K views25 slides

What's hot(20)

強化学習と逆強化学習を組み合わせた模倣学習 by Eiji Uchibe
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習
Eiji Uchibe25.3K views
強化学習の分散アーキテクチャ変遷 by Eiji Sekiya
強化学習の分散アーキテクチャ変遷強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷
Eiji Sekiya15.1K views
強化学習における好奇心 by Shota Imai
強化学習における好奇心強化学習における好奇心
強化学習における好奇心
Shota Imai3.3K views
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜 by SSII
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII3.7K views
[DL輪読会] マルチエージェント強化学習と心の理論 by Deep Learning JP
[DL輪読会] マルチエージェント強化学習と心の理論[DL輪読会] マルチエージェント強化学習と心の理論
[DL輪読会] マルチエージェント強化学習と心の理論
Deep Learning JP4.1K views
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling by Deep Learning JP
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
Deep Learning JP2.9K views
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2 by Preferred Networks
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
Preferred Networks5.8K views
画像認識の初歩、SIFT,SURF特徴量 by takaya imai
画像認識の初歩、SIFT,SURF特徴量画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
takaya imai228.5K views
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習 by Hori Tasuku
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
Hori Tasuku1.6K views
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演) by Shota Imai
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
Shota Imai2.3K views
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展 by Deep Learning JP
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
Deep Learning JP3.1K views
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング by mlm_kansai
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai67.6K views
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021) by Deep Learning JP
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
Deep Learning JP3.7K views
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing by Deep Learning JP
[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
Deep Learning JP3K views
Transformerを雰囲気で理解する by AtsukiYamaguchi1
Transformerを雰囲気で理解するTransformerを雰囲気で理解する
Transformerを雰囲気で理解する
AtsukiYamaguchi14.8K views
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料) by Shota Imai
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai274.5K views
強化学習その3 by nishio
強化学習その3強化学習その3
強化学習その3
nishio26.8K views
強化学習の基礎的な考え方と問題の分類 by 佑 甲野
強化学習の基礎的な考え方と問題の分類強化学習の基礎的な考え方と問題の分類
強化学習の基礎的な考え方と問題の分類
佑 甲野71.4K views
[DL輪読会]`強化学習のための状態表現学習 -より良い「世界モデル」の獲得に向けて- by Deep Learning JP
[DL輪読会]`強化学習のための状態表現学習 -より良い「世界モデル」の獲得に向けて-[DL輪読会]`強化学習のための状態表現学習 -より良い「世界モデル」の獲得に向けて-
[DL輪読会]`強化学習のための状態表現学習 -より良い「世界モデル」の獲得に向けて-
Deep Learning JP5.2K views

Similar to OSS強化学習フレームワークの比較

DataEngConf NYC’18 セッションサマリー #2 by
DataEngConf NYC’18 セッションサマリー #2DataEngConf NYC’18 セッションサマリー #2
DataEngConf NYC’18 セッションサマリー #2gree_tech
3.6K views43 slides
HerokuでRailsアプリ運用の パフォーマンス、SEO対策 by
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策Salesforce Developers Japan
3.4K views48 slides
実録!Railsのはまりポイント10選 by
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選Drecom Co., Ltd.
24.5K views53 slides
ターン制コマンドバトルにおける強化学習効率化 by
ターン制コマンドバトルにおける強化学習効率化ターン制コマンドバトルにおける強化学習効率化
ターン制コマンドバトルにおける強化学習効率化gree_tech
5.3K views23 slides
グリーにおけるSumo Logic活用事例 by
グリーにおけるSumo Logic活用事例グリーにおけるSumo Logic活用事例
グリーにおけるSumo Logic活用事例gree_tech
619 views18 slides
Oracle設計 by
Oracle設計Oracle設計
Oracle設計Kouta Shiobara
4K views34 slides

Similar to OSS強化学習フレームワークの比較(20)

DataEngConf NYC’18 セッションサマリー #2 by gree_tech
DataEngConf NYC’18 セッションサマリー #2DataEngConf NYC’18 セッションサマリー #2
DataEngConf NYC’18 セッションサマリー #2
gree_tech3.6K views
HerokuでRailsアプリ運用の パフォーマンス、SEO対策 by Salesforce Developers Japan
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
実録!Railsのはまりポイント10選 by Drecom Co., Ltd.
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選
Drecom Co., Ltd.24.5K views
ターン制コマンドバトルにおける強化学習効率化 by gree_tech
ターン制コマンドバトルにおける強化学習効率化ターン制コマンドバトルにおける強化学習効率化
ターン制コマンドバトルにおける強化学習効率化
gree_tech5.3K views
グリーにおけるSumo Logic活用事例 by gree_tech
グリーにおけるSumo Logic活用事例グリーにおけるSumo Logic活用事例
グリーにおけるSumo Logic活用事例
gree_tech619 views
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介 by gree_tech
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
gree_tech4.7K views
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3] by David Buck
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
David Buck155 views
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編 by Fixstars Corporation
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1] by David Buck
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
David Buck186 views
OSS強化学習向けゲーム環境の動向 by gree_tech
OSS強化学習向けゲーム環境の動向OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向
gree_tech2.7K views
Example of exiting legacy system by TakamchiTanaka
Example of exiting legacy systemExample of exiting legacy system
Example of exiting legacy system
TakamchiTanaka2.3K views
Java 10でぼくたちの生活はどう変わるの? by Yuji Kubota
Java 10でぼくたちの生活はどう変わるの?Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota11.3K views
AndApp開発における全て #denatechcon by DeNA
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
DeNA2.7K views
[DLHacks]Comet ML -機械学習のためのGitHub- by Deep Learning JP
[DLHacks]Comet ML -機械学習のためのGitHub-[DLHacks]Comet ML -機械学習のためのGitHub-
[DLHacks]Comet ML -機械学習のためのGitHub-
Deep Learning JP7.1K views
大規模データに対するデータサイエンスの進め方 #CWT2016 by Cloudera Japan
大規模データに対するデータサイエンスの進め方 #CWT2016大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016
Cloudera Japan19.5K views
大規模Perl初心者研修を支える技術 by Daisuke Tamada
大規模Perl初心者研修を支える技術大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
Daisuke Tamada78.4K views
Asakusa バッチの運用を支える技術 by KinebuchiTomo
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
KinebuchiTomo1.5K views

More from gree_tech

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
727 views36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介gree_tech
229 views13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表gree_tech
1K views18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~ by
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
1.9K views84 slides
長寿なゲーム事業におけるアプリビルドの効率化 by
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化gree_tech
347 views116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介 by
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介gree_tech
685 views31 slides

More from gree_tech(20)

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech727 views
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by gree_tech
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech229 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by gree_tech
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech1K views
アプリ起動時間高速化 ~推測するな、計測せよ~ by gree_tech
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech1.9K views
長寿なゲーム事業におけるアプリビルドの効率化 by gree_tech
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech347 views
Cloud Spanner をより便利にする運用支援ツールの紹介 by gree_tech
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech685 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 by gree_tech
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech599 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について by gree_tech
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてSINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
gree_tech626 views
海外展開と負荷試験 by gree_tech
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
gree_tech593 views
翻訳QAでのテスト自動化の取り組み by gree_tech
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み
gree_tech305 views
組み込み開発のテストとゲーム開発のテストの違い by gree_tech
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い
gree_tech576 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech209 views
データエンジニアとアナリストチーム兼務になった件について by gree_tech
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件について
gree_tech308 views
シェアドサービスとしてのデータテクノロジー by gree_tech
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジー
gree_tech432 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて- by gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech1K views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話 by gree_tech
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech1.1K views
比較サイトの検索改善(SPA から SSR に変換) by gree_tech
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech694 views
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行 by gree_tech
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech2.9K views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜 by gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech397 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮) by gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech752 views

Recently uploaded

JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私修治 松浦
208 views36 slides
Najah Matsuo Self Introduction by
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self IntroductionNajahMatsuo
10 views29 slides
onewedge_companyguide1 by
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1ONEWEDGE1
54 views22 slides
システム概要.pdf by
システム概要.pdfシステム概要.pdf
システム概要.pdfTaira Shimizu
44 views1 slide
概要.pdf by
概要.pdf概要.pdf
概要.pdfTaira Shimizu
6 views1 slide
SSH超入門 by
SSH超入門SSH超入門
SSH超入門Toru Miyahara
457 views21 slides

Recently uploaded(6)

JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by 修治 松浦
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦208 views
Najah Matsuo Self Introduction by NajahMatsuo
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self Introduction
NajahMatsuo10 views
onewedge_companyguide1 by ONEWEDGE1
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1
ONEWEDGE154 views

OSS強化学習フレームワークの比較

  • 1. Copyright © GREE, Inc. All Rights Reserved. OSS強化学習フレームワークの 比較 2019/01/16 グリー株式会社 開発本部 辻本 貴昭
  • 2. Copyright © GREE, Inc. All Rights Reserved. • グリーでの利用例 • フレームワーク全体のざっくりとした比較 • 各フレームワークごとの紹介 • Coach • RLlib • ChainerRL • Keras-RL • StableBaseline • Dopamine • Horizon 概要
  • 3. Copyright © GREE, Inc. All Rights Reserved. • 敵のパラメータを調整後、バトルを繰り返して確認 • 想定通りのダメージ量になっているか? • 乱数の影響は想定の範囲内に収まっているか? • 問題点 • キャラクターの性能を把握していないとできない • かなり時間がかかる • 解決案 • バトルプレイAIの導入 • ルールを記述したり、バトルの状態毎に教師データを用意するのはほぼ不可能 • 強化学習でなんとかならないか? 利用例 ターン制コマンドバトルRPGでのバランス確認
  • 4. Copyright © GREE, Inc. All Rights Reserved. • DQN, A3Cはだいたいどのフレームワークでも実装されている • 実装済みアルゴリズムはCoachが多い(ChainerRL, RLlibもそれなり) • 分散アルゴリズムはRLlibが充実している(Ape-X, IMPALAなど) • Dopamine, Keras-RLは実装済みアルゴリズムが少ない フレームワーク全体の比較 実装されているアルゴリズム
  • 5. Copyright © GREE, Inc. All Rights Reserved. • 統合フレームワーク型 • 広範囲に抽象化している • 階層型・マルチエージェント環境に対応している • Coach, RLlib • 参考実装型 • 各アルゴリズムを統一したインターフェースで学習・推論できるようにしている • ChainerRL, Keras-RL, Dopamine, StableBaseline • 番外編 • ゲームQA・バランス調整の観点でみると目的が違うもの • Horizon • シミュレータが用意できないオフライン学習が主な目的 • ストリーミング配信のビットレート最適化に使っているらしい フレームワーク全体の比較 フレームワークの思想の違い
  • 6. Copyright © GREE, Inc. All Rights Reserved. • 実験設定(preset)を記述してツールから実行する • presetに書く内容 • 学習させるステップ数 • どの学習アルゴリズムを利用するか • アルゴリズムごとのハイパーパラメータ • 環境の設定 Coach 使い方 $ coach -p CartPole_DQN $ coach -p CartPole_DQN –crd checkpoint-dir --evaluate
  • 7. Copyright © GREE, Inc. All Rights Reserved. schedule_params = ScheduleParameters() schedule_params.improve_steps = TrainingSteps(10000) schedule_params.steps_between_evaluation_periods = EnvironmentEpisodes(10) schedule_params.evaluation_steps = EnvironmentEpisodes(1) schedule_params.heatup_steps = EnvironmentSteps(1000) agent_params = DQNAgentParameters() agent_params.algorithm.discount = 0.99 agent_params.memory.max_size = (MemoryGranularity.Transitions, 40000) agent_params.exploration.epsilon_schedule = LinearSchedule(1.0, 0.01, 10000) agent_params.network_wrappers['main'].learning_rate = 0.00025 env_params = GymVectorEnvironment(level='CartPole-v0') graph_manager = BasicRLGraphManager(agent_params=agent_params, env_params=env_params, schedule_params=schedule_params, vis_params=VisualizationParameters()) Coach presetの書き方
  • 8. Copyright © GREE, Inc. All Rights Reserved. • 独自ダッシュボード • lossやrewardの確認 • グラフのスケールが自動で変わらずに使いにくい • カスタムメトリックを追加可能 • TensorBoard • ネットワーク構造や重みの確認 Coach ダッシュボード
  • 9. Copyright © GREE, Inc. All Rights Reserved. • 環境とAgentを管理し、学習・評価全般をコントロールする • 学習はheatup, train and act, evaluateの3フェーズに分けられる • heatup • replay bufferの初期値を集めるためにランダム行動 • train and act • 環境からデータを集めながら価値関数や方策を更新 • 行動の決定の際は探索ポリシーに基づいて探索する • evaluate • 今のAgentの性能を評価する • 行動の決定の際は最善行動を選択する Coach アーキテクチャ(Graph Manager)
  • 10. Copyright © GREE, Inc. All Rights Reserved. • 環境とAgentの相互作用を仲介する • Coachでは環境とAgentは直接やり取りしない • Agentを複数持つことができる • 他のLevel Managerに対して環境として振る舞う • 階層型の環境を実現するため Coach アーキテクチャ(Level Manager) Level Manager Level Manager Agent Agent Agent Environment
  • 11. Copyright © GREE, Inc. All Rights Reserved. • アルゴリズムを定義する • Observe • 環境の最新状態をLevel Managerから受け取る • Act • Observeで受けとった情報を元に、次の行動を決定する • Train • ネットワークを学習する • パラメータはパラメータ用のクラスで管理する • AgentParameter • NetworkParameter Coach アーキテクチャ(Agent)
  • 12. Copyright © GREE, Inc. All Rights Reserved. • Input Embedders • 入力を特徴ベクトルに変換する • 畳み込みネットワークのImage embedder • 多層パーセプトロンのVector embedder • Output Heads • アクション・状態価値などのネットワークの出力 • 複数のHeadsを持つことができる • Actor-Criticの場合はpolicy headとstate-value headがある • Middlewares • Input EmbeddersとOutput Headsを繋ぐネットワーク • 全結合ネットワークやLSTMなど Coach アーキテクチャ(Network)
  • 13. Copyright © GREE, Inc. All Rights Reserved. • Exploration Policies • ε-greedy • UCB • etc • Filters • Atariのゲームで4フレームをまとめたり • rewardを[-1, 1]の範囲に変換したり • Memories • experience replay • prioritized experience replay • etc Coach アーキテクチャ(その他)
  • 14. Copyright © GREE, Inc. All Rights Reserved. • メリット • 開発が活発で実装されているアルゴリズムも多い • 階層型強化学習や模倣学習にも対応できる • 設定ファイルを書くだけで学習・評価ができるので共有・再現が簡単 • デメリット • 学習状況を把握するためのダッシュボードが使いにくい • ワーカを分散できるアルゴリズムの選択肢が少ない • 実装が複雑で、新しいアルゴリズムを追加したり実装を読んだりするのが難しい Coach メリット・デメリット
  • 15. Copyright © GREE, Inc. All Rights Reserved. • 実験設定を記述してツールから実行する • 実験設定に書く内容 • 環境 • 実行するアルゴリズム • 学習終了条件 • アルゴリズムのハイパーパラメータ RLlib 使い方 $ rllib train -f CartPole_DQN.yaml --checkpoint-freq 10 $ rllib rollout checkpoint-path --run DQN --env CartPole-v0
  • 16. Copyright © GREE, Inc. All Rights Reserved. cartpole-dqn: env: CartPole-v0 run: DQN stop: time_total_s: 120 config: gamma: 0.99 lr: .000025 adam_epsilon: 1.0 exploration_final_eps: .01 schedule_max_timesteps: 100 exploration_fraction: 0.09 buffer_size: 40000 checkpoint-freq: 100 RLlib 実験設定の書き方
  • 17. Copyright © GREE, Inc. All Rights Reserved. • TensorBoard • 標準ではRewardの遷移などが見られる。lossは無い • ネットワークの構造は見られない • callbackという仕組みを使ってカスタムメトリックを追加できる • episodeの開始・終了時 • step終了時 • trainの1イテレーション終了時 RLlib ダッシュボード
  • 18. Copyright © GREE, Inc. All Rights Reserved. • Pythonの分散処理フレームワークRay上に実装されている • Rayのget(), put(), remote()などのメソッドがよく出てくる • Rayについて簡単に知っていないと読みにくい RLlib アーキテクチャ
  • 19. Copyright © GREE, Inc. All Rights Reserved. • 学習全体を制御する • Rayのハイパーパラメータサーチ用ツール • _train()の出力が終了条件を満たすまで、_train()を繰り返す RLlib アーキテクチャ(tune) class Agent(Trainable): def _setup(self, config): # モデル構築 def _train(self): # 学習 def _save(self); # 重みの保存 def _restore(self): # 重みの読込
  • 20. Copyright © GREE, Inc. All Rights Reserved. • アルゴリズムを定義する • Policy Graph・Policy Evaluator・Policy Optimizerを組み合わせる RLlib アーキテクチャ(Agent)
  • 21. Copyright © GREE, Inc. All Rights Reserved. • Policy Graph • ネットワークや損失関数などを定義する • 標準ネットワークは畳み込みネットワークと多層パーセプトロン、LSTM • Custom Modelで変更可能 • Policy Evaluator • 環境から得たデータを前処理してPolicy Graphに入力 • Policy Graphが決定したactionを環境に作用させる • Policy Optimizer • どのように学習するか制御する • replay bufferを使うか・都度Evaluatorから取得するか、同期・非同期 RLlib アーキテクチャ (Policy [Graph|Evaluator|Optimizer])
  • 22. Copyright © GREE, Inc. All Rights Reserved. • Exploration Policies • 数ステップ毎に一定値減衰する • 初期値から最終値まで線形に減衰する • Preprocessor • Environmentの出力を前処理する • Open AI Gymのラッパーとして実装 • Atariのゲームで4フレームをまとめたり • rewardを[-1, 1]の範囲に変換したり RLlib アーキテクチャ(その他)
  • 23. Copyright © GREE, Inc. All Rights Reserved. • メリット • 開発が活発で実装されているアルゴリズムも多い • 学習状況を把握するためのダッシュボードが見やすい • 設定ファイルを書くだけで学習・評価ができるので共有・再現が簡単 • Coachよりも簡単に書ける • デメリット • 実装が複雑で、新しいアルゴリズムを追加したり実装を読んだりするのが難しい • (手元の環境の問題だが)MacアプリにGym InterfaceをかぶせたEnvironmentだ とクラッシュして使えない RLlib メリット・デメリット
  • 24. Copyright © GREE, Inc. All Rights Reserved. ChainerRL 使い方 • exampleのコードを実行 • コマンドライン引数 • 環境 • 学習させるstep数 • ハイパーパラメータ $ python example/train_dqn_gym.py --env CartPole-v0 --outdir /tmp/chainerrl
  • 25. Copyright © GREE, Inc. All Rights Reserved. • 学習経過(LossやReward)のダッシュボードは用意されていない • ファイルには出力される • (試していないが)ステップ毎にアクションの確率などを可視化する ツールがある • ChainerRL Visualizer ChainerRL ダッシュボード
  • 26. Copyright © GREE, Inc. All Rights Reserved. • experiments • Agentを学習・評価するループを回す仕組み • Evaluator • Agentを評価する • これまでの最高スコアなどを管理 • Agent • アルゴリズムを定義 • Model • ネットワークを定義 • Wrapper • Gymラッパー • Envの出力を前処理する ChainerRL アーキテクチャ experiments Agent Evaluator Environment Environment model
  • 27. Copyright © GREE, Inc. All Rights Reserved. • メリット • 実装されているアルゴリズムが多い • 実装が読みやすい • ChainerRL Visualizerを使うと、バランス調整などに役立ちそう • デメリット • コマンドライン引数で実験設定を渡すので、別途設定を管理する必要がある • ChainerがTensorFlowほどメジャーではない ChainerRL メリット・デメリット
  • 28. Copyright © GREE, Inc. All Rights Reserved. • 普通のKerasと同じような書き方 • modelのcompile • fit Keras-RL 使い方 env = gym.make(‘CartPole-v0’) model = Sequential() model.add(Flatten(input_shape=(1,) + env.observation_space.shape)) model.add(Dense(16)) model.add(Activation('relu')) model.add(Dense(16)) model.add(Activation('relu')) model.add(Dense(env.action_space.n)) model.add(Activation('linear')) memory = SequentialMemory(limit=40000, window_length=1) policy = EpsGreedyQPolicy() dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, policy=policy) dqn.compile(Adam(lr=1e-3), metrics=['mae']) dqn.fit(env, nb_steps=50000) dqn.test(env, nb_episodes=5)
  • 29. Copyright © GREE, Inc. All Rights Reserved. • Matplotlib • jsonで出力されたログをプロットするためのサンプルスクリプトあり • 見にくい Keras-RL ダッシュボード
  • 30. Copyright © GREE, Inc. All Rights Reserved. • Agent • 学習・評価のループを回す • アルゴリズムを定義 • Model • ネットワークを定義 • Processor • 環境からの出力を前処理する Keras-RL アーキテクチャ Agent Environmentmodel processor
  • 31. Copyright © GREE, Inc. All Rights Reserved. • メリット • ネットワークの変更が簡単 • 実装が読みやすい • デメリット • 実装されているアルゴリズムが少ない • 複数ワーカに分散させて学習ができない Keras-RL メリット・デメリット
  • 32. Copyright © GREE, Inc. All Rights Reserved. StableBaseline 使い方 • 簡単なコードを書く env = gym.make('CartPole-v0') env = DummyVecEnv([lambda: env]) model = DQN(MlpPolicy, env, verbose=1) model.learn(total_timesteps=5000) model.save("deepq_cartpole") del model # remove to demonstrate saving and loading model = DQN.load("deepq_cartpole") obs = env.reset() while True: action, _states = model.predict(obs) obs, rewards, dones, info = env.step(action) env.render()
  • 33. Copyright © GREE, Inc. All Rights Reserved. • TensorBoard • ネットワーク構造 • reward, loss • 自分でネットワークを定義すればtf.summaryで追加できる • その他 • step毎に呼び出されるcallbackを定義すれば、ファイルなどに値を出力可能 StableBaseline ダッシュボード
  • 34. Copyright © GREE, Inc. All Rights Reserved. • Model • 学習のループを回す • アルゴリズムを定義する • Policy • ネットワークを定義する • 多層パーセプトロン、畳み込み、LSTM • EnvWrapper • 環境からの出力を前処理 • マルチワーカ対応 StableBaseline アーキテクチャ Model Policy EnvWrapper Environment Environment
  • 35. Copyright © GREE, Inc. All Rights Reserved. • メリット • ネットワークの変更が簡単 • 実装が読みやすい • ダッシュボードが見やすい • デメリット • 実験のためにコードを書かないといけない StableBaseline メリット・デメリット
  • 36. Copyright © GREE, Inc. All Rights Reserved. • 実験設定を記述してツールから実行する • 実験設定に書く内容 • 環境 • 学習させるstep数 • アルゴリズムのハイパーパラメータ Dopamine 使い方 $ python -um dopamine.atari.train --agent_name=dqn -- base_dir=/tmp/dopamine --gin_files=’dqn.gin’
  • 37. Copyright © GREE, Inc. All Rights Reserved. DQNAgent.gamma = 0.99 DQNAgent.epsilon_train = 0.01 DQNAgent.epsilon_eval = 0.001 DQNAgent.epsilon_decay_period = 250000 # agent steps DQNAgent.optimizer = @tf.train.RMSPropOptimizer() tf.train.RMSPropOptimizer.learning_rate = 0.00025 tf.train.RMSPropOptimizer.decay = 0.95 tf.train.RMSPropOptimizer.momentum = 0.0 tf.train.RMSPropOptimizer.epsilon = 0.00001 Runner.game_name = 'Pong’ Runner.sticky_actions = True Runner.num_iterations = 200 Runner.training_steps = 250000 # agent steps Runner.evaluation_steps = 125000 # agent steps Runner.max_steps_per_episode = 27000 # agent steps WrappedReplayBuffer.replay_capacity = 1000000 WrappedReplayBuffer.batch_size = 32 Dopamine 実験設定の書き方
  • 38. Copyright © GREE, Inc. All Rights Reserved. • TensorBoard • ネットワーク構造、報酬の平均、エピソード数のみ Dopamine ダッシュボード
  • 39. Copyright © GREE, Inc. All Rights Reserved. • メリット • TensorFlowによる参考実装としては読みやすい • 実験設定の書き方は簡単 • デメリット • ドキュメントが全く足りていない • 実装されているアルゴリズムが少ない Dopamine メリット・デメリット
  • 40. Copyright © GREE, Inc. All Rights Reserved. • ChainerRL、StableBaselineから使い始めると良さそう • アルゴリズムが揃っている • ダッシュボードが見やすい (ChainerRL Visualizerは試してみたい) • 実装が読みやすい • もっと複雑なことがしたくなったらCoach, RLlib • 階層型の環境やマルチエージェント環境が使いやすいようになっている • 複数ノードにワーカを分散する仕組みが入っている • 複雑なので、Agentにわたすパラメータの意味を実装から読み解くのがしんどい まとめ