Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
coolalex776
apachecn-dl-zh
提交
1ae9eb06
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,发现更多精彩内容 >>
提交
1ae9eb06
编写于
1月 18, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-18 17:44:20
上级
430c6f9c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
17 addition
and
17 deletion
+17
-17
new/pt-dl-handson/7.md
new/pt-dl-handson/7.md
+10
-10
new/rl-tf/02.md
new/rl-tf/02.md
+4
-4
new/rl-tf/05.md
new/rl-tf/05.md
+3
-3
未找到文件。
new/pt-dl-handson/7.md
浏览文件 @
1ae9eb06
...
...
@@ -6,7 +6,7 @@
强化学习的应用范围从在数字环境中玩游戏到在现实环境中控制机器人的动作。 它也恰好是您用来训练狗和其他动物的技术。 如今,强化学习已被用于驾驶自动驾驶汽车,这是一个非常受欢迎的领域。
当计算机(AlphaGo)击败世界围棋冠军 Lee Sedol [1]时,发生了最近的重大突破之一。 这是一个突破,因为
Go 一直以来被认为是让计算机掌握很长时间的游戏圣杯。 这是因为据说 Go
游戏中的配置数量大于我们宇宙中的原子数量。
当计算机(AlphaGo)击败世界围棋冠军 Lee Sedol [1]时,发生了最近的重大突破之一。 这是一个突破,因为
围棋一直以来被认为是让计算机掌握很长时间的游戏圣杯。 这是因为据说围棋
游戏中的配置数量大于我们宇宙中的原子数量。
在世界冠军输给 AlphaGo 之后,甚至有人说他已经从计算机中学到了一些东西。 这听起来很疯狂,但这是事实。 听起来更疯狂的是,算法的输入只不过是棋盘游戏当前状态的图像,而 AlphaGo 则一遍又一遍地对自己进行训练。 但在此之前,它从观看世界冠军的视频中学习了数小时。
...
...
@@ -74,9 +74,9 @@
![
Cumulative discounted rewards
](
img/B09475_07_003.jpg
)
可以看到,我们在
`Goal`
方程中引入了可变伽玛。 接近 1 的
Gamma 表示您将来对每个奖励的重视程度相同。 接近 0 的 Gamma
表示只有最近的奖励才具有很高的权重。
可以看到,我们在
`Goal`
方程中引入了可变伽玛。 接近 1 的
`Gamma`
表示您将来对每个奖励的重视程度相同。 接近 0 的
`Gamma`
表示只有最近的奖励才具有很高的权重。
一个良好的做法是将
Gamma = 0.9,因为您希望代理对未来有足够的关注,但又不是无限远。 您可以在训练时设置 Gamma,并且 Gamma
会保持固定,直到实验结束。 重要的是要注意,折扣在连续任务中非常有用,因为它们没有尽头。 但是,继续执行的任务不在本章范围之内。
一个良好的做法是将
`Gamma = 0.9`
,因为您希望代理对未来有足够的关注,但又不是无限远。 您可以在训练时设置
`Gamma`
,并且
`Gamma`
会保持固定,直到实验结束。 重要的是要注意,折扣在连续任务中非常有用,因为它们没有尽头。 但是,继续执行的任务不在本章范围之内。
## 马尔可夫决策过程
...
...
@@ -114,7 +114,7 @@ MDP 定义有五件事:
### 策略和价值功能
策略定义学习代理在给定时间的行为方式。 保单用希腊字母
Pi
表示。 该策略不能用公式定义; 它更多是基于直觉的概念。
策略定义学习代理在给定时间的行为方式。 保单用希腊字母
`Pi`
表示。 该策略不能用公式定义; 它更多是基于直觉的概念。
让我们举个例子。 对于需要在房间外寻找出路的机器人,它可能具有以下策略:
...
...
@@ -122,7 +122,7 @@ MDP 定义有五件事:
*
沿着墙壁走
*
找到通往门的最短路径
为了使我们能够数学地预测在特定状态下要采取的行动,我们需要一个函数。 让我们定义一个函数,该函数将设为当前状态,并输出一个数字,该数字表示该状态的价值。例如,如果您要越过河流,那么靠近桥梁的位置将比目标位置更有价值。 远离它。 此函数称为值函数,也用
V
表示。
为了使我们能够数学地预测在特定状态下要采取的行动,我们需要一个函数。 让我们定义一个函数,该函数将设为当前状态,并输出一个数字,该数字表示该状态的价值。例如,如果您要越过河流,那么靠近桥梁的位置将比目标位置更有价值。 远离它。 此函数称为值函数,也用
`V`
表示。
我们可以使用另一个函数来帮助我们度量事物:一个函数,该函数为我们提供由所有可以采取的行动所导致的所有未来状态的值。
...
...
@@ -132,9 +132,9 @@ MDP 定义有五件事:
让我们举个例子。 让我们考虑通用状态
`S0`
。 现在我们需要预测在
`a1`
,
`a2`
和
`a3`
之间要采取什么行动才能获得最大的回报(累积折扣奖励)。 我们将此函数命名为
`Q`
。 我们的函数
`Q`
,将预测每个操作的预期收益(值(
`V`
))。 此
`Q`
函数也称为动作值函数,因为它考虑了状态和动作,并预测了它们各自的组合的预期收益。
我们通常会选择最大值。 因此,这些最高限额将指导代理商到最后,这将是我们的策略。 请注意,我大部分时间都在说。 通常,在选择非最大动作值对时,我们会保持很小的随机机会。 我们这样做是为了提高模型的可探索性。 该随机探索机会的百分比称为
epsilon,该策略称为 epsilon-greedy
策略。 这是人们用来解决强化学习问题的最常见策略。 如果我们一直都只选择最大值,而不进行任何探索,则该策略简称为贪婪策略。 我们将在实施过程中同时使用这两种策略。
我们通常会选择最大值。 因此,这些最高限额将指导代理商到最后,这将是我们的策略。 请注意,我大部分时间都在说。 通常,在选择非最大动作值对时,我们会保持很小的随机机会。 我们这样做是为了提高模型的可探索性。 该随机探索机会的百分比称为
`ε`
,该策略称为 ε 贪婪
策略。 这是人们用来解决强化学习问题的最常见策略。 如果我们一直都只选择最大值,而不进行任何探索,则该策略简称为贪婪策略。 我们将在实施过程中同时使用这两种策略。
但是起初,我们可能不知道最佳作用值函数。 因此,由此产生的策略也将不是最佳策略。 我们将需要遍历动作值函数,并找到提供最佳回报的函数。 一旦找到它,我们将获得最优的
`Q`
。 最佳
`Q`
也称为
*Q ** 。 因此,我们将能够找到最优的 Pi,也称为 Pi *
。
但是起初,我们可能不知道最佳作用值函数。 因此,由此产生的策略也将不是最佳策略。 我们将需要遍历动作值函数,并找到提供最佳回报的函数。 一旦找到它,我们将获得最优的
`Q`
。 最佳
`Q`
也称为
`Q*`
。 因此,我们将能够找到最优的
`Pi`
,也称为
`Pi*`
。
此
`Q`
功能是代理必须学习的功能。 我们将使用神经网络来学习此功能,因为神经网络也是通用函数逼近器。 一旦有了行动价值功能,座席就可以了解问题的最佳策略,我们就可以完成目标。
...
...
@@ -182,9 +182,9 @@ MDP 定义有五件事:
*
更新
`Q`
*
!
[
Deep Q-learning
](
img/B09475_07_009.jpg
)
这里要注意的一件事是,我们将使用相同的
epsilon-greedy
策略在“步骤 6”中选择动作,并在“步骤 8”中更新相同的策略。 这种算法称为策略上算法。 从某种意义上讲,这是很好的,因为在我们观察和更新同一策略时,将更快地学习该策略。 它收敛非常快。 它也有一些缺点,即所学习的策略和用于决策的策略彼此紧密地联系在一起。 如果我们想要一个更具探索性的策略,以便在“步骤 6”中选择观察结果,并在“步骤 8”中更新更优化的策略,该怎么办? 这样的算法被称为非策略算法。
这里要注意的一件事是,我们将使用相同的
ε 贪婪
策略在“步骤 6”中选择动作,并在“步骤 8”中更新相同的策略。 这种算法称为策略上算法。 从某种意义上讲,这是很好的,因为在我们观察和更新同一策略时,将更快地学习该策略。 它收敛非常快。 它也有一些缺点,即所学习的策略和用于决策的策略彼此紧密地联系在一起。 如果我们想要一个更具探索性的策略,以便在“步骤 6”中选择观察结果,并在“步骤 8”中更新更优化的策略,该怎么办? 这样的算法被称为非策略算法。
Q 学习是一种非策略算法,因此,在 Q 学习中,我们将有两个策略。 我们用来推断动作的策略将是
epsilon-greedy
策略,并且我们将其称为策略网络。 我们将使用更新步骤更新的网络将是我们的目标网络。 那只能由一个贪婪的策略来控制,这意味着我们将始终选择 epsilon 等于零的最大值。 我们不会对此策略采取随机措施。 我们这样做是为了使我们更快地朝着更高的价值前进。 我们将通过不时复制策略网的权重(例如每隔一集一次)来更新目标网的权重。
Q 学习是一种非策略算法,因此,在 Q 学习中,我们将有两个策略。 我们用来推断动作的策略将是
ε 贪婪
策略,并且我们将其称为策略网络。 我们将使用更新步骤更新的网络将是我们的目标网络。 那只能由一个贪婪的策略来控制,这意味着我们将始终选择 epsilon 等于零的最大值。 我们不会对此策略采取随机措施。 我们这样做是为了使我们更快地朝着更高的价值前进。 我们将通过不时复制策略网的权重(例如每隔一集一次)来更新目标网的权重。
其背后的想法是不追逐一个移动的目标。 让我们举个例子:假设您想训练一头驴走路。 如果您坐在驴上并在其嘴前悬挂胡萝卜,驴可能会向前走,胡萝卜仍与驴保持相同的距离。 但是,与普遍的看法相反,这并不那么有效。 胡萝卜可能会随机反弹,并可能使驴远离其路径。 取而代之的是,通过从驴上下来并站在要驴来的地方使驴和胡萝卜脱钩,这似乎是一个更好的选择。 它提供了一个更稳定的学习环境。
...
...
@@ -328,7 +328,7 @@ def select_action(state):
return
torch
.
tensor
([[
random
.
randrange
(
2
)]],
device
=
device
,
dtype
=
torch
.
long
)
```
接下来,我们定义一种使用
epsilon-greedy
策略为我们采取行动的方法。 我们可以从策略网中推断出一定时间百分比,但是也有
`eps_threshold`
的机会,这意味着我们将随机选择操作。
接下来,我们定义一种使用
ε 贪婪
策略为我们采取行动的方法。 我们可以从策略网中推断出一定时间百分比,但是也有
`eps_threshold`
的机会,这意味着我们将随机选择操作。
```
py
num_episodes
=
20
...
...
new/rl-tf/02.md
浏览文件 @
1ae9eb06
...
...
@@ -181,11 +181,11 @@ Q 学习涉及的步骤如下:
3.
通过按照步骤 2 中提到的公式更新 Q 值,该表收敛以获取给定状态下某个动作的准确值。
#
Epsilon-Greedy
方法
#
ε 贪婪
方法
Epsilon-Greedy
是探索-利用困境的一种广泛使用的解决方案。 探索就是通过实验和研究来搜索和探索新的选择以产生新的价值,而探索则是通过重复这些选择并提高其价值来完善现有的选择。
ε 贪婪
是探索-利用困境的一种广泛使用的解决方案。 探索就是通过实验和研究来搜索和探索新的选择以产生新的价值,而探索则是通过重复这些选择并提高其价值来完善现有的选择。
Epsilon-Greedy
方法非常易于理解且易于实现:
ε 贪婪
方法非常易于理解且易于实现:
```
py
epsilon
()
=
0.05
or
0.1
#any small value between 0 to 1
...
...
@@ -569,6 +569,6 @@ Q 学习和 Q 网络都需要付出一定的稳定性。 在某些情况下,
# 概要
在本章中,我们学习了 OpenAI Gym,包括安装各种重要功能以加载,渲染和理解环境状态操作空间。 我们了解了
Epsilon-Greedy
方法作为探索与利用难题的解决方案,并尝试实现基本的 Q 学习和 Q 网络算法,以训练增强学习代理从 OpenAI Gym 导航环境。
在本章中,我们学习了 OpenAI Gym,包括安装各种重要功能以加载,渲染和理解环境状态操作空间。 我们了解了
ε 贪婪
方法作为探索与利用难题的解决方案,并尝试实现基本的 Q 学习和 Q 网络算法,以训练增强学习代理从 OpenAI Gym 导航环境。
在下一章中,我们将介绍强化学习中最基本的概念,包括
**马尔可夫决策过程**
(
**MDP**
),Bellman 方程和 Markov Chain Monte Carlo。
\ No newline at end of file
new/rl-tf/05.md
浏览文件 @
1ae9eb06
...
...
@@ -226,7 +226,7 @@ Making new env: MountainCar-v0
(
2
,)
```
因此,我们看到动作空间是一个离散集合,显示了三个可能的动作,状态空间是一个二维连续空间,其中一个维度满足位置,而另一个则满足汽车的速度。 接下来,我们将使用以下代码分配超参数,例如状态数,情节数,学习率(初始和最小值),折扣因子伽玛,情节中的最大步数以及
epsilon-greedy 的 epsilon
:
因此,我们看到动作空间是一个离散集合,显示了三个可能的动作,状态空间是一个二维连续空间,其中一个维度满足位置,而另一个则满足汽车的速度。 接下来,我们将使用以下代码分配超参数,例如状态数,情节数,学习率(初始和最小值),折扣因子伽玛,情节中的最大步数以及
ε 贪婪的
`ε`
:
```
py
n_states
=
40
# number of states
...
...
@@ -613,7 +613,7 @@ def fit(self):
self
.
learning_counter
+=
1
```
我们已经讨论了探索与利用难题。
**ε 贪婪方法**
是用于选择阈值
`ε`
并产生随机数的方法之一。 如果小于
epsilon,我们将遵循相同的策略;如果大于 epsilon,我们将随机探索行动,反之亦然。 在
`epsilon_greedy(self,obs)`
中,我们以动态方式实现了 epsilon-greedy 方法,其中在 fit(self)函数中,我们在每个学习步骤中都增加了 epsilon
的值:
我们已经讨论了探索与利用难题。
**ε 贪婪方法**
是用于选择阈值
`ε`
并产生随机数的方法之一。 如果小于
`ε`
,我们将遵循相同的策略;如果大于·ε,我们将随机探索行动,反之亦然。 在
`epsilon_greedy(self,obs)`
中,我们以动态方式实现了 ε 贪婪方法,其中在 fit(self)函数中,我们在每个学习步骤中都增加了
`ε`
的值:
```
py
def
epsilon_greedy
(
self
,
obs
):
...
...
@@ -1396,7 +1396,7 @@ Making new env: MountainCar-v0
(
2
,)
```
接下来,我们将使用以下代码分配超参数,例如状态数,情节数,学习率(初始和最小值),折扣因子伽玛,情节中的最大步长以及
epsilon-greedy 的 epsilon
:
接下来,我们将使用以下代码分配超参数,例如状态数,情节数,学习率(初始和最小值),折扣因子伽玛,情节中的最大步长以及
ε 贪婪的
`ε`
:
```
py
n_states
=
40
# number of states
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录