fix ch1 typos
This commit is contained in:
@@ -151,7 +151,7 @@
|
||||
|
||||
这里给大家举一些奖励的例子。不同的环境,奖励也是不同的。
|
||||
|
||||
* 比如说一个下象棋的选手,它的目的其实就为了赢棋。奖励是说在最后棋局结束的时候,他知道会得到一个正奖励或者负奖励。
|
||||
* 比如说一个下象棋的选手,他的目的其实就为了赢棋。奖励是说在最后棋局结束的时候,他知道会得到一个正奖励或者负奖励。
|
||||
* 羚羊站立也是一个强化学习过程,它得到的奖励就是它是否可以最后跟它妈妈一块离开或者它被吃掉。
|
||||
* 在股票管理里面,奖励定义由你的股票获取的收益跟损失决定。
|
||||
* 在玩雅达利游戏的时候,奖励就是你有没有在增加游戏的分数,奖励本身的稀疏程度决定了这个游戏的难度。
|
||||
@@ -277,7 +277,7 @@ Policy 决定了这个 agent 的行为,它其实是一个函数,把输入的
|
||||
**根据强化学习 agent 的不同,我们可以把 agent 进行归类。**
|
||||
|
||||
* `基于价值的 agent(value-based agent)`。这一类 agent 显式地学习的是价值函数,隐式地学习了它的策略。策略是从我们学到的价值函数里面推算出来的。
|
||||
* `基于策略的 agent(policy-based agent)`。这一类 agent 直接去学习 policy,就是说你直接给它一个状态,它就会输出这个动作的概率。在这个 policy-based agent 里面并没有去学习它的价值函数。
|
||||
* `基于策略的 agent(policy-based agent)`。这一类 agent 直接去学习 policy,就是说你直接给它一个状态,它就会输出这个动作的概率。在基于策略的 agent 里面并没有去学习它的价值函数。
|
||||
* 把 value-based 和 policy-based 结合起来就有了 `Actor-Critic agent`。这一类 agent 把它的策略函数和价值函数都学习了,然后通过两者的交互得到一个最佳的行为。
|
||||
|
||||
Q: 基于策略迭代和基于价值迭代的强化学习方法有什么区别?
|
||||
@@ -360,18 +360,18 @@ Learning 和 Planning 是序列决策的两个基本问题。
|
||||
|
||||
* 利用是说我们不去尝试新的东西,就采取已知的可以得到很大奖励的行为。
|
||||
|
||||
因为在刚开始的时候强化学习 agent 不知道它采取了某个行为会发生什么,所以它只能通过试错去探索。所以 探索就是在试错来理解采取的这个行为到底可不可以得到好的奖励。利用是说我们直接采取已知的可以得到很好奖励的行为。所以这里就面临一个权衡,怎么通过牺牲一些短期的奖励来获得行为的理解。
|
||||
因为在刚开始的时候强化学习 agent 不知道它采取了某个行为会发生什么,所以它只能通过试错去探索。所以探索就是在试错来理解采取的这个行为到底可不可以得到好的奖励。利用是说我们直接采取已知的可以得到很好奖励的行为。所以这里就面临一个权衡,怎么通过牺牲一些短期的奖励来获得行为的理解。
|
||||
|
||||

|
||||
这里我给大家举一些例子来说明探索和利用的定义。
|
||||
|
||||
* 以选择餐馆为例,
|
||||
* 利用:我们直接去你最喜欢的餐馆,因为你去过这个餐馆很多次了,所以你知道这里面的菜都非常可口。
|
||||
* 探索:你把手机拿出来,你直接搜索一个新的餐馆,然后去尝试它到底好不好吃。这里的结果就是有可能这个新的餐馆非常不满意,你就这个钱就浪费了。
|
||||
* 探索:你把手机拿出来,你直接搜索一个新的餐馆,然后去尝试它到底好不好吃。你有可能对这个新的餐馆非常不满意,钱就浪费了。
|
||||
|
||||
* 以做广告为例,
|
||||
* 利用:我们直接采取最优的这个广告策略。
|
||||
* 探索:我们换一种广告方式,然后看这个新的广告策略到底可不可以得到奖励。
|
||||
* 探索:我们换一种广告策略,看看这个新的广告策略到底可不可以得到奖励。
|
||||
|
||||
* 以挖油为例,
|
||||
* 利用:我们直接在已知的地方挖油,我们就可以确保挖到油。
|
||||
@@ -399,7 +399,7 @@ Learning 和 Planning 是序列决策的两个基本问题。
|
||||
|
||||
## Experiment with Reinforcement Learning
|
||||

|
||||
强化学习是一个理论跟实践结合的机器学习分支,需要去推导很多算法公式。然后去理解它算法背后的一些数学原理。另外一方面,上机实践通过实现算法,在很多实验环境里面去探索这个算法是不是可以得到预期效果也是一个非常重要的过程。
|
||||
强化学习是一个理论跟实践结合的机器学习分支,需要去推导很多算法公式,去理解它算法背后的一些数学原理。另外一方面,上机实践通过实现算法,在很多实验环境里面去探索这个算法是不是可以得到预期效果也是一个非常重要的过程。
|
||||
|
||||
在[这个链接](https://github.com/cuhkrlcourse/RLexample)里面,公布了一些 RL 相关的代码,利用了 Python 和深度学习的一些包(主要是用 PyTorch 为主)。
|
||||
|
||||
@@ -420,7 +420,7 @@ Learning 和 Planning 是序列决策的两个基本问题。
|
||||
* 离散控制场景(输出的动作是可数的,比如 Pong 游戏中输出的向上或向下动作):一般使用 Atari 环境评估
|
||||
* 连续控制场景(输出的动作是不可数的,比如机器人走路时不仅有方向,还要角度,角度就是不可数的,是一个连续的量 ):一般使用 mujoco 环境评估
|
||||
|
||||
Gym Retro 是对 Gym 环境的进一步扩展,包含了更多的一些游戏。
|
||||
`Gym Retro` 是对 Gym 环境的进一步扩展,包含了更多的一些游戏。
|
||||
|
||||
我们可以通过 pip 来安装 Gym:
|
||||
|
||||
@@ -437,7 +437,7 @@ $python
|
||||
|
||||

|
||||
|
||||
强化学习的这个交互就是由 agent 跟环境进行交互。所以算法的 interface 也是用这个来表示。比如说我们现在安装了 OpenAI Gym。那我们这里就可以直接调入 Taxi-v2 的环境,就建立了这个环境。初始化这个环境过后,就可以进行交互了。Agent 得到这个观测过后,它就会输出一个 action。然后这个动作会被这个环境拿进去执行这个 step,然后环境就会往前走一步,然后返回新的 observation 和 reward 以及一个 flag variable 就决定你这个游戏是不是结束了。几行代码就实现了强化学习里面的 framework。
|
||||
强化学习的这个交互就是由 agent 跟环境进行交互。所以算法的 interface 也是用这个来表示。比如说我们现在安装了 OpenAI Gym。那我们这里就可以直接调入 Taxi-v2 的环境,就建立了这个环境。初始化这个环境过后,就可以进行交互了。Agent 得到这个观测过后,它就会输出一个 action。然后这个动作会被这个环境拿进去执行这个 step,然后环境就会往前走一步,然后返回新的 observation 和 reward 以及一个 flag variable 就决定你这个游戏是不是结束了。几行代码就实现了强化学习的框架。
|
||||
|
||||

|
||||
在 OpenAI Gym 里面有很经典的控制类游戏。
|
||||
@@ -482,7 +482,7 @@ Gym 中的小游戏,大部分都可以用一个普通的实数或者向量来
|
||||
* `observation(object)`是状态信息,是在游戏中观测到的屏幕像素值或者盘面状态描述信息。
|
||||
* `reward(float)`是奖励值,即 action 提交以后能够获得的奖励值。这个奖励值因游戏的不同而不同,但总体原则是,对完成游戏有帮助的动作会获得比较高的奖励值。
|
||||
* `done(boolean)`表示游戏是否已经完成。如果完成了,就需要重置游戏并开始一个新的 episode。
|
||||
* `info(dict)`是一些比较原始的用于诊断和调试的信息,或许对训练有帮助。不过,OpenAI团队在评价你提交的机器人时,是不允许使用这些信息的。
|
||||
* `info(dict)`是一些比较原始的用于诊断和调试的信息,或许对训练有帮助。不过,OpenAI 团队在评价你提交的机器人时,是不允许使用这些信息的。
|
||||
|
||||
在每个训练中都要使用的返回值有 observation、reward、done。但 observation 的结构会由于游戏的不同而发生变化。以 CartPole-v0 小游戏为例,我们修改下代码:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user