提交 a0b22c20 编写于 作者: W wizardforcel

2020-12-29 22:09:53

上级 17b3ea07
......@@ -188,11 +188,11 @@ print("Approximate value of pi is {}" .format(calculate_pi(points_inside_circle,
# 首次访问蒙特卡洛
如我们所见,在蒙特卡洛方法中,我们通过取平均收益来近似值函数。 但是在首次访问 MC 方法中,我们仅在剧集中首次访问状态时才对返回值进行平均。 例如,假设一个智能体正在玩蛇和梯子游戏,那么如果该智能体被蛇咬伤,它很有可能会返回到该状态。 当智能体重新访问状态时,我们不考虑平均回报。 我们仅在智能体首次访问该时才考虑平均回报。
如我们所见,在蒙特卡洛方法中,我们通过取平均收益来近似值函数。 但是在首次访问 MC 方法中,我们仅在剧集中首次访问状态时才对返回值进行平均。 例如,假设一个智能体正在玩蛇和梯子游戏,那么如果该智能体被蛇咬伤,它很有可能会返回到该状态。 当智能体重新访问状态时,我们不考虑平均回报。 我们仅在智能体首次访问该状态时才考虑平均回报。
# 每次访问蒙特卡洛
在蒙特卡洛的每次访问中,我们平均将剧集中每次访问州的收益均值化。 考虑相同的蛇和梯子游戏示例:如果智能体在蛇咬之后返回到相同的状态,尽管智能体正在重新访问状态,但我们可以将其视为平均收益。 在这种情况下,我们平均每次智能体访问该州时的回报。
在蒙特卡洛的每次访问中,我们平均将剧集中每次访问状态的收益均值化。 考虑相同的蛇和梯子游戏示例:如果智能体在蛇咬之后返回到相同的状态,尽管智能体正在重新访问状态,但我们可以将其视为平均收益。 在这种情况下,我们平均每次智能体访问该状态时的回报。
# 让我们使用蒙特卡洛玩二十一点
......@@ -499,11 +499,11 @@ plot_blackjack(value, axes[0], axes[1])
我们如何估计作用值? 还记得我们在第 3 章,“马尔可夫决策过程和动态规划”中学习的`Q`函数吗? 表示为`Q(s, a)``Q`函数用于确定特定状态下的动作有多好。 它基本上指定了状态-动作对。
但是,这里出现了探索的问题。如果我们还没有处于状态状态值,我们如何知道状态状态值? 如果我们不采取所有可能的措施探索所有,我们可能会错过丰厚的回报。
但是,这里出现了探索的问题。如果我们还没有处于状态状态值,我们如何知道状态状态值? 如果我们不采取所有可能的措施探索所有状态,我们可能会错过丰厚的回报。
假设在二十一点游戏中,我们处于纸牌总数为 20 的状态。如果我们仅尝试**拿牌**动作,我们将获得负数奖励,我们将得到负的奖励。但是,如果我们尝试**停牌**动作,我们将获得积极的回报,这实际上是最好的状态。因此,每次进入此特定状态 ,我们站立而不是受到打击。 为了让我们知道哪个是最佳操作,我们必须探索每种状态下的所有可能操作以找到最佳值。 我们应该怎么做?
让我介绍一个名为**探索起始的蒙特卡洛**,这意味着对于每个剧集,我们都将随机状态作为初始状态开始并执行操作。 因此,如果我们有大量的剧集,我们可能会以所有可能的动作覆盖所有。 它也称为 **MC-ES** 算法。
让我介绍一个名为**探索起始的蒙特卡洛**,这意味着对于每个剧集,我们都将随机状态作为初始状态开始并执行操作。 因此,如果我们有大量的剧集,我们可能会以所有可能的动作覆盖所有状态。 它也称为 **MC-ES** 算法。
MC-ES 算法非常简单,如下所示:
......@@ -595,7 +595,7 @@ def epsilon_greedy_policy(state, epsilon):
3. 我们选择行为策略。 行为策略不是贪婪的,它可以选择任何状态-行为对。
4. 然后,我们开始我们的剧集,并根据我们的行为策略在`s`状态下执行动作`a`,并存储奖励。 我们重复此操作直到剧集结束。
5. 现在,对于剧集中的每个,我们执行以下操作:
5. 现在,对于剧集中的每个状态,我们执行以下操作:
1. 我们将计算回报`G`。 我们知道回报是折扣奖励的总和: `G = 折扣因子 * G + 奖励`
2. 然后我们将`C(s, a)`更新为`C(s, a) + C(s, a) + w`
3. 我们更新`Q(s, a)`
......
......@@ -105,7 +105,7 @@ V(s) = -0.0315
前面的公式与 TD 预测更新规则相似,只是有一点点差异。 我们将逐步详细介绍这一点。 Q 学习涉及的步骤如下:
1. 首先,我们将`Q`函数初始化为一些任意值
2. 我们使用`ε`贪婪策略(`ε > 0`)从某个州采取了一项行动,并将其移至新的州
2. 我们使用`ε`贪婪策略(`ε > 0`)从某个状态采取了一项行动,并将其移至新的状态
3. 我们通过遵循更新规则来更新先前状态的`Q`值:
![](img/00123.jpeg)
......
......@@ -564,7 +564,7 @@ for i in range(no_of_episodes):
![](img/00345.jpeg)
![](img/00346.jpeg)使用访问频率`ρ[π]`而不是`ρ[π']`,也就是说,由于策略的变化,我们忽略了状态访问频率的变化。 简而言之,我们假设新旧策略的访问频率均相同。 当我们计算`L[π]`的梯度时,相对于某些参数`θ`而言,这也会提高`η`,我们不确定要采取多少步骤。
![](img/00346.jpeg)使用访问频率`ρ[π]`而不是`ρ[π']`,也就是说,由于策略的变化,我们忽略了状态访问频率的变化。 简而言之,我们假设新旧策略的状态访问频率均相同。 当我们计算`L[π]`的梯度时,相对于某些参数`θ`而言,这也会提高`η`,我们不确定要采取多少步骤。
Kakade 和 Langford 提出了一种新的策略更新方法,称为保守策略迭代,如下所示:
......
......@@ -161,7 +161,7 @@ MAXQ 值函数分解是 HRL 中最常用的算法之一。 让我们看看 MAXQ
# 逆强化学习
那么,我们在 RL 中做了什么? 我们试图找到具有奖励函数的最优策略。 逆强化学习只是强化学习的逆,也就是说,给出了最优策略,我们需要找到奖励函数。 但是为什么反强化学习会有所帮助? 设计奖励函数不是一项简单的任务,而较差的奖励函数会导致智能体的不良行为。 我们并不总是知道适当的奖励函数,但我们知道正确的策略,即在每个采取正确的行动。 因此,这种最佳策略由人类专家提供给智能体,智能体尝试学习奖励函数。 例如,考虑一个学习在真实环境中行走的智能体; 很难为将要执行的所有动作设计奖励函数。 取而代之的是,我们可以将人类专家的演示(最佳策略)提供给智能体,智能体将尝试学习奖励函数。
那么,我们在 RL 中做了什么? 我们试图找到具有奖励函数的最优策略。 逆强化学习只是强化学习的逆,也就是说,给出了最优策略,我们需要找到奖励函数。 但是为什么反强化学习会有所帮助? 设计奖励函数不是一项简单的任务,而较差的奖励函数会导致智能体的不良行为。 我们并不总是知道适当的奖励函数,但我们知道正确的策略,即在每个状态采取正确的行动。 因此,这种最佳策略由人类专家提供给智能体,智能体尝试学习奖励函数。 例如,考虑一个学习在真实环境中行走的智能体; 很难为将要执行的所有动作设计奖励函数。 取而代之的是,我们可以将人类专家的演示(最佳策略)提供给智能体,智能体将尝试学习奖励函数。
RL 周围有各种改进和进步。 现在,您已经阅读完本书,可以开始探索强化学习的各种进步,并开始尝试各种项目。 学习和加强!
......
......@@ -40,7 +40,7 @@
1. 当环境模型未知时,在 RL 中使用蒙特卡洛算法。
2. 请参阅“使用蒙特卡洛估计`pi`的值”部分。
3. 在蒙特卡洛预测中,我们通过取均值回报而不是期望回报来近似值函数。
4. 在蒙特卡洛的每次访问中,我们平均将剧集中每次访问的收益均值化。 但是在首次访问 MC 方法中,我们仅在剧集中首次访问状态时才对返回值进行平均。
4. 在蒙特卡洛的每次访问中,我们平均将剧集中每次访问状态的收益均值化。 但是在首次访问 MC 方法中,我们仅在剧集中首次访问状态时才对返回值进行平均。
5. 请参阅“蒙特卡洛控制”部分。
6. 请参阅“策略上的蒙特卡洛控制”和“策略外的蒙特卡洛控制”部分
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册