5

在尝试将Episodic Semi-gradient Sarsa with神经网络实现为逼近器时,我想知道如何根据当前学习的网络权重选择最佳动作。如果动作空间是离散的,我可以只计算当前状态下不同动作的估计值,然后选择给出最大值的那个。但这似乎不是解决问题的最佳方式。此外,如果动作空间可以是连续的(例如自动驾驶汽车的加速),它就不起作用。

所以,基本上我想知道如何解决Choose A' as a function of q(S', , w)萨顿这个伪代码中的第 10 行: 在此处输入图像描述

这些问题通常是如何解决的?有人可以推荐这个算法的一个很好的例子Keras吗?

编辑:使用网络作为逼近器时是否需要修改伪代码?那么,我是否只是简单地最小化MSE了网络的预测和奖励R

4

1 回答 1

2

我想知道如何根据当前学习的网络权重选择最佳动作

您有三个基本选择:

  1. 多次运行网络,每次A' 的可能值与您正在考虑的S'值一致。取最大值作为预测的最优动作(概率为 1-ε,否则为 SARSA 中常用的 ε-greedy 策略随机选择)

  2. 设计网络以一次估计所有动作值 - 即拥有 | 一个(s) | 输出(可能填充以涵盖您需要过滤掉的“不可能”操作)。这将稍微改变梯度计算,应该将零梯度应用于最后一层非活动输出(即任何与( S,A)的A不匹配的东西)。同样,只需将最大有效输出作为估计的最佳动作。这比多次运行网络更有效。这也是最近 DQN Atari 游戏玩机器人和 AlphaGo 的策略网络使用的方法。

  3. 使用策略梯度方法,该方法通过使用样本来估计梯度来改进策略估计器。您可以查看Sutton 和 Barto 的第二版强化学习:简介的第 13 章了解更多详细信息。当存在大量可能的动作并且可以处理连续动作空间时,策略梯度方法变得很有吸引力(通过估计最佳策略的分布函数 - 例如选择正态分布的均值和标准差,您可以从中采样采取行动)。您还可以在actor-critic methods中将策略梯度与状态值方法结合起来,这可以比纯策略梯度方法更高效。

请注意,如果您的动作空间是连续的,则不必使用策略梯度方法,您可以量化动作。此外,在某些情况下,即使动作在理论上是连续的,您可能会发现最优策略仅涉及使用极值(经典山地车示例属于此类,唯一有用的动作是最大加速度和最大向后加速度)

使用网络作为逼近器时是否需要修改伪代码?那么,我是否只是最小化了网络预测的 MSE 和奖励R

不。伪代码中没有单独的损失函数,例如您在监督学习中看到的 MSE。误差项(通常称为 TD 误差)由方括号中的部分给出,并达到类似的效果。从字面上看,术语 ∇<em>q(S,A, w )(很抱歉缺少帽子,SO 上没有 LaTex)是指估计器本身的梯度,而不是任何损失函数的梯度。

于 2017-07-29T16:38:13.253 回答