提交 35f81e87 编写于 作者: W wizardforcel

2020-12-24 08:38:12

上级 720ab7d3
......@@ -30,7 +30,7 @@
第 11 章,“策略梯度和优化”涵盖了策略梯度如何帮助我们找到合适的策略而无需 Q 函数。 我们还将探索深度确定性策略梯度方法。 在本章的后面,我们将看到最新的策略优化方法,例如信任区域策略优化和近端策略优化。
第 12 章,“Capstone 项目–使用 DQN 进行赛车”提供了逐步的方法,以使用对决 DQN 构建代理以赢得赛车游戏。
第 12 章,“Capstone 项目–使用 DQN 进行赛车”提供了逐步的方法,以使用决斗 DQN 构建代理以赢得赛车游戏。
第 13 章,“最近的进展和后续步骤”提供了有关强化学习的各种进展的信息,例如想象力增强代理,从人的偏好中学习,从示威活动中进行深度学习以及事后 ,然后我们将研究不同类型的强化学习方法,例如分层强化学习和逆强化学习。
......
......@@ -434,7 +434,7 @@ with tf.Session() as sess:
因此,值函数指定状态的优劣,而优势函数指定动作的优劣。 如果我们将价值功能和优势功能结合起来会发生什么? 这将告诉我们代理在状态`s`实际上是我们的`Q`功能下执行动作`a`有多好。 因此,我们可以像![](img/00285.jpeg)中那样将`Q`函数定义为值函数和优势函数的和。
现在,我们将看到决斗网络架构是如何工作的。 下图显示了对决 DQN 的架构:
现在,我们将看到决斗网络架构是如何工作的。 下图显示了决斗 DQN 的架构:
![](img/00286.gif)
......
# 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 的一些最新进展。
# 问题
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册