近期在课堂上汇报了DDPG这个算法,结合自己的ppt总结一下这个算法。
DDPG是一种深度确定性的策略梯度算法,它是为了解决连续动作控制问题而提出的算法。以前学习的Q-learning算法、Sarsa算法以及DQN算法针对的动作空间都是离散的,DDPG就是对DQN算法的扩展,主要就是让DQN能够解决连续动作控制的问题而提出的。从Q-learning到DQN,只是将状态动作的评估函数从离散空间用神经网络映射到了连续空间,没有解决动作离散这个问题,而DDPG解决了这个问题。
DDPG中最重要的就是Deterministic(确定性)这个词,确定性指的是连续动作输出的是一个具体的值。当动作是离散时,策略函数依据最大化长期收益这一目标,输出每个动作发生的概率大小;而当动作连续时,在追求最大化长期收益目标下,输出的只能是一个具体的数值,代表一个具体的动作,由此就变成了一个确定性的策略。
DDPG可以简单的看成是DQN算法加上Actor-Critic框架,DDPG算法中所使用的AC框架是基于动作价值函数Q的框架。Actor学习策略函数
,Critic学习动作价值函数Q;上图中的学习思路看着很绕,但是其实很好理解,举一个容易理解的比喻:Actor相当于一个运动员,Critic相当于一个裁判;运动员Actor要做动作,运动员肯定是想要动作做得越来越好,从而提高自己的技术,裁判给运动员打分,运动员根据这个打分来改进自己的动作,得到更高的分数,从而达到改进自己技术的目的;裁判Critic也要提高自己,让自己的打分越来越精准,这样才能让运动员的技术也越来越高,Critic是靠环境给的奖励reward来改进自己提高自己的水平。
前面提到DDPG是对DQN算法的扩展,DDPG针对上图中的几点进行了改进。
第一点:针对样本独立同分布的问题,DDPG采用了和DQN算法中一样的一个技巧:Replay buffer。
第二点:为了让学习过程更稳定,借鉴了DQN中的fixed-target思想,但是和DQN中的并不完全一样,DDPG采用的是一种soft的target更新方式。
第三点:因为DDPG是确定性的策略,输出的action对环境探索不充分,所以加入一个随机噪声,与环境进行交互,让策略的探索更加充分。
算法主要分为初始化、交互、更新三个部分。
首先初始化,因为是AC框架+DQN,所以一共有四个网络;一个Critic网络Q以及对应的target网络
,一个Actor网络
以及对应的target网络
,再初始化一个Replay buffer。
针对每个episode,加入噪声与环境进行交互,然后把得到的数据存入Replay buffer中。
更新时,从buffer中采样出一个mini-batch,然后依次更新Critic和Actor网络以及他们对应的target网络,循环每一个episode,直到算法结束。