AIにもゲームをあそんでもらった
pygameで作ったゲームを強化学習して上達するのか試してみた!!
↓カップケーキ取ったらスコア+100、20秒後にスコアを表示
強化学習実行までの道のり
こちらの記事を写経しました 【AI + pygame】pygameで作るインベーダー風ゲーム 1. ゲームコードを Open AI Gym が実行できるよう修正 1. 強化学習モデル+学習実行コードを記事からぱくる 1. 実行コードを動かすとエラーが出るので対応 - モデルへの入力データ次元が違うとか - tensorflowはこのメソッドを実装してないとか(tensorflowのバージョン不適) - こんな変数はないとか(ただのコードミス)
強化学習スタート
- 環境(Anaconda) AnacondaとPyPIがごちゃ混ぜになっております…
- ソースコード
- パラメータ
- 学習ステップ数:20,000 1エピソードで行ったキー操作の回数(多分)
- テストエピソード数:10 ゲーム開始~終了で1エピソード
- 報酬の設定 ゲーム終了時のスコアで報酬を決める
- 0 ~ 100 : -10
- 101 ~ 500 : +5
- 501 ~ 1000: +10
- 1001 ~ : +15
10,000ステップくらいから↓のような感じ スコアは100~300で全然上がらない
ゲーム開始時は右下にカップケーキがあって、開始直後に右下のケーキを取るようになった (ここは400ステップくらいで学習してくれた)
報酬=スコアにすればよかった!
テスト結果 reward(報酬)はずっと5のまま
Testing for 10 episodes ... Episode 1: reward: 5.000, steps: 173 Episode 2: reward: 5.000, steps: 173 Episode 3: reward: 5.000, steps: 174 Episode 4: reward: 5.000, steps: 173 Episode 5: reward: 5.000, steps: 173 Episode 6: reward: 5.000, steps: 173 Episode 7: reward: 5.000, steps: 172 Episode 8: reward: 5.000, steps: 172 Episode 9: reward: 5.000, steps: 173 Episode 10: reward: 5.000, steps: 173
上記の報酬設定だと、ケーキを1~5回取った時は同じ報酬だから プレイヤーがたくさん動いてケーキを取りまくるスタイルにならなかった
ケーキを取った回数に比例して報酬をプラスすればもっと動いてくれると期待