0Pricing
Python Academy · 课时

深度 Q 学习

使用神经网络进行强化学习

深度 Q 学习 是 CoddyKit 上的免费 Python Academy 课时。 这是第 4 节课,共 5 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 5 节课。

什么是深度 Q 学习

深度 Q 学习

深度 Q 学习是 Q 学习的一种扩展,它使用神经网络来近似 Q 表。这样一来,强化学习就能扩展到状态空间和动作空间较大或连续的环境。

深度 Q 学习 — 插图 1

为什么使用深度 Q 学习

为什么使用深度 Q 学习

深度 Q 学习解决了传统 Q 学习的局限性:

  • 可以处理高维状态空间(例如图像)。
  • 无需将大型 Q 表存储在内存中。
  • 利用神经网络在不同状态之间进行泛化。

DQN 算法

DQN 算法

深度 Q 学习使用一个称为 Q 网络的神经网络来近似 Q 值。主要步骤如下:

  1. 使用随机权重初始化 Q 网络。
  2. 与环境交互,收集经验元组 (state, action, reward, next_state)。
  3. 使用贝尔曼方程更新 Q 网络:

Q(s, a) ≈ r + γ max(Q(s', a'))

构建 Q 网络

构建 Q 网络

Q 网络是一个简单的前馈神经网络,它将当前状态作为输入,并输出所有可能动作对应的 Q 值:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# Define the Q-Network
q_network = Sequential([
    Dense(24, activation='relu', input_shape=(state_space_size,)),
    Dense(24, activation='relu'),
    Dense(action_space_size, activation='linear')
])

q_network.compile(optimizer='adam', loss='mse')

经验回放

经验回放

深度 Q 学习使用一种称为经验回放的技术来改善学习效果:

  • 将经验 (state, action, reward, next_state) 存储在记忆缓冲区中。
  • 随机抽取一批经验来训练 Q 网络。
from collections import deque

# Initialize replay memory
memory = deque(maxlen=2000)

# Add experience to memory
memory.append((state, action, reward, next_state, done))

训练 Q 网络

训练 Q 网络

我们使用记忆缓冲区中的经验来训练 Q 网络:

import numpy as np

# Sample a batch of experiences
batch_size = 32
batch = random.sample(memory, batch_size)

# Train the Q-Network
for state, action, reward, next_state, done in batch:
    target = reward
    if not done:
        target += gamma * np.max(q_network.predict(next_state[np.newaxis, ...]))
    q_values = q_network.predict(state[np.newaxis, ...])
    q_values[0][action] = target
    q_network.fit(state[np.newaxis, ...], q_values, epochs=1, verbose=0)

目标网络

目标网络

为了稳定训练,DQN 使用一个目标网络:

  • 维护一个独立的网络,用于计算目标 Q 值。
  • 定期将 Q 网络的权重复制到目标网络。

深度 Q 学习的优点

深度 Q 学习的优点

深度 Q 学习具有以下几个优点:

  • 可以处理高维状态空间,例如图像。
  • 利用神经网络在不同状态之间进行泛化。
  • 可以解决 Atari 游戏和机器人控制等复杂任务。

总结与后续步骤

总结与后续步骤

在本课中,我们:

  • 探索了深度 Q 学习的基础知识。
  • 构建了一个用于近似 Q 值的 Q 网络。
  • 讨论了用于稳定训练的经验回放和目标网络。

接下来,我们将探索 OpenAI Gym,并在模拟环境中应用强化学习。

深度 Q 学习 — 插图 10

常见问题解答

「深度 Q 学习」课时是免费的吗?

是的 — 「深度 Q 学习」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 5 节课。

「深度 Q 学习」这节课中我会学到什么?

使用神经网络进行强化学习 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 5 节。

「深度 Q 学习」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python Academy 课中编写并运行代码吗?

能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

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