🏁 はじめに
前回の CartPole編 では、報酬の与え方がイマイチで、やる度に結果が違う不安定なものを作ってしまいました。
しかし、ChatGPTさんのアドバイスで「ギリギリ倒れない判定」を入れたところ、棒立てが安定!
見事に 満点💯達成 です。
そして次の課題をChatGPTさんにお願いすると——
> 「では、MountainCarに行きましょう!」
とのお答え。
ChatGPTさんのノリノリな様子に一抹の不安を抱えながら、MountainCarへの挑戦が始まりました。
🚗 MountainCarとは?
目的は、車で山を登る こと。
しかしこの車、非力でそのままでは登れません。
いったんバックして勢いをつけないと山頂に届かないのです。
> 実際にやったら、レッドブルから賞状がもらえそうなチャレンジ精神。
はっはっはっ…これ、どうやるの?
💥 とりあえず実装してみたけれど…
手を挙げてても仕方がないので、まずはコードを動かしてみました。
結果は……登れたり途中で止まったりと不安定。
原因をChatGPTさんに相談すると:
> 「頂上に到達しない限り報酬がほぼ一定(-200付近)なので、途中で止まる行動が強化されてしまうんです」
なるほど、確かにそれでは学習しようがありません。
解決策として、ChatGPTさんの提案はこうでした👇
> 「登るほど(中心の谷から離れるほど)少しずつ報酬を増やすようにしましょう」
言われた通り修正したところ、出力が安定!
まさに“報酬設計の勝利”です。
🧠 Double DQN(DDQN)を導入してみた
「やれやれ、なんとかなったよ」と胸を撫で下ろすと、ChatGPTさんが次の一言。
> 「安定がイマイチなので、Double DQN(DDQN)をやりますか?」
……また新しい単語が出てきましたね😅
初心者向けに説明してもらうと——
> DQNが過大評価しがちなQ値を、もう1つのネットワークで補正して安定化させる手法
(2つのネットワークで“ダブルチェック”するイメージ)
私はすぐ、電気的に置き換えて理解しました。
> 「これはバンドパスフィルタみたいなもんやな」
実際にDDQNを導入してみると、確かに学習が安定。
ただし、報酬調整ほどの劇的な変化はなく、
「そりゃあ、なるよね」という感触でした。
📂 学習結果まとめ
📘 学習コード:
👉 GitHubリポジトファイルはこちら
📈 学習ログ(エピソードとリワード):
🎥 学習後の動作動画:
👉 動画はこちら
🧩 MountainCarで気づいたこと
何度か実行してみて感じたのは、
「グラフが収束しても、実際の動きは必ずしも良くない」 という点です。
報酬グラフが綺麗に見えても、動作を見たら全然登れていないこともあります。
やはり、報酬曲線+挙動チェックの両輪 が大事ですね。
🪜 まとめ:報酬設計こそ学習の核心
今回の学びをまとめると——
1️⃣ 学習結果の安定化には、まず報酬設計から
2️⃣ 報酬は満遍なく与えるのがポイント
3️⃣ グラフだけでは学習状態は分からない。動きも確認!
特に「報酬設計が学習のすべてを左右する」という点は、強化学習の本質に気づかされました。
🚀 次回予告:自分ルールで強化学習!
次はいよいよ、自作ルール(オリジナル環境) を使った強化学習に挑戦します。
果たして、ゼロから環境を作ってAIを育てることはできるのか——
次回もChatGPTさんと一緒に探っていきます!
(次回の予告イラスト:ChatGPTさんとウサギが新しい地図を広げている構図)

