機械学習で遊ぼう、という、からあげ先生の楽しいチャレンジ。
ゼロから作るスキルもないし、強化学習は初めてトライ。報酬とちょっとしたハイパーパラメータの調整程度でとりあえずは楽しめる。
楽しむ手順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は環境の違いを吸収してくれるので、わざわざ環境構築しなくても遊ぶことができる。楽しい企画ありがとうございます。
マリオが沢山トライして、その分、学習させる。正しい報酬って難しい。人間と一緒で、思いもよらないところに行きつく。