iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
AI/ ML & Data

AI Unlocked: 30 Days to AI Brilliance系列 第 13

強化學習實戰:從理論到實作,帶你掌握 Q-learning

  • 分享至 

  • xImage
  •  

昨天我們深入探討了 Q-learning 和深度 Q 網絡(DQN)的核心概念,理解了這些演算法如何讓機器在不斷學習中變得「聰明」。今天,我們將把理論付諸實踐,進行一個實際的 Q-learning 實作,利用 Python 和 OpenAI Gym 平台來搭建一個強化學習的環境,將幫助你更好地掌握 Q-learning 的實際運行過程。

1. 初始化環境與 Q-table
選擇一個強化學習的經典環境,例如 CartPole-v1,並初始化環境和 Q-table:

import gym
import numpy as np

# 初始化環境
env = gym.make('CartPole-v1')

# 定義動作空間和狀態空間
action_space = env.action_space.n
state_space = env.observation_space.shape[0]

# 初始化 Q-table (離散化後的狀態,動作空間)
q_table = np.zeros((state_space, action_space))

2. 設置學習參數
定義學習率(alpha)、折扣因子(gamma)和探索策略(ε-greedy):

alpha = 0.1  # 學習率
gamma = 0.99  # 折扣因子
epsilon = 1.0  # 探索率
epsilon_decay = 0.995  # 探索率衰減
epsilon_min = 0.01  # 最小探索率
episodes = 1000  # 訓練回合數

3. 編寫 Q-learning 演算法
在此步驟中,實現 Q-learning 演算法,並在每回合進行訓練:

def discretize_state(state):
    # 簡單離散化狀態空間的示例(可以依照需求進行調整)
    return tuple(state.astype(int))  

for episode in range(episodes):
    state = env.reset()  # 重置環境
    state = discretize_state(state)  # 離散化狀態
    done = False
    total_reward = 0

    while not done:
        # ε-greedy 策略:隨機選擇探索或利用
        if np.random.uniform(0, 1) < epsilon:
            action = env.action_space.sample()  # 探索
        else:
            action = np.argmax(q_table[state])  # 利用

        # 執行動作,觀察回饋
        next_state, reward, done, _ = env.step(action)
        next_state = discretize_state(next_state)
        total_reward += reward

        # 更新 Q-table
        best_future_q = np.max(q_table[next_state])
        q_table[state, action] += alpha * (reward + gamma * best_future_q - q_table[state, action])

        state = next_state

    # 每回合結束後更新探索率
    epsilon = max(epsilon_min, epsilon * epsilon_decay)

4. 視覺化結果
可以追蹤每回合的總獎勵,並通過繪圖來視覺化訓練結果:

import matplotlib.pyplot as plt

# 繪製總獎勵的變化曲線
plt.plot(range(episodes), total_rewards)
plt.xlabel('回合數')
plt.ylabel('總獎勵')
plt.title('Q-learning 訓練結果')
plt.show()

無論是傳統的 Q-learning,還是 DQN 這樣的進階技術,它們都幫助 AI 在複雜的環境中學會做出最優決策。隨著強化學習的發展,這些技術將進一步推動 AI 的應用。


上一篇
AI的學習策略:深度Q網絡解析
下一篇
GAN的雙面性:解決訓練不穩定與探索變種模型
系列文
AI Unlocked: 30 Days to AI Brilliance30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言