纯价值的DQN算法和纯策略的reinforce相比,前者利用时序差分的思想逐步更新最优的Q,间接隐含推导最优策略(策略选择使Q最大的动作)。
优点是1、可以逐步微调策略(不需要等一条轨迹走完)
2、离线策略样本利用率高。
缺点:策略是隐式的(由 Q 值间接定义),无法直接输出动作的概率分布,只能通过 ε-贪心等启发式方法进行探索和采样。
纯策略的reinforce则是直接利用策略估值梯度来更新策略。缺点是:
1、必须等提条轨迹走完才可以更新策略。
2、在线策略,不可用先前的交互数据迭代。
我们可以思考一下为什么纯价值是离线策略,可以利用历史数据;而纯策略是在线策略,不可以利用历史数据?纯价值方法的目标是找到最优 Q 函数,进而隐式地导出最优策略。它不直接维护一个策略网络,而是通过 Q 值的改进间接优化策略,因此采用不同策略得到的数据只要是好的都可以优化价值函数。而纯策略不同,它评估的是一个策略的价值,用不同策略得出的数据本身就无法参与评估。后续提到的TRPO 算法/PPO 算法本质上就是一个局限优化范围的策略算法,因此肯定是在线策略。而Actor-Critic 算法中的critic函数并没有参与策略梯度计算,只是用Q给了一个权重,因此仍然是一个策略算法,因此是在线的。而DDPG算法中的critic函数则是直接决定了梯度的更新方向,因此可以认为是价值算法范畴,因此是离线的。
3、直接利用策略梯度更新可能会导致网络在初期直接跌入谷底即得到一个超级差的策略,而策略更新必须从这个超级差的策略基础上迭代。这就是前面博客提到的小概率事件 + 参数空间小变动 → 策略跳崖这个事件。REINFORCE用一条轨迹的数据来估计策略梯度,这条轨迹是从旧策略采样出来的,只能反映旧策略的“局部信息”。当这条轨迹中偶然出现了小概率事件 + 高回报的组合,旧策略视角下的梯度就会给出一个“应该大幅提高这个动作概率”的建议。但这个建议是否在新策略视角下仍然合理?REINFORCE完全没有考虑这个问题。也即:缺乏一个评估策略是否能在较大概率下得到提升的机制。
如何解决这一个问题给出了两种解决方案:
- 既然缺乏一个评估策略是否能在较大概率下得到提升的机制,一种解决思路就是TRPO 算法/PPO 算法划定信任区域在小范围内尝试。TRPO通过KL散度约束,PPO通过剪切操作,都是为了防止新策略偏离旧策略太远。即使旧策略视角下的梯度给出了一个“冒险”的建议,信任区域也会限制更新的步长,防止策略跳崖。
- 第二种思路就是完善这个评价机制,这就是Actor-Critic 算法/DDPG 算法这种用Q来对新策略的提升可能性上一层保险。Actor-Critic/DDPG引入Critic(价值函数)来评估动作的好坏。Critic是通过大量历史数据(经验回放)训练出来的,它提供的评估比单条轨迹的回报更稳定、更全面。这就像给Actor的更新上了一层“保险”——即使某条轨迹偶然出现了小概率事件 + 高回报,Critic也会给出一个相对保守的评估,不会让策略参数被带偏太远。当然虽然都利用了critic网络,但二者的解决思路有所不同。基础的Actor-Critic 算法利用Q来给策略梯度加权重,这里的优势函数A(s,a) 来自Critic(即Q值或TD误差)。但它只是一个标量权重——它告诉Actor“这次动作有多好”,但它不参与梯度计算。DDPG则是将Q放入策略梯度的链条里,这是一种直接的强绑定,Actor的更新方向完全由Critic的Q值梯度决定。为什么DDPG收敛更快? 正是因为Q直接参与了Actor的梯度计算。基础Actor-Critic中,Actor只能通过“试错-评分-调整”的循环来逐步改进,每次调整的方向由对数概率梯度决定,Q只告诉它“这次好不好”。而DDPG中,Q直接告诉Actor“往这个方向改”,Actor不需要自己去猜测方向,只需要按照Q的指引去执行。这种“直接指导”让DDPG能更高效地利用Q的信息,因此收敛更快。但这种“强行绑定”也有代价:DDPG对Q值估计的准确性要求更高。如果Q值估计有偏差,Actor的更新方向就会被带偏,这也是DDPG需要目标网络、软更新等稳定技巧的原因。