18
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MuZeroを使って強化学習で遊ぶ

Posted at

はじめに

DeepMind が発表した MuZero という AlphaZero をより一般化した手法があります。ルールが明確な対人ゲームだけでなく、 Atariゲームのような一人用ゲームにも同じように適用できるというのが非常に強力で、性能もかなり高いようです。
(個人的に育休とか取っていたのもあって)1年くらいその存在すらしらず(...)、最近になってまたニュースになっていてやっと知ることができて、最近色々遊んでみているのでその共有をします。

すでに muzero-general という PyTorchベースの非常に素晴らしい実装のリポジトリが公開されているので、主にその紹介です。

muzero-general

良いところ

  • 色々なゲームが最初から付いていて、自分で追加するのも非常に簡単にできる(1ファイル追加するだけ)
  • Hyperparameterの調整も簡単
  • GPUが使えるなら使ってくれる
  • TensorBoardで Rewardの獲得状況やLossの推移、学習&SelfPlayの消化速度 がリアルタイムで見られる
  • 使い始めるのが簡単
  • ソースコードも読みやすい

導入&試しかた

Getting started を見ると良いですが、こんな感じで始められます。

git clone https://github.com/werner-duvaud/muzero-general.git
cd muzero-general

pip install -r requirements.txt

python muzero.py  
# -> Menu が表示される 
# -> Gameの種類選択 
# -> 何をするか: Training, LoadModel, TestPlay(MuZero vs Human), ViewPlay(MuZero Vs MuZero),  etc

最初は tictactoe という日本語で言うなら「マルバツゲーム」 くらいを眺めるのが良いんじゃないかと思います。

Gameの追加方法

games/ ディレクトリにファイルを追加するだけです。
Game というクラスに reset, step, to_play, legal_actions のようなメソッドを実装していきます。同ディレクトリに参考になるGame実装がいくつもあるので、何をすべきかは理解しやすいかと思います。

2人対戦ゲーム用のPatch

たぶん2人対戦ゲームの実装にはバグがあって、うまくいかない場合はこのPullRequestを適用してみてください。
最初 tictactoe を半日かけても弱いままだったのが、このPRを適用すると2~3時間で納得のいく強さになりました。

ちょっと作ったゲーム

スマホのゲームアプリによくあるゲームを追加したので、興味があればどうぞ。

2048

X2 Blocks

さいごに

とても楽しいおもちゃを手に入れた気分です。
connect4 とか 1〜2日くらい学習させるとかなり強くなります。適当にやっていると嫌なTrapでやられます...

18
12
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?