1、背景知识
在前文系列博客第二篇中讲解了DQN(深度强化学习DQN原理),可以说它是神经网络在强化学习中取得的重大突破,也为强化学习的发展提供了一个方向和基础,Sliver等人将其应用在Atari游戏中取得了重大突破, 后来大批量的论文均采用了DQN的思想,同时提出了更多的但是该算法有以下缺点:
Atari 游戏所需的动作是离散的,且属于低维(只有少数几个动作),但现实生活中很多问题都是连续的,且维度比较高,比如机器人控制(多个自由度)、汽车方向盘转向角度,油门大小、天气预报推荐指数等。虽然可以对连续性高维度的动作做离散型的处理,但是对于一个经过离散处理的大状态空间,使用DQN训练仍然是仍然是一个比较棘手的问题,因为DQN算法的核心思想是利用随机策略进行探索,对于高维度的来说,第一个问题是:模型很难收敛,第二个问题是需要在探索和利用之间进行协调。
因此用DQN解决高维度连续状态空间的任务变得非常的困难。为了解决该问题,David Sliver在2014年ICML大会论文中提出了确定性策略梯度((Deterministic Policy Gradient Algorithms)), 是的,这就是福音!下面先从DPG算法开始,然后再说Deep DPG(DDPG)
1、确定性策略梯度(Deterministic policy gradient )
首先解决一个强化学习问题,我们想到的就是累计折扣奖励的定义,即状态满足 ρ π \rho^{\pi} ρπ 分布上的累计奖励,如下:
∇ θ J ( π θ ) = ∫ S ρ π ( s ) ∫ A π θ ( a ∣ s ) r ( s , a ) d a d s = E s ∼ ρ π , a ∼ π θ [ r ( s , a ) ] \nabla_{\theta}J(\pi_{\theta}) = \int_{S}\rho^{\pi}(s) \int_{A}\pi_{\theta}(a|s)r(s, a) dads \\ =E_{s\sim \rho^{\pi},a\sim \pi_{\theta}}[r(s, a)] ∇θJ(πθ)=∫Sρπ(s)∫Aπθ(a∣s)r(s,a)dads=Es∼ρπ,a∼πθ[r(s,a)]
那么什么是策略梯度呢?策略梯度就是沿着使目标函数变大的方向调整策略的参数,它被定义为:
∇ θ J ( π θ ) = ∫ S ρ π ( s ) ∫ A ∇ θ π θ ( a ∣ s ) Q π ( s , a ) d a d s = E s ∼ ρ π , a ∼ π θ [ ∇ θ log π θ ( a ∣ s ) Q π ( s , a ) ] \nabla_{\theta}J(\pi_{\theta}) = \int_{S}\rho^{\pi}(s) \int_{A}\nabla_{\theta}\pi_{\theta}(a|s)Q^{\pi}(s, a) dads \\ = E_{s\sim \rho^{\pi},a\sim \pi_{\theta}}[\nabla_{\theta} \log \pi_{\theta}(a|s)Q^{\pi}(s, a)] ∇θJ(πθ)=∫Sρπ(s)∫A∇θπθ(a∣s)Qπ(s,a)dads=Es∼ρπ,a∼πθ[∇θlogπθ(a∣s)Qπ(s