我们之前章节介绍的值函数强化学习算法都是基于值函数是确定固定值的,在这种情况下,依据Bellman方程进行更新最终达到最优解,但事实上,这种建模方式是不够合理的,单纯利用期望进行迭代损失了Q作为分布的信息,于是DeepMind从值函数的分布出发建立了新的模型,并最终得到一个表现相当优异的算法:C51
原本的Bellman Equation 更新为
Q(x,a)=ER(x,a)+γEQ(x′,A′)Q(x,a) = E R(x,a) + \gamma E Q(x',A')Q(x,a)=ER(x,a)+γEQ(x′,A′)
状态值函数Q(x,a)Q(x,a)Q(x,a)是一个单点值函数,表示x状态下执行a动作的累计回报(期望)
去掉期望后,得到的就是一个关于随机变量的函数关系:
Z(x,a)=R(x,a)+γZ(X′,A′)Z(x,a) = R(x,a) + \gamma Z(X',A')Z(x,a)=R(x,a)+γZ(X′,A′)
这里的随机变量Z(x,a)Z(x,a)Z(x,a) 是在x状态下执行a动作之后的回报形成的随机变量。注意它是具有概率分布的。
换而言之,状态值函数的分布满足(1)式。
值分布有一些缺点,但是DeepMind认为它能使算法更stable。接下来我们慢慢介绍值分布Bellman方程及其优缺点。
在这里我们需要重新回顾Bellman方程:
Qπ(x,a)=ER(x,a)+γEp,πQπQ^{\pi}(x,a) = E R(x,a) + \gamma E_{p,\pi} Q^{\pi}Qπ(x,a)=ER(x,a)+γEp,πQπ
Q∗(x,a)=ER(x,a)+γEpmaxa′∈AQ∗(x′,a′) Q^*(x,a) = ER(x,a) + \gamma E_p max_{a'\in A} Q^*(x',a')Q∗(x,a)=ER(x,a)+