■はじめに
前回の「サッカーモドキAI」では、
ひたすらゴール横で待ち続けるという “残念AI” を作ってしまいました。
ただ、あの結果も 動画で学習結果を確認していたからこそ気づけたこと。やはり強化学習は、結果確認が超重要だと痛感しました。
さて今回は、少しレベルを下げて ブロック崩し に挑戦してみました。
学習の安定性を上げるために、学習中にコートの大きさを変えるカリキュラム学習も導入します。
報酬設計に気をつけながら、ChatGPTさんと一緒に攻略していくつもりでした。
■と、思ってた時期が僕にもありました。
収束しません。ブロック崩し。
ChatGPTさん(GPT-5)どころか、Geminiさんにも手伝ってもらったのですが、
これがまぁ、安定しない。
にっちもさっちもいかない状態になったところで、ChatGPTさんから一言。
> 「DQNよりPPOの方が安定すると思いますよ」
……また新しい単語が出てきました。
■PPO(Proximal Policy Optimization)とは?
ChatGPTさんの説明を簡単にまとめると、
強化学習は “たまたまうまくいった1回” に引っ張られ、
方針(policy)が急激に変化して学習が壊れる ことがあります。
PPO は、この “暴走” を防ぐために、
「方針更新の量」をクリップして適切な範囲に収める アルゴリズムです。
安定して学習できる
ゲーム系との相性が良い
DQNとは別系統(Actor-Critic系)だけど、とにかく安定しやすい
という利点から、最近のゲーム系RLではよく使われています。
ChatGPTさんが作ってくれたサンプル(CartPole版)→Githubへのリンク
■というわけで、PPOでブロック崩しを作ってみました。
まず、ブロック崩しの 学習シナリオ を作成しました。
カリキュラム学習を入れたせいで、シナリオは少し長めです。
コートの大きさを変える
ブロック数も変える
この2つを変化させて、難易度を徐々に上げる作戦です。
DQNで動かしてみたところ、報酬がバラバラで不安定だったので、
PPOに切り替えてみたところ……
報酬が少しずつ “育っていく” ように!
何回かやるうちに、なんと 全消し を達成するエピソードも登場。
ただし、今回のエピソード終了条件は
「ボールを5回打ち返したら終了」
なので、全消しの方が “まぐれ” です(笑)
■ブロック崩し本体はコチラ
コード
リワードグラフ(全消し時)
学習結果の動画(全消し時)
■今回の学び
●報酬が荒れるときは「PPO」が超おすすめ
ビデオゲーム系は、状態が連続的で報酬も揺れやすく、DQNでは不安定になりがちです。
その点、PPOは更新幅を制御してくれるので安定性が段違い。
ChatGPTさんいわく、
> 「アタリ系ゲームはPPOの方が向いてることが多い」
ということで、今回まさに実感。
●報酬設計は手間をかけるほど良くなる
最初、報酬設計で何度も失敗しました。
初心者ほど、環境より報酬設計に時間をかけるほうが結果が出やすいです。
ブロックを1個壊したらプラス
ボールを返せなかったらマイナス
進歩を少しでも褒める
このあたりを丁寧に調整すると安定します。
■まとめ
今回は、ブロック崩しをAI(PPO)で学習させてみました。
アタリ系ゲームは「画面を取り込んで学習させる」手法がよく知られていますが、
ブロック崩しはその中でも比較的AI向きと言われています。
……が、実際にやってみると 意外と簡単ではない ですね。
カリキュラム学習・報酬設計・PPO の安定性など、
学ぶことはまだまだ多いと感じました。
でも、少しずつ形になっていくのはやっぱり楽しい!
次はもっと賢いブロック崩しAIに挑戦してみたいと思います。

