dueling network
-
最优优势函数:
\[A^*(s,a) = Q^*(s,a) - V^*(s) \]其表示的含义是在状态s下动作\(a\)相对于最优状态价值的优势。
由于\(V^*(s,a) = \mathop {max}\limits_aQ^*(s,a)\),故\(A^*(s,a) <= 0\),即\(\mathop {max}\limits_aA^*(s,a) = 0\)。
对最优优势函数稍作变形,得:
\[Q^*(s,a) = V^*(s) + A^*(s,a) - \mathop {max} \limits_a A^*(s,a) \]既然\(\mathop {max}\limits_aA^*(s,a) = 0\),为什么要加上呢?原因见下。
-
使用一个优势神经网络\(A(s,a;w^A)\)来近似优势函数\(A^*(s,a)\),神经网络的结构和DQN是一样的。
-
再使用一个状态价值神经网络\(V(s;w^V)\)来近似最优状态价值函数\(V^*(s)\),其结构的卷积层可以和\(A(s,a;w^A)\)共享;
-
这样,动作价值可以dueling network被近似为:
\[Q(s,a;w^V,w^A) = V(s;w^V) + A^*(s,a;w^A) - \mathop{max}\limits_a A(s,a;w^A) \] -
dueling network包含两个子结构,优势函数网络输出一个向量表示每个动作的优势值;状态价值网络输出一个标量得到状态价值。使用优势值向量的每个值加上状态价值再减去最大的优势值得到一个动作价值向量,向量中最大值就是最优动作价值。
-
之所以在公式中要减去最大动作优势值,是因为使用两个网络来近似动作价值函数无法保证一致性,即V和A的值不具备唯一性,导致两个网络训练过程中产生波动。在减去最后一项之后V和A就不能随意变化了,否则将导致Q的偏离。
-
在实际使用中,往往是减去\(\mathop{mean}\limits_a A*(s,a;s^A)\)效果更好,但没有理论依据。