OpenAI

強化学習「OpenAI Gym」を使って強化学習の流れを体験してみる

OpenAI Gymの流れを体験する

前回に続けて、OpenAI Gymで、環境の生成から終了までの流れを体験してみます。

おおまか流れは、環境を生成、環境を初期化をしてから、環境を1ステップ実行( エージェントが行動)を繰り返し、繰り返し終えたら環境を終了させるという感じです。

環境を生成

env = gym.make(id)

IDには、OpenAI Gymが提供している環境のIDを渡します。
一覧の取得は参考リンクにコードがあります。以下のようにしても一覧で確認できます。

from gym import envs
print(envs.registry.all()) 

環境を初期化

observation = env.reset()

環境の状態をリセットし、初期の状態(観察値)を返します。

観察値という言葉が出てきましたが、環境に行動を渡したときに返ってくる環境の状態を観察値と呼ぶことがあります。

今は流れを確認したいので、このときに返される、状態(観察値)の型については、後ほど説明します。

環境を描画

env.render(mode)

modeには描画モードを渡すことができます。環境に描画モードが定義されている場合に使用できます。描画モードは、慣例として以下の定数が使われているようです。

描画モード説明
humanディスプレイへ描画
rgb_array画像のRGB配列を返す
ansiテキストを返す

環境の初期化と描画ができたので、 エージェントを行動(1ステップ実行) させてみます。

環境を1ステップ実行( エージェントが行動)

observation, reward, done, info = env.step(action)

環境にaction(行動)を渡して、 状態(観察値) 、報酬(行動の価値の量)、エピソードの完了(環境での更新の必要がなくなったか)、情報(デバッグ向けの情報など)を返します。

今は流れを確認したいので、このときに返される、行動の型については、後ほど説明します。

環境の終了

env.close()

環境を終了します。

状態と行動について

環境の初期化時に返ってくる状態と、環境を1ステップ実行( エージェントが行動)時に渡す行動と、返ってくる状態。それぞれの状態行動について、OpenAI Gymでは、状態空間( observation_space )と行動空間 ( action_space ) の型がgym.spacesパッケージに用意されています。

パッケージには、Box, Discrete, MultiBinary, MultiDiscreteなどが用意されていることが確認できます。

前回のデモで確認した、「CartPole」(ソースコード)を例に確認してみます。

環境( CartPoleEnv )の、 Observation は、Box(4)で、4つ(カートの位置、カートの速度など)とそれぞれの値が取りうる範囲[-4.8, 4.8]などが定義されていることが確認できます。Box は、このような範囲の要素を持つ多次元配列の型です。

Actionsは、 Discrete(2) で、0でカートを左に動かす、1でカートを右に動かすの2つが定義されていることが確認できます。 Discrete はこのような、離散的な数値の配列の型です。

OpenAI Gymのインタフェースについて

OpenAI Gymは、エージェントと環境で、インタフェースを共通化させています。こうすることで、環境とエージェントを組み合わせたときに、いずれも同じ扱いをすることができます。

上記で体験した、OpenAI Gymの流れや説明を直接コードで確認したい方は下記のcore.pyを読んでみてください。