Neural network 基于神经网络的幕式半梯度Sarsa
在尝试使用神经网络作为近似器来实现幕式半梯度Sarsa时,我想知道如何根据当前学习到的网络权重选择最佳操作。如果动作空间是离散的,我可以计算当前状态下不同动作的估计值,然后选择一个给出最大值的动作。但这似乎不是解决问题的最佳方式。此外,如果动作空间是连续的(比如自动驾驶汽车的加速度),它就不起作用 因此,基本上我想知道如何解决第10行Neural network 基于神经网络的幕式半梯度Sarsa,neural-network,reinforcement-learning,sarsa,Neural Network,Reinforcement Learning,Sarsa,在尝试使用神经网络作为近似器来实现幕式半梯度Sarsa时,我想知道如何根据当前学习到的网络权重选择最佳操作。如果动作空间是离散的,我可以计算当前状态下不同动作的估计值,然后选择一个给出最大值的动作。但这似乎不是解决问题的最佳方式。此外,如果动作空间是连续的(比如自动驾驶汽车的加速度),它就不起作用 因此,基本上我想知道如何解决第10行选择A'作为q(S',w)的函数,在萨顿的伪代码中: 这些问题通常是如何解决的?你能推荐一个使用Keras的这种算法的好例子吗 编辑:当使用网络作为近似器时,是否
选择A'作为q(S',w)
的函数,在萨顿的伪代码中:
这些问题通常是如何解决的?你能推荐一个使用Keras
的这种算法的好例子吗
编辑:当使用网络作为近似器时,是否需要修改伪代码?例如,我只是最小化网络预测的MSE
和报酬R
我想知道如何根据当前学习到的网络权重选择最佳行动
您有三个基本选择:
R
不。伪代码中没有单独的损失函数,例如在监督学习中使用的MSE。误差项(通常称为TD误差)由方括号中的零件给出,并达到类似效果。字面意思是∇q(S,A,w)(很抱歉没有帽子,上面没有乳胶)表示估计器本身的梯度,而不是任何损失函数的梯度。好的,谢谢。我决定采用选项1。并尝试使用
Keras
实现此问题。但我仍然不知道如何更新权重。我试图这样解决问题,但遗憾的是,经纪人没有真正学到任何东西。你能告诉我关于这一步的更多细节吗?我不太熟悉合并方法在Keras中的工作原理,但我假设你最终创建了一个小批量3,用于在选择操作时预测,然后创建一个小批量1,用于更新。我有一个问题:output\u layer=Dense(1,activation=“tanh”)(x)
-我不认为tanh
涵盖了全部奖励范围,在执行此任务时,可能会获得-300等奖励。您似乎已经修改了培训目标(使用TD目标,而不是TD错误),但我认为这是一个正确的修改,可以简单地使用Keras Optimizer。@FlashTek:我认为除了tanh问题之外,您还差一点,请参阅gist.github.com/neilslater/28004397a544f97b2ff03d25d4ddae52,我正在处理该问题(这是一个回归问题,所以通常你希望最后一层是线性的)。我对模型做了一些简化,因为它可能不稳定,还添加了“backstop”将速度设置为零在MountainCar中是正常的。@FlashTek:我说得太快了-我发布的实现似乎不稳定-它得到了一些长度为450的初始片段,但随后开始发散。我不确定原因。@FlashTek:我尝试将体验重播添加到您的代码中,这是一个显著的改进。它仍然不如fast与Sutton书中的线性平铺特征和半梯度SARSA(λ)一样,但它似乎收敛到了一个成功的策略。我更新了要点:-也许它可以在数组操作方面进行更有效的编码。