OpenAI GymでゲームMsPacman(ミズ・パックマン)をやると初期に操作を受け付ない時間がある?
問題と現時点の解決策
問題
OpenAIでゲームMsPacman(ミズ・パックマン)をやると、初期に操作を受け付けない時間がある。
現時点の解決策
エピソードフレーム番号258まで処理を行わず(以下処理参照)、それ以降に操作する。
(自分の環境でエピソードフレーム番号258番前後より前までは操作を受け付けるが、それより前に操作を入れても操作を受け付けない。
自分のソースにバグが有るのかもしれないし、こうやらないといけないのかもしれない。)
ep_frame_number = 0
while ep_frame_number < 258:
observation, _, _, _ = gym_env.step(0)
ep_frame_number = float(gym_env.ale.getEpisodeFrameNumber())
環境
Python 3.5.2 :: Anaconda 2.5.0 (x86_64)
macOS Sierra 10.12.1
経緯1:機械学習を使わずにどれぐらいのポイントが取れるか実施したらreward(得点)が取得できなかった。
OpenAIでMsPacmanをやろうと思い、まず機械学習を使わずにどれぐらいのポイントが取れるか確認したところ、初めの方のreward(得点)がすべて0になっている。
Pacmanは少しでも動けばポイントが得られるので、これはおかしい。
以下でactionとそれに対応するreward(得点)をcsv出力することで確認。
https://github.com/tflare/atari-rl
デバックしたところ、エピソードフレーム番号258番前後より前にactionを送っても
操作を受け付けていないことがわかった。
(エピソードフレーム番号の取得は以下参照)
gym_env = gym.make(game_name)
ep_frame_number = float(gym_env.ale.getEpisodeFrameNumber())
経緯2:他のソースに同様の処理がない
最初は初期に操作を受け付けていない期間があると思い、
他の人のコードで同様の箇所がないか確認を行った。
しかし、初期状態をランダムにするために"NOOP"を複数回やっている処理があるぐらいで
同様の処理(以下を5回実行)を行っても、操作を受け付けない状態が続いた。
gym_env = gym.make(game_name)
action = 0 # 0 : "NOOP"
gym_env.step(action)
経緯3:OpenAIの実行処理がランダムで行われるためstepを複数回呼び出しても安定しない
そこで"NOOP"の処理を80回程度実施したところ、うまく行くことがわかったが、
何回かやったところ、うまくいかない時があることがわかった。
(処理前に動いてしまう 0:"NOOP"の場合は初期で左の入力があるため、左に動く)
調べたところ、OpenAIではactionを受取、stepを実施する際に
ランダムな回数繰り返し実施する(以下コード参照)ため、
この回数によってエピソードフレーム番号258番前後に行ったり行かなかったりするため安定しなかったようだ。
self.frameskip = (2, 5)
if isinstance(self.frameskip, int):
num_steps = self.frameskip
else:
num_steps = self.np_random.randint(self.frameskip[0], self.frameskip[1])
for _ in range(num_steps):
reward += self.ale.act(action)
情報提供のお願い
現在は上記で行っているが、何か間違いがあるのではと考えています。
もし何か情報をお持ちでしたら、コメントを頂けるとありがたいです。
Author And Source
この問題について(OpenAI GymでゲームMsPacman(ミズ・パックマン)をやると初期に操作を受け付ない時間がある?), 我々は、より多くの情報をここで見つけました https://qiita.com/taki_tflare/items/a00ba338399d6c4b2666著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .