地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

AIマリオチャレンジってば

機械学習で遊ぼう、という、からあげ先生の楽しいチャレンジ。

 

karaage.hatenadiary.jp

 

ゼロから作るスキルもないし、強化学習は初めてトライ。報酬とちょっとしたハイパーパラメータの調整程度でとりあえずは楽しめる。

 

楽しむ手順1

強化学習時の報酬を調整する。

class CustomRewardAndDoneEnv(gym.Wrapper):

こちらの報酬をうまく調整する。メリハリつけた報酬がいいらしい。ただ、気が付いたのは、Lifeが減らない・・・。ゴールに他とりつく前に最適化しちゃって、いくら学習しても同じポイントで死んでしまうようになったら、再調整。

 

楽しむ手順2

パラメータ変更をする。

# Model Param
CHECK_FREQ_NUMB = 10000
TOTAL_TIMESTEP_NUMB = 5000000
LEARNING_RATE = 0.0001
GAE = 1.0
ENT_COEF = 0.01
N_STEPS = 512
GAMMA = 0.9
BATCH_SIZE = 64
N_EPOCHS = 10

LEARNING_RATE とGAMMAを調整したら、どうなるのか、身をもって体験できる。

 

さぁ、計算だ。

# Env Param
STAGE_NAME = 'SuperMarioBros-1-3-v0'

ステージ番号を入れて計算させてみれば完了。

Colaboratoryの無料版だと、計算時間が足りないだろう。私は、とりあえず、無料の範囲でテストをして、寝る前にローカル環境で計算させてて放置。冬で寒いし暖房代わりにもなる(え?)。もちろん、有料版契約するのが手軽だ。GPUをガンガン回すプログラムでもないので、CPUでも、計算は進んでいく。

 

Colaboratoryは環境の違いを吸収してくれるので、わざわざ環境構築しなくても遊ぶことができる。楽しい企画ありがとうございます。

 

マリオが沢山トライして、その分、学習させる。正しい報酬って難しい。人間と一緒で、思いもよらないところに行きつく。