DDPG算法

#离散动作vs连续动作

离散动作与连续动作是相对的,离散可数,连续不可数;在离散场景下,输出几个动作,神经网络就输出几个概率值,用\pi _{\theta }\left ( a_{t} |s_{t}\right )来表示随机性策略;在连续场景下,会输出具体的浮点数,用\mu^{_{\theta }}\left ( s_{t} \right )表示确定性策略;

随机性策略:输入某一状态s,采取某一个action的可能性是有一个概率P的,根据概率随机抽取一个动作;

确定性策略:没有概率影响,神经网络参数固定,输入同样的state,必定输出同样的action;

要输出离散动作,加一层softmax层来确保所有的输出是动作概率,而且所有动作概率和为1;

要输出连续动作,一般可以在输出层加一层tanh,它的作用是把输出限制在【-1,1】之间;拿到输出后,根据实际动作的范围做一下缩放,再输出给环境。

#DDPG

在连续控制领域,深度确定性策略梯度(Deep Deterministic Policy Gradient)是比较经典的强化学习算法;

Deep:使用神经网络;Deterministic:表示DDPG输出的是一个确定性动作,用于连续动作的环境;Policy Gradient:表示使用策略网络,REINFORCE算法每隔一个episode更新一次,但DDPG网络是每个step更新一次policy网络;

DDPG是DQN的扩展版本,在DDPG训练中,借鉴了DQN的技巧:目标网络与经验回放;DDPG直接在DQN基础上加了一个策略网络直接输出动作值,其需要一边学习Q网络,一边学习策略网络;

#Twin Delayed DDPG

DDPG存在一些问题,其在超参数和其他类型的调整方面经常很敏感,常见问题是已经学习好的Q函数开始显著高于Q值,导致策略被破坏,因为它利用了Q函数中的误差;双延迟深度确定性策略梯度通过引入三个关键技巧来解决这个问题:

a.截断的双Q学习:通过最小化均方误差来同时学习两个Q-function;

b.延迟的策略更新:TD3算法以较低的频率更新动作网络,较高频率更新评价网络,通常每更新两次评价网络就更新一次策略;

c.目标策略平滑:TD3引入了smoothing的思想,TD3在目标动作中加入噪音,通过平滑Q沿动作的变化,使策略更难利用Q函数的误差;

你可能感兴趣的:(深度学习基础,算法,机器学习,python)