🏁 はじめに

前回の 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さんとウサギが新しい地図を広げている構図)