RL 的策略梯度(REINFORCE)管道澄清

数据挖掘 强化学习 政策梯度
2021-09-15 04:58:06

我尝试构建一个策略梯度 RL 机器,让我们看看 REINFORCE 的方程,它通过采用梯度进行上升来更新模型参数(如果符号有点不合常规,我深表歉意):

ω=ω+αωlog π(At|St)Vt

我不确定的问题如下:

  1. 我是否在每个时间步计算梯度值 t (如以 SGD 方式)或在情节的所有时间步长上平均梯度是更好的选择?
  2. 我是否只关心获取所选动作概率输出的梯度值(在离散情况下忽略其他动作的输出)?换句话说,我是否考虑Vt 非选定动作的术语为 0,这使得梯度值也等于 0?
  3. 在离散情况下,交叉熵(损失)定义为:

    H(p,q)=xP(x)logQ(x)

    来源:维基百科

    这是否意味着如果我替换标签(表示为 P(x)) 与 Vt 在我的神经网络训练中,术语(仅对选定动作非零),我将获得完全满足 REINFORCE 定义的对数损失的正确梯度值?

1个回答

有关符号和可视化,请查看此出色的教程Policy Gradients

对于您的问题:

  1. 第二个是正确的。在 PG 中,我们尝试最大化预期奖励。为了做到这一点,我们用参数化策略下轨迹样本的平均奖励来近似期望。换句话说,在剧集中的一段时间内对动作进行采样并获得各自的奖励。计算从最后一步回到第一步的贴现回报(这是你的在你的符号中,你通常会发现它R是贴现回报)。将返回值与 logits 和 sum 相乘。看一下 ( 1 ) 的幻灯片 8 和 9,看看 REINFORCE 是如何与这个代码示例一起实现的(第 59-75 行)。

  2. 正如您可能已经意识到的那样,不。它是一集(多个时间步)的回报,计算为您收集的所有奖励的折扣总和。即使你在最后得到 1 而在其他任何地方得到 0,奖励也会传播回第一步(手动操作很有帮助!)所以每个时间步的所有奖励都会转换为来自该状态和时间步的回报。

  3. 请看 ( 1 ) 的幻灯片 13。你的直觉是正确的。分类问题(交叉熵)乘以回报的最大似然方程等于策略梯度损失。如果您使用带有 REINFORCE 的简单神经网络和两个动作来执行任务,您会注意到向后传播的梯度与分类任务中的相同,但这里乘以它们各自的返回(第 69 2行)而不是类标签(0/1)。

对 3 的一点直觉:这符合 PG 方法,被视为无模型方法并将状态映射到动作。如果您使用聚类技术对网络最后一层的隐藏表示进行聚类(降维后),并根据网络选择的操作为数据点着色,您会发现这些表示自然地聚类为不同的组,具体取决于那个行动。在高层次上,您可以声明 REINFORCE 执行一种以奖励信号为标签的分类。

希望能帮助到你!