0Pricing
Learn AI with Python · 课时

在 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学习算法。智能体将学习在网格世界中导航,以最大化其获得的奖励。

在 Python 中实现 Q 表 — 插图 1

定义环境

定义环境

我们定义一个简单的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 表 — 插图 10

常见问题解答

「在 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 强化学习基本概念
  2. Q 表概念
  3. 在 Python 中实现 Q 表
  4. 深度 Q 学习
  5. 探索 OpenAI Gym
← 返回 Learn AI with Python