Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
白麟_嗷呜
apachecn-dl-zh
提交
9571a7f0
A
apachecn-dl-zh
项目概览
白麟_嗷呜
/
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,体验更适合开发者的 AI 搜索 >>
提交
9571a7f0
编写于
12月 25, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-12-25 17:29:27
上级
7df14bff
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
14 deletion
+14
-14
new/handson-rl-py/11.md
new/handson-rl-py/11.md
+14
-14
未找到文件。
new/handson-rl-py/11.md
浏览文件 @
9571a7f0
...
...
@@ -237,7 +237,7 @@ class PolicyGradient:
我们使用策略梯度更新演员网络权重,并使用根据 TD 误差计算得出的梯度更新评论家网络权重。
首先,我们通过将探索噪声
`N`
添加到演员网络产生的动作(例如
!
[](
img/00320.jpeg
)
)来选择动作。 我们在
`s`
状态下执行此操作,获得
`r`
奖励,然后移至新状态
`s'`
。 我们将此转移信息存储在经验回放缓冲区中。
首先,我们通过将探索噪声
`N`
添加到演员网络产生的动作(例如
`μ(s; θ^μ) + N`
)来选择动作。 我们在
`s`
状态下执行此操作,获得
`r`
奖励,然后移至新状态
`s'`
。 我们将此转移信息存储在经验回放缓冲区中。
经过一些迭代后,我们从回放缓冲区采样转移并训练网络,然后计算目标
`Q`
值:
...
...
@@ -537,7 +537,7 @@ for i in range(no_of_episodes):
在 TRPO 中,我们迭代地改进了该策略,并施加了一个约束,以使旧策略和新策略之间的
**Kullback-Leibler**
(
**KL**
)差异要小于某个常数。 !
[](
img/00326.jpeg
)
。 该约束称为信任区域约束。
那么什么是 KL 散度? KL 散度告诉我们两个概率分布如何彼此不同。 由于我们的策略是针对行动的概率分布,因此 KL 差异告诉我们新策略与旧策略有多远。 为什么我们必须使旧策略和新策略之间的距离保持小于恒定值
`δ`
? 因为我们不希望我们的新策略与旧策略脱节。 因此,我们施加了约束以使新策略接近旧策略。 同样,为什么我们必须保持旧策略呢? 当新策略与旧策略相距甚远时,它将影响代理的学习绩效,并导致完全不同的学习行为。 简而言之,在 TRPO 中,我们朝着改善策略的方向迈出了一步,即使报酬最大化,但我们还应确保满足信任区域约束。
[
它使用共轭梯度下降
](
http://www.idi.ntnu.no/~elster/tdt24/tdt24-f09/cg.pdf
)
优化网络参数
!
[](
img/00328.jpeg
)
,同时满足约束条件。 该算法保证了单调策略的改进,并且在各种连续环境中也取得了出色的效果。
那么什么是 KL 散度? KL 散度告诉我们两个概率分布如何彼此不同。 由于我们的策略是针对行动的概率分布,因此 KL 差异告诉我们新策略与旧策略有多远。 为什么我们必须使旧策略和新策略之间的距离保持小于恒定值
`δ`
? 因为我们不希望我们的新策略与旧策略脱节。 因此,我们施加了约束以使新策略接近旧策略。 同样,为什么我们必须保持旧策略呢? 当新策略与旧策略相距甚远时,它将影响代理的学习绩效,并导致完全不同的学习行为。 简而言之,在 TRPO 中,我们朝着改善策略的方向迈出了一步,即使报酬最大化,但我们还应确保满足信任区域约束。
[
它使用共轭梯度下降
](
http://www.idi.ntnu.no/~elster/tdt24/tdt24-f09/cg.pdf
)
优化网络参数
`θ`
,同时满足约束条件。 该算法保证了单调策略的改进,并且在各种连续环境中也取得了出色的效果。
现在,我们将了解 TRPO 的数学原理。 如果您对数学不感兴趣,可以跳过本节。
...
...
@@ -547,11 +547,11 @@ for i in range(no_of_episodes):
![](
img/00330.jpeg
)
现在让我们将新策略视为
!
[](
img/00331.jpeg
)
; 就相对于旧策略!
[](
img/00333.jpeg
)
的优势而言,可以将其定义为策略!
[](
img/00332.jpeg
)
的预期回报,如下所示:
现在让我们将新策略视为
`π'`
; 就相对于旧策略
`π`
的优势而言,可以将其定义为策略
`π'`
的预期回报,如下所示:
![](
img/00334.jpeg
)
好吧,为什么我们要利用旧策略的优势? 因为我们正在衡量新策略
!
[](
img/00335.jpeg
)
相对于旧策略!
[](
img/00336.jpeg
)
的平均效果有多好。 我们可以用状态之和而不是时间步来重写前面的方程,如下所示:
好吧,为什么我们要利用旧策略的优势? 因为我们正在衡量新策略
`π'`
相对于旧策略
`π`
的平均效果有多好。 我们可以用状态之和而不是时间步来重写前面的方程,如下所示:
![](
img/00337.jpeg
)
...
...
@@ -559,26 +559,26 @@ for i in range(no_of_episodes):
![](
img/00339.jpeg
)
如果您看到前面的方程
!
[](
img/00340.jpeg
)
,则!
[](
img/00341.jpeg
)
与!
[](
img/00342.jpeg
)
之间存在复杂的依存关系,因此很难对方程进行优化。 因此,我们将局部近似
!
[](
img/00343.jpeg
)
引入!
[](
img/00344.jpeg
)
,如下所示:
如果您看到前面的方程
`η(π')`
,则
`ρ[π'](s)`
与
`π'`
之间存在复杂的依存关系,因此很难对方程进行优化。 因此,我们将局部近似
`L[π](π')`
引入
`η(π')`
,如下所示:
![](
img/00345.jpeg
)
![](
img/00346.jpeg
)
使用访问频率
!
[](
img/00347.jpeg
)
而不是!
[](
img/00348.jpeg
)
,也就是说,由于策略的变化,我们忽略了状态访问频率的变化。 简而言之,我们假设新旧策略的州访问频率均相同。 当我们计算!
[](
img/00349.jpeg
)
的梯度时,相对于某些参数!
[](
img/00351.jpeg
)
而言,这也会提高!
[](
img/00350.jpeg
)
,我们不确定要采取多少步骤。
![](
img/00346.jpeg
)
使用访问频率
`ρ[π]`
而不是
`ρ[π']`
,也就是说,由于策略的变化,我们忽略了状态访问频率的变化。 简而言之,我们假设新旧策略的州访问频率均相同。 当我们计算
`L[π]`
的梯度时,相对于某些参数
`θ`
而言,这也会提高
`η`
,我们不确定要采取多少步骤。
Kakade 和 Langford 提出了一种新的策略更新方法,称为保守策略迭代,如下所示:
![](
img/00352.jpeg
)
----(1)
![](
img/00353.jpeg
)
是新策略。
!
[](
img/00354.jpeg
)
是旧策略。
![](
img/00353.jpeg
)
是新策略。
`π_old`
是旧策略。
![](
img/00355.jpeg
)
,即
!
[](
img/00356.jpeg
)
,是最大化!
[](
img/00357.jpeg
)
的策略。
![](
img/00355.jpeg
)
,即
`π'`
,是最大化
`L[π_old]`
的策略。
Kakade 和 Langford 从
`(1)`
得出以下方程式:
![](
img/00358.jpeg
)
----(2)
`C`
是惩罚系数,等于
!
[](
img/00359.jpeg
)
,!
[](
img/00360.jpeg
)
表示旧策略与新策略之间的 KL 散度。
`C`
是惩罚系数,等于
`4εγ / (1 - α)^2`
,
`D_max[KL]`
表示旧策略与新策略之间的 KL 散度。
如果我们仔细观察前面的方程式
`(2)`
,我们会注意到,只要右侧最大化,我们的预期长期回报
`η`
就会单调增加。
...
...
@@ -598,7 +598,7 @@ Kakade 和 Langford 从`(1)`得出以下方程式:
![](
img/00366.jpeg
)
在前面的等式中,我们可以理解,最大化
`M[i]`
可以保证我们期望收益的最大化。 因此,现在我们的目标是最大化
`M[i]`
,从而最大化我们的预期回报。 由于我们使用参数化策略,因此在上一个公式中将
!
[](
img/00367.jpeg
)
替换为!
[](
img/00368.jpeg
)
,然后使用!
[](
img/00369.jpeg
)
表示我们要改进的策略,如下所示:
在前面的等式中,我们可以理解,最大化
`M[i]`
可以保证我们期望收益的最大化。 因此,现在我们的目标是最大化
`M[i]`
,从而最大化我们的预期回报。 由于我们使用参数化策略,因此在上一个公式中将
`π`
替换为
`θ`
,然后使用
`θ_old`
表示我们要改进的策略,如下所示:
![](
img/00370.jpeg
)
...
...
@@ -618,17 +618,17 @@ Kakade 和 Langford 从`(1)`得出以下方程式:
![](
img/00374.jpeg
)
在前面的公式中,我们将状态总和
!
[](
img/00375.jpeg
)
替换为期望!
[](
img/00376.jpeg
)
,并且将重要性总和估计值替换为行动总和,如下所示:
在前面的公式中,我们将状态总和
`Σ[s] ρ θ_old`
替换为期望
`E[s ~ ρ θ_old]`
,并且将重要性总和估计值替换为行动总和,如下所示:
![](
img/00377.jpeg
)
然后,我们将优势目标值
!
[](
img/00378.jpeg
)
替换为 Q 值!
[](
img/00379.jpeg
)
。
然后,我们将优势目标值
`A[θ_old]`
替换为 Q 值
`Q[θ_old]`
。
因此,我们最终的目标函数将变为:
![](
img/00380.jpeg
)
优化前面提到的具有约束的目标函数称为约束优化。 我们的约束是使旧策略和新策略之间的平均 KL 差异小于
!
[](
img/00381.jpeg
)
。我们使用共轭梯度下降来优化先前的功能。
优化前面提到的具有约束的目标函数称为约束优化。 我们的约束是使旧策略和新策略之间的平均 KL 差异小于
`δ`
。我们使用共轭梯度下降来优化先前的功能。
# 近端策略优化
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录