■はじめに
前回の MountainCar編 では、学習結果が山の途中で止まってしまうにも関わらず、リワードがいい感じに収束しました。
やはり、学習結果の確認が重要ですね。
いよいよ次の課題に自分で決めた課題。
報酬設計に注意しながら、ChatGPTさんと挑戦します。
■さて何に挑戦しよう?
今回は目的が決まってません。
考えられるネタとすると…
・トランプ→レベル高、運の要素大
・オセロ→7並べよりは、簡単か?
・2足歩行ロボット→レベル高+面白くない
・将棋→先ず用語の勉強が必要だな
・サッカー
→簡単化でなんとか実装できるかな?
よし、これで行こう!
今回DQN(Deep Q-Network)で2DサッカーAIを作ります!
敵キャラを導入し、「攻撃型」報酬設計でゴールを狙う学習を目指します。
Colab上でそのまま動作します。
とは言っても、はじめてやるオリジナルの強化学習。
しっかり、シナリオを決めましょう!
Githubへのシナリオ
💥 とりあえず実装してみたけれど…
先ずは、自分キャラとボールだけという超簡単バージョンで実装してみます。
ボールを蹴るの報酬グラフ
学習結果は、なんとかボール蹴ってゴールの方向に行ってます。
でも相手を入れると途端にむづかしくなる。全然収束しない!
原因をChatGPTさんに相談すると:
「学習相手が強すぎて学習が進んでない」
確かにそれでは学習しようがありません。
解決策として、ChatGPTさんの提案はこうでした👇
「相手の弱体化をおすすめします。
①ボールに向う→自分キャラに向う
②敵キャラを遅くする
③ルールに縛りを入れる」
いろんな弱体化があるけど、とりあえず①で行ってみよう。
■環境の概要
フィールド:100×60 の2D平面
自キャラ(青):上下左右に移動可能
敵キャラ(赤):「自キャラ」を追って守備
ボール:自キャラが当たると弾かれ、ゴールラインを超えると得点
ゴール:右端(x=95〜100)
■報酬設計(攻撃型)
ゴール成功 +100
ゴールされた -100
ボールに近づいた +1
ボールから離れた -1
1ステップ経過 -0.1
「攻めるほど得をする」よう設計されています🔥
■なんか思ってたのと違う
収束するリワードグラフを目にして、
「やれやれ、なんとかなったよ」と胸を撫で下ろすのは、ちょっと早い。
学習結果の動画を良く見ると…
先ず後ろに下がって、敵キャラを釣り、ボールを蹴ってそのままゴール!!
なんか、バグテク?
そう、バグを探してそこを突く!格好いいね👍️
…でも、ちょっと待て
これは、学習中で本番はAIとすり替えるつもりだよね。
つまり、自分と相手がずっとゴール脇で待っている
残念なAIを作ってしまいました😅
■学習結果まとめ
📘 学習コード:
👉 GitHubリポジトリはこちら
📈 学習ログ(エピソードとリワード):
🎥 学習後の動き:
①敵キャラを釣る所:自分のゴールまで下がる
②ボールを蹴る:ボール蹴りたい放題!
■まとめ
これはこれで楽しいけど、ちゃんとしたのを作りたい。けど、この他の弱体化は技術的にむづかしそう。
もう少し、簡単なやつで技術レベルを上げてから再チャレンジしよう。
よし、今のやつを更に単純にした「ブロック崩し」を考えよう。課題は、学習中に敵キャラのレベル変更できる様にしたい。
そして、いつかサッカーに返ってきます。
■次回予告
次回の自分ルールで強化学習、「ブロック崩し」編
課題は、学習中にコートの大きさを変える。
今回こそ成功したい!






