その他プログラム

OpenAI Gymの前処理

  • LINEで送る

680 views

     

OpenAI Gymでは環境ラッパーで前処理を追加できるようになっています。

前処理

前処理とは、環境とエージェントがやり取りする情報を、エージェントが学習しやすい形式に変換する処理のことで、「行動」「状態」は学習速度とサンプル効率、「報酬」「エピソード完了」は目標設定が主な目的になります。

処理対象目的
行動型の低次元化による学習速度の向上
サンプル効率を考慮した、型の指定
決まりきった操作の実施(環境リセット後の最初の行動を「FIRE」とするなど)
状態型の低次元化による学習速度の向上
サンプル効率を考慮した、型の指定
報酬目標設定を考慮した、報酬のタイミングと量の調整
サンプル効率を考慮した、報酬のタイミングと量の調整
エピソード完了目標設定を考慮した、エピソード完了の条件の指定
エピソードを短くすることによる、学習回数の向上

環境ラッパー

前処理を提供する環境ラッパーは、用途や環境に合わせて様々な種類が提供されています。

種類説明提供元
Monitorラッパー学習状況の監視OpenAI Gym/Stable Baselines
AtariラッパーAtari環境用の前処理OpenAI Baselines
RetroラッパーGym Retro環境用の前処理OpenAI Baselines
CommonラッパーGym環境用の前処理OpenAI Baselines
VecEnvラッパーベクトル化環境専用の前処理Stable Baselines

Atariラッパー

Atariの環境用の前処理を行う環境ラッパー。Atari環境を攻略したことで有名な学習アルゴリズム「DQN」の論文などで紹介されている各種手法が提供されている。

atari_wrapper.py入手場所

NoopResetEnvラッパー

環境リセット後は行動なしとすることで、ゲーム開始状態にばらつきを与え、特定の開始状態に特化した学習とならないようにします。

FireResetEnvラッパー

環境リセット後の最初の行動をFIREとすることで、強制的にゲームを開始させゲームの学習がすぐできるようにします。

MaxAndSkipEnvラッパー

Atari環境では60フレーム/秒でゲームが進むが、行動選択はそれほど頻繁には行わないため、4フレームに1度行動を切り替えるようにすることで、学習速度を向上させます。

ClipRewardEnvラッパー

報酬を「-1」「0」「1」にクリッピングすることで、環境ごとの報酬サイズの違いをなくし、複数の環境を同じモデルで攻略できるようにします。

WrapFrameラッパー

画面イメージを84×84のグレースケールに変換することで、データ量を少なくし学習速度を向上します。

FrameStackラッパー

直近4フレームから推論するようにすることで、連続した動きの特徴抽出を可能にします。

ScaledFloatFrameラッパー

環境の状態を正規化することで、学習効率が上がるようにします。

EpisodicLifeEnvラッパー

ライフ0でエピソード完了とすると完了までに時間がかかるため、ライフ減少でエピソード完了とすることで学習効率が上がるようにします。ただし、環境リセットはライフ0の時だけにします。

DeepMindスタイルのラッパー

DeepMindスタイルのラッパーを追加する便利メソッド。

DeepMind

Retroラッパー

Retro環境用の前処理を行う環境ラッパー。OpenAI Retro Contestで考え出された各種手法が提供されています。

retro_wrapper.py入手場所

StochasticFrameSkipラッパー

nフレームごとに行動を切り替えます。また、一定確率で行動を1フレーム余分にすること(スティッキーアクション)で行動シーケンスの学習から、問題解決の学習に目的をかえます。

StartDoingRandomActionsラッパー

環境リセット後0~30ステップの間、ランダム行動を実施します。ゲーム開始状態にばらつきを与え、特定の開始状態に特化して学習しないようにします。

Downsampleラッパー

画面画像サイズをサイズダウンします。

Rgb2grayラッパー

画面画像をグレースケールにします。

AppendTimeoutラッパー

タイムアウトを追加します。

MovieRecordラッパー

エピソード毎に動画(bk2)を保存します。(Integration UIとPythonで再生可能)

SonicDiscretizerラッパー

ソニックの行動空間を変換し行動パターン数を減らし、学習速度を向上します。

RewardScalerラッパー

報酬をスケーリングし正規化(0.0~1.0)することで学習効率を上げます。

DeepMindスタイルのラッパー

DeepMindスタイルのラッパーを追加する便利メソッド。

DeepMind

Commonラッパー

ClipActionsWrapperラッパー

行動空間のLowとhighで行動をクリッピングします。

TimeLimitラッパー

1エピソードの最大ステップ数を設定します。

VecEnvラッパー

ベクトル環境専用のラッパー。

VecNormalizeラッパー

状態と報酬を正規化するために、移動平均と標準偏差を計算します。

VecFrameStackラッパー

連続した複数の状態をスタックします。

  • LINEで送る