
この記事では、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を試すなら gym
と numpy
に加えて matplotlib
なども活用すると、学習の進捗を可視化できます。
まとめ
✅ 強化学習は「試行錯誤しながら学ぶAI」
✅ gym
を使ってCartPoleゲームを試してみた
✅ 簡単なルールを作るだけでも、AIは少し賢くなれる
✅ もっと進めるなら、Q-learningやDQNに挑戦!
強化学習の世界はとても奥深く、いろいろな応用が可能です。次のステップとして、さらに賢いAIを作る方法を学んでみましょう!