Q学习是一种经典的强化学习算法,通过Q表(Q-value table)来学习最佳动作策略。以下是用Python实现的简单示例,基于OpenAI Gym的迷宫环境:
import gym
import numpy as np
# 初始化环境
env = gym.make('FrozenLake-v1', render_mode='rgb_array')
env = env.unwrapped # 显示原始环境
# 初始化Q表(状态数 x 动作数)
q_table = np.zeros([env.observation_space.n, env.action_space.n])
# 超参数
learning_rate = 0.1
discount_rate = 0.99
episodes = 10000 # 总训练轮数
# 训练循环
for episode in range(episodes):
state = env.reset()[0]
done = False
while not done:
# ⚙️ 探索与利用:随机选择动作或根据Q表
action = np.random.randint(0, env.action_space.n) if np.random.rand() < 0.2 else np.argmax(q_table[state])
# 🔄 执行动作,获取新状态和奖励
next_state, reward, done, _, _ = env.step(action)
# 📊 更新Q表
q_table[state, action] = q_table[state, action] + learning_rate * (
reward + discount_rate * np.max(q_table[next_state]) - q_table[state, action]
)
state = next_state
# 📌 Q表学习结果(简化展示)
print("Q表:")
print(q_table)
扩展学习 📚
想深入理解Q学习的数学原理?点击此处 查看配套的理论解析教程,包含贝尔曼方程与收敛性证明。