提交 264e6d0a 编写于 作者: W wizardforcel

2021-01-23 12:03:43

上级 c1977733
......@@ -181,11 +181,11 @@ Episode T
每个`Episode T`都以以下初始化开始:
* 对于所有状态`s`,合格分数`e(s) = 0`
* 对于所有状态`s`,给定`Episode T`中的状态值![](img/96757d13-12cc-4ae2-b27b-1b8383db5a88.png)等于![](img/4ba99034-9dea-402d-871b-ac5949e7b310.png)
* 对于所有状态`s`,给定`Episode T`中的状态值`V[T](s)`等于`V[T-1](s)`
在情节的每个时间步,即当前步`t`,我们更新要离开的状态![](img/93bfad9d-15d6-48dc-8f47-8f9aef8070ba.png)的资格,然后为所有状态更新以下内容:
在情节的每个时间步,即当前步`t`,我们更新要离开的状态`s[t-1]`的资格,然后为所有状态更新以下内容:
* 针对当前离开状态![](img/3c8ca4ff-4fda-4e46-bf29-46dd17cbb4de.png)(即![](img/a11db6ce-2582-4ac7-89d7-d7c972b0ec78.png))和要更改其值的状态的合格分数![](img/9d156535-7cde-4d47-827f-877259ece162.png)使用时间差误差的状态值函数
* 针对当前离开状态`s[t-1]`(即`r[t] + γ V[T-1](s[t]) + V[T-1](s[t-1])`)和要更改其值的状态的合格分数`e(s)`使用时间差误差的状态值函数
* 通过给定折扣系数进行折扣的资格分数
由于这些更新针对所有状态独立发生,因此可以针对所有状态并行执行这些操作。
......@@ -202,7 +202,7 @@ Episode T
![](img/49b93224-b17b-4deb-b5cf-bf76e9eb19db.png)
在基于结果的模型中,这是不正确的,在该模型中,我们不使用状态估计值![](img/26066305-bae0-4820-be46-b1b21dcfaa41.png),而是使用整个奖励序列,直到事件结束为止。 因此,在蒙特卡洛方法基于结果的模型的情况下,值函数由以下公式给出:
在基于结果的模型中,这是不正确的,在该模型中,我们不使用状态估计值`V[T](s[t])`,而是使用整个奖励序列,直到事件结束为止。 因此,在蒙特卡洛方法基于结果的模型的情况下,值函数由以下公式给出:
![](img/24c5dac2-f8c8-45a1-b87c-bf33254da2aa.png)
......@@ -220,14 +220,14 @@ Episode T
```
因此,这里我们仅使用时间差误差![](img/bbe74c85-c403-4b25-bf57-53e9fd7a9692.png)更新当前离开状态![](img/187fe806-bcca-4c11-8794-13c5058b5cf7.png)的值函数。
因此,这里我们仅使用时间差误差`r[t] + γ V[T-1](s[t]) + V[T-1](s[t-1])`更新当前离开状态`s[t-1]`的值函数。
# TD 规则
# `TD(λ)`规则
`TD(1)``TD(0)`规则产生一个通用规则,即`TD(λ)`,因此对于![](img/4b1123cb-72a4-481e-81e9-6835853ffc68.png)并应满足以下条件:
`TD(1)``TD(0)`规则产生一个通用规则,即`TD(λ)`,因此对于`λ ∈ [0, 1]`并应满足以下条件:
* 如果![](img/d6400b9d-6c9e-4370-b506-ff40da00344d.png) = 0,则`TD(λ)`趋于`TD(0)`
* 如果![](img/d6400b9d-6c9e-4370-b506-ff40da00344d.png) = 1,则`TD(λ)`趋于`TD(1)`
* 如果`λ = 0`,则`TD(λ)`趋于`TD(0)`
* 如果`λ = 1`,则`TD(λ)`趋于`TD(1)`
`TD(0)``TD(1)`都基于时间连续预测之间的差异进行更新。
......@@ -242,11 +242,11 @@ Episode T
```
这满足前面两个条件,并且可以合并![](img/4b1123cb-72a4-481e-81e9-6835853ffc68.png)的任何值。
这满足前面两个条件,并且可以合并`λ ∈ [0, 1]`的任何值。
# 策略梯度
根据策略梯度定理,对于先前指定的策略目标函数和任何可微分策略![](img/20afea81-2790-4090-9aa2-1760249c17fd.png),策略梯度如下:
根据策略梯度定理,对于先前指定的策略目标函数和任何可微分策略`π[θ](s, a)`,策略梯度如下:
![](img/406f3ccb-146a-485c-b05a-89a8f4d935cd.png)
......@@ -254,7 +254,7 @@ Episode T
# 蒙特卡洛策略梯度
**蒙特卡洛策略梯度**方法中,我们使用随机梯度上升方法更新参数,并按照策略梯度定理进行更新,并使用![](img/1181ceb5-bd76-4d0f-9b7c-d232ea3145ff.png)作为![](img/7b469909-8042-48f5-a02f-8b3131c036b6.png)的无偏样本。 在此,![](img/ac53328a-b0d7-4305-a938-3e4c23fc3c85.png)是从该时间步开始的累计奖励。
**蒙特卡洛策略梯度**方法中,我们使用随机梯度上升方法更新参数,并按照策略梯度定理进行更新,并使用`v[t]`作为`Q[π[θ]](s[t], a[t])`的无偏样本。 在此,`v[t]`是从该时间步开始的累计奖励。
蒙特卡洛策略梯度法如下:
......@@ -269,7 +269,7 @@ end for
Output: final
```
# 评论家算法
# 演员评论家算法
先前使用蒙特卡洛策略梯度方法进行的策略优化导致较大的差异。 为了解决此问题,我们使用评论家来估计状态作用值函数,如下所示:
......@@ -278,19 +278,21 @@ Output: final
这产生了著名的**演员评论家算法**。 顾名思义,演员评论家算法出于以下目的维护两个网络:
* 一个网络充当评论者,它更新状态动作函数逼近器的权重`w`参数向量
* 其他网络充当演员,它根据批评者给出的方向更新策略参数向量![](img/49aece0d-9f5a-4d27-8ccc-13b01329f2de.png)
* 其他网络充当演员,它根据批评者给出的方向更新策略参数向量`θ`
下图代表了演员评论家算法:
![](img/ca78b5e5-1459-4f34-ad61-de744f663054.png)
因此,在执行者批评算法的情况下,实际策略梯度公式中的真实状态作用值函数![](img/091617b0-180f-4323-8f54-6ccc8001c015.png)被替换为近似状态作用值函数![](img/a764a644-e5f7-46ab-88f8-999b59a38cc6.png)。 因此:
因此,在执行者批评算法的情况下,实际策略梯度公式中的真实状态作用值函数`Q[π[θ]](s, a)`被替换为近似状态作用值函数`Q[w](s, a)`。 因此:
![](img/d8b7251d-91aa-4183-add1-5a5a0f9f8d0c.png)
![](img/d8b7251d-91aa-4183-add1-5a5a0f9f8d0c.png)
并且:
![](img/d9896c48-a57d-45e1-974e-3d9bed7c4af3.png)
因此,为了估计状态作用值函数,评论者网络使用`TD(0)`(先前讨论)来更新权重参数`w`,并更新策略参数向量![](img/86eb3024-7437-442e-b21a-1b2c1ccffbfc.png) 演员网络使用策略梯度。 演员评论家算法的一种简单方法如下所示:
因此,为了估计状态作用值函数,评论者网络使用`TD(0)`(先前讨论)来更新权重参数`w`,并更新策略参数向量`θ`演员网络使用策略梯度。 演员评论家算法的一种简单方法如下所示:
```py
Initialize s,
......@@ -322,7 +324,7 @@ Output : final
![](img/e4d88794-1d88-4b34-89cb-b726ea224273.png)
在这里,![](img/f9d82ccb-5cc8-4e13-aee3-09e4de688a27.png)被称为**优势函数** ![](img/9431ca65-6206-44c7-960b-d75003b7db7f.png)。 因此,策略梯度公式变为:
在这里,`Q[π[θ]](s, a) - A[π[θ]](s)`被称为**优势函数**`A[π[θ]](s, a)`。 因此,策略梯度公式变为:
![](img/5b410fc8-1d5b-4a36-9250-730d1a651b86.png)
......@@ -387,11 +389,11 @@ end for
| 上,上,下,下,下,下,上 | 输 | 坏 |
| 下,上,上,下,上,上 | 赢 | 好 |
因此,我们能够创建示例数据,在这些示例中,我们认为赢得的案例是该操作的正确标签。 因此,我们将增加这些动作的对数概率,即![](img/9870b991-5c5f-4c6f-9154-14acf670dbc1.png),并且丢失每个动作的情况将被视为错误标签。 因此,在这些情况下,我们将减少这些操作的对数概率。
因此,我们能够创建示例数据,在这些示例中,我们认为赢得的案例是该操作的正确标签。 因此,我们将增加这些动作的对数概率,即`log p(y[i], x[i])`,并且丢失每个动作的情况将被视为错误标签。 因此,在这些情况下,我们将减少这些操作的对数概率。
因此,在收集了一批轨迹之后,我们将最大化优势与对数概率的乘积,即![](img/33fcf07a-587f-4876-a81d-6d77f467c7f7.png)
因此,在收集了一批轨迹之后,我们将最大化优势与对数概率的乘积,即`Σ[i] A[i] x log p(y[i], x[i])`
在此,![](img/67380edd-b86f-448f-a76c-9ac522a1c13b.png)是与状态操作对关联的优势。 优势是一个标量,它量化了操作最终的效果。 如果我们想在将来鼓励给定的行动,则![](img/33f8b677-10bd-421d-aa20-94676af257a6.png)会很高,而如果我们想阻止该行动,则![](img/33f8b677-10bd-421d-aa20-94676af257a6.png)会很低。 正优势使该状态的将来更有可能发生该行为,而负优势使该状态的将来不太可能发生该行为。
在此,`A[i]`是与状态操作对关联的优势。 优势是一个标量,它量化了操作最终的效果。 如果我们想在将来鼓励给定的行动,则`A[i]`会很高,而如果我们想阻止该行动,则`A[i]`会很低。 正优势使该状态的将来更有可能发生该行为,而负优势使该状态的将来不太可能发生该行为。
首先,我们将导入所需的重要依赖项,如下所示:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册