Pythonで始める強化学習!カートポールで遊んでみよう

この記事では、Pythonを使ったAI・機械学習を知ることができます。

 

スポンサーリンク

1. 強化学習って何? 🤖

強化学習(Reinforcement Learning、RL)は、AIが「試行錯誤しながら学ぶ」機械学習の一種です。例えば、ゲームをプレイするAIが最初は適当に動くけれど、何度もプレイしていくうちにコツをつかみ、どんどん上達していくような仕組みです。

現実世界では、

  • ゲームAI(チェス、囲碁、Atariゲーム)
  • 自動運転(どの道を走るべきか学習)
  • ロボット制御(バランスを取る方法を学ぶ)

などで活用されています。今回は、「カートポール(CartPole)」という簡単なゲームを使って、強化学習を体験してみましょう!

2. OpenAI Gymをインストールしてみよう 🏋️‍♂️

強化学習を試すなら、OpenAI Gymが便利です。まずはインストールしましょう。

pip install gym[all]

次に、CartPoleを動かしてみます。

  

import gym

env = gym.make("CartPole-v1")
env.reset()

for _ in range(200):
    env.render()
    action = env.action_space.sample()  # ランダムな行動
    env.step(action)

env.close()

このコードを実行すると、カートの上の棒がバランスを取るゲームが動きます。ただし、AIはまだ「ランダムに動いているだけ」です。

  

3. ランダムエージェントを試してみよう 🎲

上のコードでは action_space.sample() で適当な行動を取っていました。そのため、棒はすぐに倒れてしまいます。

では、このAIがどれくらい長く棒を立てられるか評価してみましょう。

num_episodes = 10
for episode in range(num_episodes):
    obs = env.reset()
    total_reward = 0
    done = False
    while not done:
        action = env.action_space.sample()  # ランダムに行動
        obs, reward, done, info = env.step(action)
        total_reward += reward
    print(f"Episode {episode+1}: Total Reward = {total_reward}")

通常、スコア(Total Reward)はすぐに低くなります。ランダムに動くだけではうまくバランスを取れませんね。

4. 簡単なルールでエージェントを改良! 💡

次に、「棒が右に傾いたら右へ動く、左に傾いたら左へ動く」という単純なルールでAIを改良してみます。

import numpy as np

def simple_policy(obs):
    angle = obs[2]  # 棒の角度
    return 0 if angle < 0 else 1  # 左に傾いていたら左へ、右なら右へ

num_episodes = 10
for episode in range(num_episodes):
    obs = env.reset()
    total_reward = 0
    done = False
    while not done:
        action = simple_policy(obs)
        obs, reward, done, info = env.step(action)
        total_reward += reward
    print(f"Episode {episode+1}: Total Reward = {total_reward}")

この簡単なルールでも、ランダムよりはスコアが上がるはずです!

5. もっと学びたい人へ 🚀

強化学習の基本を理解したら、次は以下のステップに進んでみましょう。

  • Q-learning:AIが試行錯誤しながら、より良い行動を学習する方法
  • DQN(Deep Q-Network):ニューラルネットワークを使った強化学習
  • Atariゲーム攻略:Pac-ManなどのゲームをプレイするAIを作る

例えば、Q-learningを試すなら gymnumpy に加えて matplotlib なども活用すると、学習の進捗を可視化できます。


まとめ

✅ 強化学習は「試行錯誤しながら学ぶAI」
gym を使ってCartPoleゲームを試してみた
✅ 簡単なルールを作るだけでも、AIは少し賢くなれる
✅ もっと進めるなら、Q-learningやDQNに挑戦!

強化学習の世界はとても奥深く、いろいろな応用が可能です。次のステップとして、さらに賢いAIを作る方法を学んでみましょう!

 

タイトルとURLをコピーしました