個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。2021で提案されたEfficientZeroを試してみた。EfficientZeroは、MuZeroのようなモデルベースの強化学習の手法で、サンプル効率が非常に高いことが特徴になっている。DQNでは、5億フレーム(約38日間のリアルゲーム時間)が必要だったが、EfficientZeroでは、40万フレーム(2時間のリアルゲーム時間)で人間のパフォーマンスを上回っている。サンプル効率は、現実世界に強化学習を適用しようとした場合に課題になるため、強化学習の応用範囲が広がることが期待できる。オープンソースでコードが公開されているため、実際に試してみた。環境には、BreakoutNoFrameskip-v4を使用した。訓練はじめ、CUDAが使えるようになったWSL2で試そうしたが、GPU1枚だと時間がかかりすぎるので、GPU(V100)8枚の環境で試した。学習するフレーム数は、2時間のリアルゲーム時間であっても、学習時間は8GPUでも16時間かかった。Pythonで実装されているため、MCTSのシミュレーションが遅いのが原因かもしれない。訓練のパラメータは、用意されていたtrain.shを8GPUを使うように修正して、メモリが不足したので、object_store_memoryをデフォルトの半分にした。68719476736訓練のログは、resultsの下に出力される。0.020TensorBoardでも確認できる。スコアが上がっているのが確認できる。テスト訓練できたモデルを使用して、実際にゲームをプレイさせてみた。テストは、WSL2+WSLgの環境でゲーム画面を確認しながら実行した。WSL2のUbuntu20.04にAnacondaをインストールして、以下の通り環境構築した。tqdmtest.shを編集して、以下のコマンドを実行した。--save_videoパッケージ不足のエラーがでたので、以下のパッケージをインストールした。python-opengl8個のウィンドウがわらわらと表示されて、テストの様子が確認できた。8が同時実行されるエピソードだったようである。フレームがかくかくして、やはり遅いようである。これは一番うまくプレイできていたエピソード。youtu.beまとめ最新の強化学習手法であるEfficientZeroを試してみた。たしかに、40万フレームの学習でブロック崩しを人間並みにプレイできるようになることが確認できた。学習するゲーム時間は2時間分でも、実行が遅く学習時間はGPU8枚で16時間かかった。Gymのようなstepを操作できる環境であればよいが、リアルタイムで実行するゲームを学習・プレイするにはこの実行速度では厳しそうである。Pythonで実装されているので、MCTS部分をC++で実装するなどの速度改善は必要そうである。19:39Tweet広告を非表示にする関連記事2022-07-09DCGANを試すほぼ個人メモです。»プロフィールid:TadaoYamaokaスマホアプリ開発とディープラーニングを使った将棋ソフトの開発を行っています。)はてなブログをはじめよう!TadaoYamaokaさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。