在尝试将Episodic Semi-gradient Sarsa with
神经网络作为近似值时,我想知道如何根据当前学习的网络权重选择最佳操作。如果动作空间是离散的,我可以计算当前状态中不同动作的估计值,并选择给出最大值的动作。但这似乎不是解决问题的最佳方法。此外,如果动作空间可以连续(例如自动驾驶汽车的加速度),它就不起作用。
所以,基本上我想知道如何在这个Sutton的伪代码中解决第10行Choose A' as a function of q(S', , w)
:
这些问题通常如何解决?可以使用Keras
推荐一个很好的算法示例吗?
编辑:使用网络作为近似值时,是否需要修改伪代码?那么,我只是最小化网络预测的MSE
和奖励R
?
答案 0 :(得分:2)
我想知道如何根据当前学习的网络权重选择最佳动作
您有三个基本选择:
多次运行网络,为 A'的每个可能值运行一次,以使用您正在考虑的 S'值。取最大值作为预测的最佳动作(概率为1-ε,否则随机选择SARSA中常用的ε-贪婪政策)
设计网络以一次估算所有动作值 - 即具有| A(s) |输出(可能填充以涵盖您需要过滤掉的“不可能”的操作)。这将稍微改变梯度计算,应该对最后一层非活动输出应用零梯度(即任何不匹配(S,A)的 A )。再次,只需将最大有效输出作为估计的最佳操作。这比多次运行网络更有效。这也是最近玩DQN Atari游戏机器人和AlphaGo政策网络的方法。
使用policy-gradient method,它通过使用样本来估算可改善策略估算器的渐变。您可以查看Sutton and Barto's current draft of Reinforcement Learning: An Introduction的第15章了解更多详情。当存在大量可能的行动并且可以处理连续的行动空间时(通过估计最优政策的分布函数 - 例如选择正态分布的均值和标准差,政策梯度方法变得具有吸引力,您可以从中采样)采取你的行动)。您还可以将策略渐变与actor-critic methods中的状态值方法结合起来,这可以是比纯策略渐变方法更有效的学习者。
请注意,如果您的操作空间是连续的,则不必使用策略渐变方法,您只需量化操作即可。此外,在某些情况下,即使行为在理论上是连续的,您可能会发现最优策略仅涉及使用极值(经典mountain car example属于此类别,唯一有用的操作是最大加速度和最大向后加速度)
使用网络作为近似值时,是否需要修改伪代码?那么,我只是最小化网络预测的MSE和奖励
R
?
没有。伪代码中没有单独的损失函数,例如您在监督学习中使用的MSE。误差项(通常称为TD误差)由方括号中的零件给出,并实现类似的效果。从字面上看,术语∇ q(S,A, w )(抱歉丢失帽子,SO上没有LaTex)意味着估算器本身的梯度 - 而不是任何梯度损失函数。