web-dev-qa-db-ja.com

keras-rl / OpenAI GYMでカスタム環境を実装する方法は?

私は強化学習の完全な初心者であり、この危険な地形を簡単にナビゲートするためのフレームワーク/モジュールを探しています。私の検索では、2つのモジュールkeras-rlとOpenAIGYMに出くわしました。

WIKIで共有している例で2つの作業を行うことができますが、事前定義された環境が付属しており、独自のカスタム環境をセットアップする方法に関する情報がほとんどまたはまったくありません。

誰かが私にチュートリアルを教えてくれたり、ゲーム以外の環境をセットアップする方法を説明してくれたら本当にありがたいです。

9
Manipal King

私はしばらくの間これらのライブラリに取り組んでおり、私の実験のいくつかを共有することができます。

まず、カスタム環境の例としてテキスト環境を考えてみましょう https://github.com/openai/gym/blob/master/gym/envs/toy_text/hotter_colder.py

カスタム環境の場合、いくつかのことを定義する必要があります。

  1. Constructor__init__メソッド
  2. アクションスペース
  3. 観察スペース(利用可能なすべてのジムスペースについては https://github.com/openai/gym/tree/master/gym/spaces を参照してください(これは一種のデータ構造です))
  4. _seedメソッド(必須かどうかはわかりません)
  5. _stepメソッドは、アクションをパラメーターとして受け入れ、オブザベーション(アクション後の状態)、報酬(新しいオブザベーション状態への遷移)、done(ブールフラグ)、およびいくつかのオプションの追加情報を返します。
  6. エピソードの新たな開始のロジックを実装する_resetメソッド。

オプションで、次のような_renderメソッドを作成できます。

 def _render(self, mode='human', **kwargs):
        outfile = StringIO() if mode == 'ansi' else sys.stdout
        outfile.write('State: ' + repr(self.state) + ' Action: ' + repr(self.action_taken) + '\n')
        return outfile

また、コードの柔軟性を高めるために、_get_rewardメソッドで報酬のロジックを定義し、_take_actionメソッドでアクションを実行することから観測空間を変更することができます。

16