在 Python 中实现 Q 表
Q 学习的简单示例
在 Python 中实现 Q 表 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 3 节课,共 5 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 5 节课。
在Python中实现Q学习
在Python中实现Q学习
在本课中,我们将用Python实现一个简单的Q学习算法。智能体将学习在网格世界中导航,以最大化其获得的奖励。

定义环境
定义环境
我们定义一个简单的4×4网格世界,智能体从左上角出发,必须到达右下角才能获得奖励。
import numpy as np
# Define the environment
num_states = 16 # 4x4 grid
num_actions = 4 # Up, Down, Left, Right
# Define rewards (-1 for each step, +10 for the goal)
rewards = np.zeros(num_states)
rewards[-1] = 10初始化 Q 表
初始化 Q 表
为所有状态-动作对使用 zeros 进行初始化,创建 Q 表。
# Initialize the Q-Table
q_table = np.zeros((num_states, num_actions))
print("Initial Q-Table:")
print(q_table)实现 Q 学习算法
实现 Q 学习算法
我们使用以下参数:
- α(学习率):控制新信息覆盖旧信息的程度。
- γ(折扣因子):根据即时奖励的重要性,为未来奖励赋予相应权重。
- ε(探索率):在探索与利用之间进行平衡。
# Parameters
alpha = 0.1 # Learning rate
gamma = 0.9 # Discount factor
epsilon = 0.1 # Exploration rate
# Q-Learning loop
num_episodes = 1000
for episode in range(num_episodes):
state = 0 # Start at the first state
done = False
while not done:
# Exploration or exploitation
if np.random.rand() < epsilon:
action = np.random.randint(num_actions) # Explore
else:
action = np.argmax(q_table[state]) # Exploit
# Transition to the next state
next_state = (state + action) % num_states # Simplified transition logic
reward = rewards[next_state]
# Update Q-value
q_table[state, action] = q_table[state, action] + alpha * (
reward + gamma * np.max(q_table[next_state]) - q_table[state, action]
)
# Move to the next state
state = next_state
done = state == num_states - 1评估学到的策略
评估学到的策略
训练完成后,我们按照 Q 表中存储的最优动作来评估策略:
# Evaluate the policy
state = 0
optimal_path = [state]
while state != num_states - 1:
action = np.argmax(q_table[state])
state = (state + action) % num_states # Simplified transition logic
optimal_path.append(state)
print("Optimal Path:", optimal_path)可视化 Q 表
可视化 Q 表
我们可以将 Q 表可视化,以了解每个状态-动作对学到的价值:
import matplotlib.pyplot as plt
import seaborn as sns
# Visualize Q-Table
plt.figure(figsize=(10, 8))
sns.heatmap(q_table, annot=True, fmt=".2f", cmap="coolwarm")
plt.title("Q-Table Heatmap")
plt.xlabel("Actions")
plt.ylabel("States")
plt.show()Q 学习的优势
Q 学习的优势
Q 学习具有以下优点:
- 简单易懂,容易实现。
- 可以处理随机环境。
- 经过充分探索后,可以收敛到最优策略。
Q 学习的局限性
Q 学习的局限性
Q 学习存在一些局限性:
- 难以扩展到状态-动作空间很大的环境。
- 在复杂环境中,学习过程可能较慢。
- 需要定义清晰的状态-动作表示。
总结与后续步骤
总结与后续步骤
在本课中,我们:
- 在 Python 中实现了一个简单的 Q 学习算法。
- 使用 Q 表训练智能体在网格世界中导航。
- 评估了学到的策略,并将 Q 表可视化。
接下来,我们将探索深度 Q 学习,它使用神经网络来处理状态-动作空间很大的环境。

常见问题解答
「在 Python 中实现 Q 表」课时是免费的吗?
是的 — 「在 Python 中实现 Q 表」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 5 节课。
「在 Python 中实现 Q 表」这节课中我会学到什么?
Q 学习的简单示例 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 5 节。
「在 Python 中实现 Q 表」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 强化学习基本概念
- Q 表概念
- 在 Python 中实现 Q 表
- 深度 Q 学习
- 探索 OpenAI Gym