Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
coolalex776
apachecn-dl-zh
提交
cb12d29b
A
apachecn-dl-zh
项目概览
coolalex776
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
1
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,发现更多精彩内容 >>
提交
cb12d29b
编写于
12月 21, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-12-21 23:26:57
上级
b4368435
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
10 deletion
+10
-10
new/handson-rl-py/05.md
new/handson-rl-py/05.md
+10
-10
未找到文件。
new/handson-rl-py/05.md
浏览文件 @
cb12d29b
...
...
@@ -132,9 +132,9 @@ V(s) = -0.0315
*Q((3,2)下)= Q((3,2),下)+ 0.1(0.3 +1 最大[Q((4,2)作用)]-Q((3,2), 下)*
我们可以说具有向下作用的状态
**(3,2)**
的值,例如
*Q((3,2),向下)*
的值为
**0.8**
`Q`
表中的]
。
我们可以说具有向下作用的状态
`(3, 2)`
的值,例如
`Q((3, 2), down)`
的值为
`Q`
表中的
`0.8`
。
状态
**(4,2)**
的最大值
*Q((4,2),操作)*
是什么? 我们仅研究了三个动作(
**向上**
,
**向下**
和右
**正确
**
),因此我们将仅基于这些动作来获取最大值。 (此处,我们将不执行 epsilon 贪婪策略;我们仅选择具有最大值的操作。)
状态
`(4, 2)`
的最大值
`Q((4, 2), op)`
是什么? 我们仅研究了三个动作(
**向上**
,
**向下**
和
**向右
**
),因此我们将仅基于这些动作来获取最大值。 (此处,我们将不执行 epsilon 贪婪策略;我们仅选择具有最大值的操作。)
因此,基于先前的
`Q`
表,我们可以将值替换为:
...
...
@@ -144,19 +144,19 @@ V(s) = -0.0315
*= 0.83*
因此,我们将
*Q((3,2),down)*
的值更新为
*0.83*
。
因此,我们将
`Q((3, 2), down)`
的值更新为
`0.83`
。
请记住,在选择要采取的操作时,我们将执行 epsilon-greedy 策略:我们要么探索具有概率 epsilon 的新操作,要么采取具有最大值的概率 1-epsilon。 在更新 Q 值时,我们不执行 epsilon-greedy 策略,我们仅选择具有最大值的操作。
现在我们处于状态
(4,2),我们必须执行一个动作。 我们应该执行什么动作? 我们决定基于 epsilon-greedy 策略,要么探索具有概率 epsilon 的新操作,要么选择具有概率
*1-epsilon*
的最佳操作。 假设我们选择概率
*1-ε*
,然后选择最佳操作。 因此,在
**(4,2)**
中,向右的操作
**具有最大值。 因此,我们将选择**
右边的
**操作:**
现在我们处于状态
`(4, 2)`
,我们必须执行一个动作。 我们应该执行什么动作? 我们决定基于 epsilon-greedy 策略,要么探索具有概率 epsilon 的新操作,要么选择具有概率
*1-epsilon*
的最佳操作。 假设我们选择概率
`1-ε`
,然后选择最佳操作。 因此,在
`(4, 2)`
中,向右的操作具有最大值。 因此,我们将选择
**向右**
操作:
![](
img/00128.jpeg
)
现在我们处于状态
**(4,3)**
,因为我们对状态
**(4,2)**
采取了
**正确的
**
动作。 我们如何更新先前状态的值? 像这样:
现在我们处于状态
`(4, 3)`
,因为我们对状态
`(4, 2)`
采取了
**向右
**
动作。 我们如何更新先前状态的值? 像这样:
*Q((4,2),right)= Q((4,2),right)+ 0.1(0.3 +1 max [Q((4,3)action)]-Q((4,2) ,右)*
如果您查看下面的
`Q`
表,对于状态
**(4,3)**
,我们仅探讨了两个操作(
**向上**
和
**向下**
),因此我们仅根据这些操作得出最大值。 (这里,我们将不执行 epsilon-greedy 策略;我们只选择具有最大值的操作):
如果您查看下面的
`Q`
表,对于状态
`(4, 3)`
,我们仅探讨了两个操作(
**向上**
和
**向下**
),因此我们仅根据这些操作得出最大值。 (这里,我们将不执行 epsilon-greedy 策略;我们只选择具有最大值的操作):
*Q((4,2),右)= Q((4,2),右)+ 0.1(0.3 +1 max [(Q(4,3),上),(Q(4,3) ,down)]-Q((4,2),right)*
...
...
@@ -349,7 +349,7 @@ env.close()
![](
img/00133.jpeg
)
在前面的等式中,您可能会注意到,没有最大的
*Q(s',a')*
,就像在 Q 学习中一样。 这里只是
*Q(s',a')*
。 我们可以通过执行一些步骤来详细了解这一点。 SARSA 涉及的步骤如下:
在前面的等式中,您可能会注意到,没有最大的
`Q(s', a')`
,就像在 Q 学习中一样。 这里只是
`Q(s', a')`
。 我们可以通过执行一些步骤来详细了解这一点。 SARSA 涉及的步骤如下:
1.
首先,我们将
`Q`
值初始化为一些任意值
2.
我们通过 epsilon-greedy 策略(!
[](
img/00134.jpeg
)
)选择一个动作,然后从一种状态转移到另一种状态
...
...
@@ -359,15 +359,15 @@ env.close()
![](
img/00137.jpeg
)
现在,我们在状态
**(4,2)**
下执行了
**右**
动作之后,就处于
**(4,3)**
状态。 我们如何更新先前状态
**(4,2)**
的值? 让我们将 alpha 设为
*0.1*
,将奖励设为
*0.3*
和折扣系数
`1`
:
现在,我们在状态
`(4, 2)`
下执行了
**右**
动作之后,就处于
`(4, 3)`
状态。 我们如何更新先前状态
`(4, 2)`
的值? 让我们将
`alpha`
设为
`0.1`
,将奖励设为
`0.3`
和折扣系数
`1`
:
![](
img/00138.jpeg
)
*Q((4,2),右)= Q((4,2),右)+ 0.1(0.3 +1 Q((4,3),动作))-Q((4,2), 右)*
我们如何选择
*Q(4,3),动作*
)的值? 在这里,与 Q 学习不同,我们不只是获取 max
*(Q(4,3),action)*
。 在 SARSA 中,我们使用 epsilon-greedy 策略。
我们如何选择
`Q((4, 3), action)`
的值? 在这里,与 Q 学习不同,我们不只是获取
`max Q((4, 3), action)`
。 在 SARSA 中,我们使用 epsilon-greedy 策略。
查看下面的 Q 表。 在状态
**(4,3)**
中,我们探索了两个动作。 与 Q 学习不同,我们不会直接选择最大动作:
查看下面的 Q 表。 在状态
`(4, 3)`
中,我们探索了两个动作。 与 Q 学习不同,我们不会直接选择最大动作:
![](
img/00139.jpeg
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录