传统的 Q-learning 的动作空间是离散的,有限数目的,比如上下左右四个动作。但是很多场景下,动作都是连续的,比如方向盘的转动角度,机器臂的转动角度等。有三个方法解决:第一个方法是随机 sample N 个动作,看哪个能获得最大的 Q 值;第二个办法是梯度下降来解决优化问题,但是计算量会很大,并且容易陷入局部最优。
设计一个网络让优化问题变得简单,其实就是如何构建一个神经网络,又能输出动作,也能输出 Q 值,而且动作对应的 Q 值最大。
基本的 idea 就是引入 Advantage,也就是每一个动作在特定状态下的优劣。我们不是要选最优的动作吗?其实就是要选 Advantage 最大的动作。Q,A(Advantage)和 V(Value)的关系如下:
如果我们能够限制 A 小于等于 0,并且选择的动作对应的 A 为 0,那么此时选择的这个动作的 Q 值是最大的。要做到这点,一种简单的想法就是让:
并且 P 为正 ,这个时候当 a=x 即选择的动作时为 0。
A 的矩阵表示为:
其中 x 是状态,u 是动作, [公式] 是神经网络的输出动作。令 [公式] ,即:
即 [公式] ,要满足这个要求,P 必须为正定矩阵。作者构造了一个对角线元素都是正数的下三角阵 L,然后再利用 L 构造 P。
具体过程如下:
另外还有一种方法是使用 Actor-critic 方法:
参考文献:
https://www.bilibili.com/video/av24724071/?p=5
https://www.cnblogs.com/wangxiaocvpr/p/5664795.html
本文转载自 Alex-zhai 知乎账号。
原文链接:https://zhuanlan.zhihu.com/p/73309906
评论