From 35f81e8702cc88fbab3e81ee5d4dcd44bc23e8aa Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Thu, 24 Dec 2020 08:38:12 +0800 Subject: [PATCH] 2020-12-24 08:38:12 --- new/handson-rl-py/00.md | 2 +- new/handson-rl-py/08.md | 2 +- new/handson-rl-py/12.md | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/new/handson-rl-py/00.md b/new/handson-rl-py/00.md index baa64789..03749f5b 100644 --- a/new/handson-rl-py/00.md +++ b/new/handson-rl-py/00.md @@ -30,7 +30,7 @@ 第 11 章,“策略梯度和优化”涵盖了策略梯度如何帮助我们找到合适的策略而无需 Q 函数。 我们还将探索深度确定性策略梯度方法。 在本章的后面,我们将看到最新的策略优化方法,例如信任区域策略优化和近端策略优化。 -第 12 章,“Capstone 项目–使用 DQN 进行赛车”提供了逐步的方法,以使用对决 DQN 构建代理以赢得赛车游戏。 +第 12 章,“Capstone 项目–使用 DQN 进行赛车”提供了逐步的方法,以使用决斗 DQN 构建代理以赢得赛车游戏。 第 13 章,“最近的进展和后续步骤”提供了有关强化学习的各种进展的信息,例如想象力增强代理,从人的偏好中学习,从示威活动中进行深度学习以及事后 ,然后我们将研究不同类型的强化学习方法,例如分层强化学习和逆强化学习。 diff --git a/new/handson-rl-py/08.md b/new/handson-rl-py/08.md index 0139e6a5..1159d7a8 100644 --- a/new/handson-rl-py/08.md +++ b/new/handson-rl-py/08.md @@ -434,7 +434,7 @@ with tf.Session() as sess: 因此,值函数指定状态的优劣,而优势函数指定动作的优劣。 如果我们将价值功能和优势功能结合起来会发生什么? 这将告诉我们代理在状态`s`实际上是我们的`Q`功能下执行动作`a`有多好。 因此,我们可以像![](img/00285.jpeg)中那样将`Q`函数定义为值函数和优势函数的和。 -现在,我们将看到决斗网络架构是如何工作的。 下图显示了对决 DQN 的架构: +现在,我们将看到决斗网络架构是如何工作的。 下图显示了决斗 DQN 的架构: ![](img/00286.gif) diff --git a/new/handson-rl-py/12.md b/new/handson-rl-py/12.md index 588d0c0f..1a4fe6c7 100644 --- a/new/handson-rl-py/12.md +++ b/new/handson-rl-py/12.md @@ -1,6 +1,6 @@ # Capstone 项目–使用 DQN 进行赛车 -在最后几章中,我们通过使用神经网络逼近 q 函数来了解 Deep Q 学习的工作原理。 在此之后,我们看到了**深度 Q 网络**(**DQN**)的各种改进,例如双重 Q 学习,决斗网络架构和深度循环 Q 网络。 我们已经了解了 DQN 如何利用回放缓冲区来存储智能体的经验,并使用缓冲区中的小批样本来训练网络。 我们还实现了用于玩 Atari 游戏的 DQN 和一个用于玩 Doom 游戏的**深度循环 Q 网络**(**DRQN**)。 在本章中,让我们进入对决 DQN 的详细实现,它与常规 DQN 基本相同,除了最终的全连接层将分解为两个流,即值流和优势流,而这些流 两个流将合并在一起以计算 Q 函数。 我们将看到如何训练决斗的 DQN 来赢得赛车比赛的代理商。 +在最后几章中,我们通过使用神经网络逼近 q 函数来了解 Deep Q 学习的工作原理。 在此之后,我们看到了**深度 Q 网络**(**DQN**)的各种改进,例如双重 Q 学习,决斗网络架构和深度循环 Q 网络。 我们已经了解了 DQN 如何利用回放缓冲区来存储智能体的经验,并使用缓冲区中的小批样本来训练网络。 我们还实现了用于玩 Atari 游戏的 DQN 和一个用于玩 Doom 游戏的**深度循环 Q 网络**(**DRQN**)。 在本章中,让我们进入决斗 DQN 的详细实现,它与常规 DQN 基本相同,除了最终的全连接层将分解为两个流,即值流和优势流,而这些流 两个流将合并在一起以计算 Q 函数。 我们将看到如何训练决斗的 DQN 来赢得赛车比赛的代理商。 在本章中,您将学习如何实现以下内容: @@ -153,7 +153,7 @@ class EnvWrapper: # 决斗网络 -现在,我们构建对决 DQN; 我们先构建三个卷积层,然后是两个全连接层,最后一个全连接层将被分为两个单独的层,用于价值流和优势流。 我们将使用将值流和优势流结合在一起的聚合层来计算 q 值。 这些层的尺寸如下: +现在,我们构建决斗 DQN; 我们先构建三个卷积层,然后是两个全连接层,最后一个全连接层将被分为两个单独的层,用于价值流和优势流。 我们将使用将值流和优势流结合在一起的聚合层来计算 q 值。 这些层的尺寸如下: * **第 1 层**:32 个`8x8`滤镜,步幅为 4 + RELU * **第 2 层**:64 个`4x4`滤镜,步幅为 2 + RELU @@ -351,7 +351,7 @@ class DQN(object): self.num_training_steps = 0 ``` -通过为我们的`QNetworkDueling`类创建实例来初始化主要对决 DQN: +通过为我们的`QNetworkDueling`类创建实例来初始化主要决斗 DQN: ```py self.qnet = QNetworkDueling(self.state_size, self.action_size, "qnet") @@ -581,7 +581,7 @@ def train(self): # 赛车 -到目前为止,我们已经看到了如何构建对决 DQN。 现在,我们将看到在玩赛车游戏时如何利用我们的决斗 DQN。 +到目前为止,我们已经看到了如何构建决斗 DQN。 现在,我们将看到在玩赛车游戏时如何利用我们的决斗 DQN。 首先,让我们导入必要的库: @@ -736,7 +736,7 @@ env.monitor.close() # 概要 -在本章中,我们学习了如何详细实现对决 DQN。 我们从用于游戏画面预处理的基本环境包装器功能开始,然后定义了`QNetworkDueling`类。 在这里,我们实现了决斗 Q 网络,该网络将 DQN 的最终全连接层分为值流和优势流,然后将这两个流组合以计算`q`值。 之后,我们看到了如何创建回放缓冲区,该缓冲区用于存储经验并为网络训练提供经验的小批量样本,最后,我们使用 OpenAI 的 Gym 初始化了赛车环境并训练了我们的代理。 在下一章第 13 章,“最新进展和后续步骤”中,我们将看到 RL 的一些最新进展。 +在本章中,我们学习了如何详细实现决斗 DQN。 我们从用于游戏画面预处理的基本环境包装器功能开始,然后定义了`QNetworkDueling`类。 在这里,我们实现了决斗 Q 网络,该网络将 DQN 的最终全连接层分为值流和优势流,然后将这两个流组合以计算`q`值。 之后,我们看到了如何创建回放缓冲区,该缓冲区用于存储经验并为网络训练提供经验的小批量样本,最后,我们使用 OpenAI 的 Gym 初始化了赛车环境并训练了我们的代理。 在下一章第 13 章,“最新进展和后续步骤”中,我们将看到 RL 的一些最新进展。 # 问题 -- GitLab