Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
D_ACMER
apachecn-dl-zh
提交
73bc35af
A
apachecn-dl-zh
项目概览
D_ACMER
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apachecn-dl-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
73bc35af
编写于
1月 03, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-03 16:55:13
上级
f3733705
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
16 addition
and
16 deletion
+16
-16
new/adv-dl-tf2-keras/05.md
new/adv-dl-tf2-keras/05.md
+4
-4
new/adv-dl-tf2-keras/06.md
new/adv-dl-tf2-keras/06.md
+1
-1
new/adv-dl-tf2-keras/08.md
new/adv-dl-tf2-keras/08.md
+1
-1
new/adv-dl-tf2-keras/09.md
new/adv-dl-tf2-keras/09.md
+10
-10
未找到文件。
new/adv-dl-tf2-keras/05.md
浏览文件 @
73bc35af
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
自 2014 年引入
**生成对抗网络**
(
**GAN**
)以来,其流行度迅速提高。 GAN 已被证明是有用的生成模型,可以合成看起来真实的新数据。 深度学习中的许多研究论文都遵循提出的措施来解决原始 GAN 的困难和局限性。
自 2014 年引入
**生成对抗网络**
(
**GAN**
)以来,其流行度迅速提高。 GAN 已被证明是有用的生成模型,可以合成看起来真实的新数据。 深度学习中的许多研究论文都遵循提出的措施来解决原始 GAN 的困难和局限性。
正如我们在前几章中讨论的那样,众所周知,GAN 很难训练,并且易于崩溃。 模式损耗是一种情况,即使损失函数已经被优化,但发生器仍会产生看起来相同的输出。 在 MNIST 数字的情况下,模式折叠时,生成器可能只产生数字 4 和 9,因为看起来很相似。
**Wasserstein GAN**
(
**WGAN**
)[2]解决了这些问题,认为只需替换基于
**的 GAN 损失功能就可以避免稳定的训练和模式崩溃 Wasserstein 1**
,也称为
**,称为**
地球移动者距离
**(**
EMD
**)。**
正如我们在前几章中讨论的那样,众所周知,GAN 很难训练,并且易于崩溃。 模式损耗是一种情况,即使损失函数已经被优化,但发生器仍会产生看起来相同的输出。 在 MNIST 数字的情况下,模式折叠时,生成器可能只产生数字 4 和 9,因为看起来很相似。
**Wasserstein GAN**
(
**WGAN**
)[2]解决了这些问题,认为只需替换基于
**Wasserstein**
的 GAN 损失函数就可以稳定的训练和避免模式崩溃,也称为
**陆地移动距离**
(
**EMD**
)。
但是,稳定性问题并不是 GAN 的唯一问题。 也越来越需要来提高所生成图像的感知质量。
**最小二乘 GAN**
(
**LSGAN**
)[3]建议同时解决这两个问题。 基本前提是,在训练过程中,S 形交叉熵损失会导致梯度消失。 这导致较差的图像质量。 最小二乘损失不会导致梯度消失。 与香草 GAN 生成的图像相比,生成的生成图像具有更高的感知质量。
但是,稳定性问题并不是 GAN 的唯一问题。 也越来越需要来提高所生成图像的感知质量。
**最小二乘 GAN**
(
**LSGAN**
)[3]建议同时解决这两个问题。 基本前提是,在训练过程中,S 形交叉熵损失会导致梯度消失。 这导致较差的图像质量。 最小二乘损失不会导致梯度消失。 与香草 GAN 生成的图像相比,生成的生成图像具有更高的感知质量。
...
@@ -38,7 +38,7 @@ WGAN 认为 GAN 固有的不稳定性是由于它的损失函数引起的,该
...
@@ -38,7 +38,7 @@ WGAN 认为 GAN 固有的不稳定性是由于它的损失函数引起的,该
**JS**
或
`D[JS]`
是基于
`D[KL]`
的差异。 但是,与
`D[KL]`
不同,
`D[JS]`
是对称的并且是有限的。 在本节中,我们将演示优化 GAN 损失函数等同于优化
`D[JS]`
:
**JS**
或
`D[JS]`
是基于
`D[KL]`
的差异。 但是,与
`D[KL]`
不同,
`D[JS]`
是对称的并且是有限的。 在本节中,我们将演示优化 GAN 损失函数等同于优化
`D[JS]`
:
<colgroup><col>
<col></colgroup>
<colgroup><col>
<col></colgroup>
|
**
发散
**
|
**表达式**
|
|
**
散度
**
|
**表达式**
|
| Kullback-Leibler(KL)“公式 5.1.1” |
| Kullback-Leibler(KL)“公式 5.1.1” |
![](
img/B14853_05_003.png
)
![](
img/B14853_05_003.png
)
...
@@ -51,7 +51,7 @@ WGAN 认为 GAN 固有的不稳定性是由于它的损失函数引起的,该
...
@@ -51,7 +51,7 @@ WGAN 认为 GAN 固有的不稳定性是由于它的损失函数引起的,该
![](
img/B14853_05_005.png
)
![](
img/B14853_05_005.png
)
|
|
|
测地
距离(EMD)或 Wasserstein 1 “公式 5.1.3” |
|
陆地移动
距离(EMD)或 Wasserstein 1 “公式 5.1.3” |
![](
img/B14853_05_006.png
)
![](
img/B14853_05_006.png
)
...
@@ -657,7 +657,7 @@ python3 lsgan-mnist-5.2.1.py --generator=lsgan_mnist.h5
...
@@ -657,7 +657,7 @@ python3 lsgan-mnist-5.2.1.py --generator=lsgan_mnist.h5
# 3\. Auxiliary Classifier GAN (ACGAN)
# 3\. Auxiliary Classifier GAN (ACGAN)
ACGAN 在原理上类似于我们在上一章中讨论的
**
有
条件 GAN**
(
**CGAN**
)。 我们将比较 CGAN 和 ACGAN。 对于 CGAN 和 ACGAN,发生器输入均为噪声及其标签。 输出是属于输入类标签的伪图像。 对于 CGAN,判别器的输入是图像(假的或真实的)及其标签。 输出是图像真实的概率。 对于 ACGAN,判别器的输入是一幅图像,而输出是该图像是真实的且其类别是标签的概率。
ACGAN 在原理上类似于我们在上一章中讨论的
**条件 GAN**
(
**CGAN**
)。 我们将比较 CGAN 和 ACGAN。 对于 CGAN 和 ACGAN,发生器输入均为噪声及其标签。 输出是属于输入类标签的伪图像。 对于 CGAN,判别器的输入是图像(假的或真实的)及其标签。 输出是图像真实的概率。 对于 ACGAN,判别器的输入是一幅图像,而输出是该图像是真实的且其类别是标签的概率。
“图 5.3.1”突出显示了生成器训练期间 CGAN 和 ACGAN 之间的区别:
“图 5.3.1”突出显示了生成器训练期间 CGAN 和 ACGAN 之间的区别:
...
...
new/adv-dl-tf2-keras/06.md
浏览文件 @
73bc35af
...
@@ -75,7 +75,7 @@ InfoGAN 的关键思想是强制 GAN 不要忽略潜在代码`c`。 这是通过
...
@@ -75,7 +75,7 @@ InfoGAN 的关键思想是强制 GAN 不要忽略潜在代码`c`。 这是通过
![](
img/B14853_06_009.png
)
(
Equation
6.1.4)
![](
img/B14853_06_009.png
)
(
Equation
6.1.4)
其中
`H`
(c)是潜码的熵,
`c`
,!
[](
img/B14853_06_010.png
)
是观察发生器的输出后
`c`
的条件熵, !
[](
img/B14853_06_011.png
)
。 熵是对随机变量或事件的不确定性的度量。 例如,
在东方升起的
**之类的信息**
具有较低的熵,而在彩票中赢得大奖的
**具有较高的熵。 可以在“第 13 章”,“使用互信息的无监督学习”中找到有关互信息的更详细讨论。**
其中
`H`
(c)是潜码的熵,
`c`
,!
[](
img/B14853_06_010.png
)
是观察发生器的输出后
`c`
的条件熵, !
[](
img/B14853_06_011.png
)
。 熵是对随机变量或事件的不确定性的度量。 例如,
**在东方升起**
之类的信息具有较低的熵,而
**在彩票中赢得大奖**
具有较高的熵。 可以在“第 13 章”,“使用互信息的无监督学习”中找到有关互信息的更详细讨论。
在“公式 6.1.4”中,最大化互信息意味着在观察生成的输出时,将!
[](
img/B14853_06_012.png
)
最小化或减小潜码中的不确定性。 这是有道理的,因为例如在 MNIST 数据集中,如果 GAN 看到生成器 8 看到了数字 8,则生成器对合成数字 8 变得更有信心。
在“公式 6.1.4”中,最大化互信息意味着在观察生成的输出时,将!
[](
img/B14853_06_012.png
)
最小化或减小潜码中的不确定性。 这是有道理的,因为例如在 MNIST 数据集中,如果 GAN 看到生成器 8 看到了数字 8,则生成器对合成数字 8 变得更有信心。
...
...
new/adv-dl-tf2-keras/08.md
浏览文件 @
73bc35af
...
@@ -644,7 +644,7 @@ python3 cvae-cnn-mnist-8.2.1.py –bce --weights=cvae_cnn_mnist.tf --digit=0
...
@@ -644,7 +644,7 @@ python3 cvae-cnn-mnist-8.2.1.py –bce --weights=cvae_cnn_mnist.tf --digit=0
VAE 的这种变化称为!
[](
img/B14853_08_122.png
)
-VAE
[
5]。 ![
](
img/B14853_08_122.png
)
的隐含效果是更严格的标准偏差。 换句话说,!
[](
img/B14853_08_124.png
)
强制后验分布中的潜码!
[](
img/B14853_08_125.png
)
独立。
VAE 的这种变化称为!
[](
img/B14853_08_122.png
)
-VAE
[
5]。 ![
](
img/B14853_08_122.png
)
的隐含效果是更严格的标准偏差。 换句话说,!
[](
img/B14853_08_124.png
)
强制后验分布中的潜码!
[](
img/B14853_08_125.png
)
独立。
实现!
[](
img/B14853_08_126.png
)
-VAE 很简单。 例如,对于上一个示例中的 CVAE,所需的修改是
`kl_loss`
中的额外
**beta**
因子:
实现!
[](
img/B14853_08_126.png
)
-VAE 很简单。 例如,对于上一个示例中的 CVAE,所需的修改是
`kl_loss`
中的额外
`beta`
因子:
```
py
```
py
kl_loss
=
1
+
z_log_var
-
K
.
square
(
z_mean
)
-
K
.
exp
(
z_log_var
)
kl_loss
=
1
+
z_log_var
-
K
.
square
(
z_mean
)
-
K
.
exp
(
z_log_var
)
...
...
new/adv-dl-tf2-keras/09.md
浏览文件 @
73bc35af
...
@@ -96,7 +96,7 @@ Q 学习是一种*脱离策略* RL 算法。 它学习了如何通过不直接
...
@@ -96,7 +96,7 @@ Q 学习是一种*脱离策略* RL 算法。 它学习了如何通过不直接
为了说明 Q 学习算法,我们需要考虑一个简单的确定性环境,如图“图 9.3.1”所示。 环境具有六个状态。
为了说明 Q 学习算法,我们需要考虑一个简单的确定性环境,如图“图 9.3.1”所示。 环境具有六个状态。
显示允许的过渡的奖励。 在两种情况下,奖励是非零的。 转换为
**目标**
(
`G`
)状态可获得
+100 的奖励,同时移至
**Hole**
(
`H`
)状态具有-
100 奖励。 这两个状态是终端状态,从
**开始**
状态构成一个情节的结尾:
显示允许的过渡的奖励。 在两种情况下,奖励是非零的。 转换为
**目标**
(
`G`
)状态可获得
+100 的奖励,同时移至
**洞**
(
`H`
)状态具有 -
100 奖励。 这两个状态是终端状态,从
**开始**
状态构成一个情节的结尾:
![](
img/B14853_09_02.png
)
![](
img/B14853_09_02.png
)
...
@@ -130,7 +130,7 @@ Q 学习是一种*脱离策略* RL 算法。 它学习了如何通过不直接
...
@@ -130,7 +130,7 @@ Q 学习是一种*脱离策略* RL 算法。 它学习了如何通过不直接
图 9.3.5:假设代理选择的动作是向右移动,则显示状态(1、1)的 Q 值的更新
图 9.3.5:假设代理选择的动作是向右移动,则显示状态(1、1)的 Q 值的更新
它遇到了,
`H`
状态,并获得了-100 奖励。 这次,更新不为零。 向右移动时,状态(1、1)的新 Q 值为-100。 注意,由于这是终端状态,因此没有下一个状态。 一集刚刚结束,
**
代理
**
返回到
**开始**
状态。
它遇到了,
`H`
状态,并获得了-100 奖励。 这次,更新不为零。 向右移动时,状态(1、1)的新 Q 值为-100。 注意,由于这是终端状态,因此没有下一个状态。 一集刚刚结束,
**
智能体
**
返回到
**开始**
状态。
假设
**代理**
仍处于探索模式,如图“图 9.3.6”所示:
假设
**代理**
仍处于探索模式,如图“图 9.3.6”所示:
...
@@ -382,7 +382,7 @@ class QWorld:
...
@@ -382,7 +382,7 @@ class QWorld:
self
.
epsilon
*=
self
.
epsilon_decay
self
.
epsilon
*=
self
.
epsilon_decay
```
```
感知动作学习循环在“列表 9.3.2”中进行了说明。 在每个情节中,环境都会重置为
**Start**
状态。 选择要执行的动作并将其应用于环境。 观察
**奖励**
和
**下一个**
状态,并将其用于更新 Q 表。 达到
**目标**
或
**Hole**
状态后,情节完成(
`done = True`
)。
感知动作学习循环在“列表 9.3.2”中进行了说明。 在每个情节中,环境都会重置为
**开始**
状态。 选择要执行的动作并将其应用于环境。 观察
**奖励**
和
**下一个**
状态,并将其用于更新 Q 表。 达到
**目标**
或
**洞**
状态后,情节完成(
`done = True`
)。
对于此示例,Q 学习运行 100 集或 10 获胜,以先到者为准。 由于在每个情节中变量的值均降低,因此代理开始倾向于利用 Q 表来确定在给定状态下要执行的动作。 要查看 Q 学习模拟,我们只需要运行以下命令:
对于此示例,Q 学习运行 100 集或 10 获胜,以先到者为准。 由于在每个情节中变量的值均降低,因此代理开始倾向于利用 Q 表来确定在给定状态下要执行的动作。 要查看 Q 学习模拟,我们只需要运行以下命令:
...
@@ -757,7 +757,7 @@ python3 q-frozenlake-9.5.1.py -d -t=1
...
@@ -757,7 +757,7 @@ python3 q-frozenlake-9.5.1.py -d -t=1
在前面有关 Q 学习和!
[](
img/14853_09_066.png
)
的讨论中,所有术语都很熟悉。 术语!
[](
img/14853_09_067.png
)
![](
img/14853_09_068.png
)
。 换句话说,使用 Q 网络,在给定下一个状态的情况下预测每个动作的 Q 值,并从其中获得最大值。 注意,在终端状态下,!
[](
img/14853_09_069.png
)
,!
[](
img/14853_09_070.png
)
。
在前面有关 Q 学习和!
[](
img/14853_09_066.png
)
的讨论中,所有术语都很熟悉。 术语!
[](
img/14853_09_067.png
)
![](
img/14853_09_068.png
)
。 换句话说,使用 Q 网络,在给定下一个状态的情况下预测每个动作的 Q 值,并从其中获得最大值。 注意,在终端状态下,!
[](
img/14853_09_069.png
)
,!
[](
img/14853_09_070.png
)
。
但是,事实证明训练 Q 网络是不稳定的。 导致不稳定的问题有两个:1)样本之间的相关性高; 2)非平稳目标。 高度相关性是由于采样经验的顺序性质。 DQN 通过创建经验缓冲解决了问题。 训练数据是从该缓冲区中随机采样的。 此过程称为
**
体验重播
**
。
但是,事实证明训练 Q 网络是不稳定的。 导致不稳定的问题有两个:1)样本之间的相关性高; 2)非平稳目标。 高度相关性是由于采样经验的顺序性质。 DQN 通过创建经验缓冲解决了问题。 训练数据是从该缓冲区中随机采样的。 此过程称为
**
经验回放
**
。
非固定目标的问题是由于目标网络!
[](
img/14853_09_071.png
)
在每小批训练后都会被修改。 目标网络的微小变化会导致策略,数据分布以及当前 Q 值和目标 Q 值之间的相关性发生重大变化。 这可以通过冻结!
[](
img/14853_09_072.png
)
训练步骤的目标网络的权重来解决。 换句话说,创建了两个相同的 Q 网络。 在每个!
[](
img/14853_09_073.png
)
训练步骤中,从训练中的 Q 网络复制目标 Q 网络参数。
非固定目标的问题是由于目标网络!
[](
img/14853_09_071.png
)
在每小批训练后都会被修改。 目标网络的微小变化会导致策略,数据分布以及当前 Q 值和目标 Q 值之间的相关性发生重大变化。 这可以通过冻结!
[](
img/14853_09_072.png
)
训练步骤的目标网络的权重来解决。 换句话说,创建了两个相同的 Q 网络。 在每个!
[](
img/14853_09_073.png
)
训练步骤中,从训练中的 Q 网络复制目标 Q 网络参数。
...
@@ -780,7 +780,7 @@ python3 q-frozenlake-9.5.1.py -d -t=1
...
@@ -780,7 +780,7 @@ python3 q-frozenlake-9.5.1.py -d -t=1
5.
执行动作!
[](
img/14853_09_051.png
)
,观察奖励
`r`
,以及下一个状态!
[](
img/14853_09_084.png
)
5.
执行动作!
[](
img/14853_09_051.png
)
,观察奖励
`r`
,以及下一个状态!
[](
img/14853_09_084.png
)
6.
将转换!
[](
img/14853_09_085.png
)
存储在!
[](
img/14853_09_086.png
)
中
6.
将转换!
[](
img/14853_09_085.png
)
存储在!
[](
img/14853_09_086.png
)
中
7.
更新状态!
[](
img/14853_09_087.png
)
7.
更新状态!
[](
img/14853_09_087.png
)
8.
//
体验重播
8.
//
经验回放
9.
从!
[](
img/14853_09_074.png
)
中抽样一小部分发作经历!
[](
img/14853_09_088.png
)
9.
从!
[](
img/14853_09_074.png
)
中抽样一小部分发作经历!
[](
img/14853_09_088.png
)
10.
!
[](
img/14853_09_090.png
)
10.
!
[](
img/14853_09_090.png
)
11.
在!
[](
img/14853_09_091.png
)
w.r.t.上执行梯度下降步骤。 参数!
[](
img/14853_09_092.png
)
11.
在!
[](
img/14853_09_091.png
)
w.r.t.上执行梯度下降步骤。 参数!
[](
img/14853_09_092.png
)
...
@@ -814,7 +814,7 @@ python3 q-frozenlake-9.5.1.py -d -t=1
...
@@ -814,7 +814,7 @@ python3 q-frozenlake-9.5.1.py -d -t=1
*
“算法 9.6.1”中的 Q 网络或 Q
*
“算法 9.6.1”中的 Q 网络或 Q
*
“算法 9.6.1”中的目标 Q 网络或
`Q_target`
*
“算法 9.6.1”中的目标 Q 网络或
`Q_target`
两个网络都是 MLP,每个都有 256 个单元的 3 个隐藏层。 这两个网络都是通过
`build_model()`
方法创建的。 在
**
体验重播
**
,
`replay()`
期间训练 Q 网络。 以
`update_weights()`
的固定间隔 C = 10 个训练步骤,将 Q 网络参数复制到目标 Q 网络。 在“算法 9.6.1”中,这实现了第 13 行,
`Q_target = Q`
。 每次发作后,
`update_epsilon()`
都会降低勘探开发的比例,以利用已学习的策略。
两个网络都是 MLP,每个都有 256 个单元的 3 个隐藏层。 这两个网络都是通过
`build_model()`
方法创建的。 在
**
经验回放
**
,
`replay()`
期间训练 Q 网络。 以
`update_weights()`
的固定间隔 C = 10 个训练步骤,将 Q 网络参数复制到目标 Q 网络。 在“算法 9.6.1”中,这实现了第 13 行,
`Q_target = Q`
。 每次发作后,
`update_epsilon()`
都会降低勘探开发的比例,以利用已学习的策略。
“列表 9.6.1”:
`dqn-cartpole-9.6.1.py`
“列表 9.6.1”:
`dqn-cartpole-9.6.1.py`
...
@@ -1046,7 +1046,7 @@ class DQNAgent:
...
@@ -1046,7 +1046,7 @@ class DQNAgent:
self
.
epsilon
*=
self
.
epsilon_decay
self
.
epsilon
*=
self
.
epsilon_decay
```
```
为了在“算法 9.6.1”
**
体验重
放**
`replay()`
中实现第 10 行,对于每个体验单元(
`s[j]`
,
`a[j]`
,
`r[j + 1]`
和
`s[j + 1]`
)将动作
`a[j]`
的 Q 值设置为
`Q_max`
。 所有其他动作的 Q 值保持不变。
为了在“算法 9.6.1”
**
经验回
放**
`replay()`
中实现第 10 行,对于每个体验单元(
`s[j]`
,
`a[j]`
,
`r[j + 1]`
和
`s[j + 1]`
)将动作
`a[j]`
的 Q 值设置为
`Q_max`
。 所有其他动作的 Q 值保持不变。
这是通过 DQNAgent
`replay()`
函数中的以下行实现的:
这是通过 DQNAgent
`replay()`
函数中的以下行实现的:
...
@@ -1057,7 +1057,7 @@ q_value = self.get_target_q_value(next_state)
...
@@ -1057,7 +1057,7 @@ q_value = self.get_target_q_value(next_state)
# correction on the Q value for the action used q_values[0][action] = reward if done else q_value
# correction on the Q value for the action used q_values[0][action] = reward if done else q_value
```
```
如“算法 9.6.1”的第 11 行所示,只有动作
`a[j]`
具有等于!
[](
img/14853_09_096.png
)
的非零损耗。 请注意,假设缓冲区中有足够的数据,换句话说,在每个情节结束后,“列表 9.6.2”中的感知动作学习循环会调用
体验重播。 缓冲区的大小大于或等于批量大小)。 在体验重播
期间,会随机采样一批体验单元,并将其用于训练 Q 网络。
如“算法 9.6.1”的第 11 行所示,只有动作
`a[j]`
具有等于!
[](
img/14853_09_096.png
)
的非零损耗。 请注意,假设缓冲区中有足够的数据,换句话说,在每个情节结束后,“列表 9.6.2”中的感知动作学习循环会调用
经验回放。 缓冲区的大小大于或等于批量大小)。 在经验回放
期间,会随机采样一批体验单元,并将其用于训练 Q 网络。
与 Q 表类似,
`act()`
实现了!
[](
img/14853_09_103.png
)
-贪婪策略,“公式 9.6.1”。
与 Q 表类似,
`act()`
实现了!
[](
img/14853_09_103.png
)
-贪婪策略,“公式 9.6.1”。
...
@@ -1116,7 +1116,7 @@ q_value = self.get_target_q_value(next_state)
...
@@ -1116,7 +1116,7 @@ q_value = self.get_target_q_value(next_state)
在平均 10 次运行的中,DQN 在 822 集内解决了。 我们需要注意的是,每次训练运行的结果可能会有所不同。
在平均 10 次运行的中,DQN 在 822 集内解决了。 我们需要注意的是,每次训练运行的结果可能会有所不同。
自从引入 DQN 以来,连续的论文都提出了对“算法 9.6.1”的改进。 一个很好的例子是
**Double
DQN(DDQN)**
,下面将对其进行讨论。
自从引入 DQN 以来,连续的论文都提出了对“算法 9.6.1”的改进。 一个很好的例子是
**双
DQN(DDQN)**
,下面将对其进行讨论。
## 双重 Q 学习(DDQN)
## 双重 Q 学习(DDQN)
...
@@ -1205,7 +1205,7 @@ DQN 和 DDQN 均表明,借助 DL,Q 学习能够扩展并解决具有连续
...
@@ -1205,7 +1205,7 @@ DQN 和 DDQN 均表明,借助 DL,Q 学习能够扩展并解决具有连续
在本章中,我们已经介绍了 DRL,DRL 是一种强大的技术,许多研究人员认为它是 AI 的最有希望的领先者。 我们已经超越了 RL 的原则。 RL 能够解决许多玩具问题,但是 Q 表无法扩展到更复杂的现实问题。 解决方案是使用深度神经网络学习 Q 表。 但是,由于样本相关性和目标 Q 网络的非平稳性,在 RL 上训练深度神经网络非常不稳定。
在本章中,我们已经介绍了 DRL,DRL 是一种强大的技术,许多研究人员认为它是 AI 的最有希望的领先者。 我们已经超越了 RL 的原则。 RL 能够解决许多玩具问题,但是 Q 表无法扩展到更复杂的现实问题。 解决方案是使用深度神经网络学习 Q 表。 但是,由于样本相关性和目标 Q 网络的非平稳性,在 RL 上训练深度神经网络非常不稳定。
DQN 提出了一种使用经验重播并将目标网络与受训 Q 网络分离的解决方案。 DDQN 建议通过将动作选择与动作评估分开来最大程度地降低 Q 值,从而进一步改进算法。 DQN 还提出了其他改进建议。 优先
体验重
放[6]认为,不应对体验缓冲区进行统一采样。
DQN 提出了一种使用经验重播并将目标网络与受训 Q 网络分离的解决方案。 DDQN 建议通过将动作选择与动作评估分开来最大程度地降低 Q 值,从而进一步改进算法。 DQN 还提出了其他改进建议。 优先
经验回
放[6]认为,不应对体验缓冲区进行统一采样。
取而代之的是,应更频繁地采样基于 TD 错误的更重要的经验,以完成更有效的培训。 文献[7]提出了一种对决网络架构来估计状态值函数和优势函数。 这两个函数均用于估计 Q 值,以加快学习速度。
取而代之的是,应更频繁地采样基于 TD 错误的更重要的经验,以完成更有效的培训。 文献[7]提出了一种对决网络架构来估计状态值函数和优势函数。 这两个函数均用于估计 Q 值,以加快学习速度。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录