本文为博主“声时刻”原创文章,未经博主允许不得转载。
联系方式:shenshikexmu@163.com
缘起
DDPG ,是Google Deepmind第一篇关于连续动作的深度加强学习论文(是否第一篇存疑)。DQN(Deep Q Network)生成的策略执行的动作是离散或者低维的,虽然在状态输入上可以是高维的观察状态。如在DQN2014 中,有效的动作在4到18个之间,而输入的状态是84×84×4的图片。相对于连续动作,DQN的动作空间太小了,原文的to to simply,使得DQN瞬间沦为香港记者,呵呵。文中举的例子,是7个自由度(DOF)的机械臂,只是粗糙的控制,每一个DOF只有三种动作状态a i ∈ { k , 0 , k } a_i\in\{-k,0,k\} a i ∈ { k , 0 , k } ,那么整个机械臂的运动状态就有3 7 = 2187 3^7=2187 3 7 = 2 1 8 7 。这样的动作空间,DQN在学习中很难一一搜索,更何况一个DOF很难只有三种动作状态。再加上,简单离散的动作空间中的动作是不需要根据运动空间的结构进行动作取舍,而在复杂动作操作时这样的取舍是基本的(Additionally, naive discretization of action spaces needlessly throws away information about the structure of the action domain, which may be essential for solving many problems)。发现这句话理解起来有点难,我的理解是(不保证对),由于DQN运动状态空间比较少,所有的运动状态在策略学习时都可以遍历,取舍的问题直接由策略决定,但连续动作的控制就不行了,不可能每个动作都遍历,形成策略,策略决定动作取舍。
于是需要新的深度强化学习方法,来解决连续动作空间的策略问题。
背景知识
s t = ( x 1 , a 1 , . . . , a t 1 , x t ) s_t=(x_1,a_1,...,a_{t-1},x_t) s t = ( x 1 , a 1 , . . . , a t 1 , x t )
状态动作轨迹
π : S → P ( A ) \pi: S \rightarrow P(A) π : S → P ( A )
策略概率π \pi π ,π \pi π 首先是概率分布 ,这对理解强化学习很重要。不同的状态,所对应的不同动作出现的概率。也就是对于特定的S i S_i S i 状态,P ( A i ) P(A_i) P ( A i ) 是个概率分布,如在S i S_i S i 状态下,选择A 1 A_1 A 1 的动作概率是P ( A 1 ) P(A_1) P ( A 1 ) ,选择A 2 A_2 A 2 的动作概率是P ( A 2 ) P(A_2) P ( A 2 ) 。
p ( s t + 1 ∣ s t , a t ) p(s_{t+1}\mid s_t,a_t) p ( s t + 1 ∣ s t , a t )
状态转移概率,当前状态是s t s_t s t ,在此状态下完成a t a_t a t 动作,下一个状态变成s t + 1 s_{t+1} s t + 1 的概率。
r ( s t , a t ) r(s_t,a_t) r ( s t , a t )
回报函数,这里给出的r r r 值,可不是单独在s t s_t s t 状态下,完成a t a_t a t 的回报 (算法要求出的Q ( s t , a t ) Q(s_t,a_t) Q ( s t , a t ) 是单独在s t s_t s t 状态下,完成a t a_t a t 的回报),而是之前所有动作在当时特定状态下的回报的累加。也就是之前的动作对当前的r r r 值也是有贡献的。
R t = ∑ i = t T γ i t r ( s i , a i ) R_t=\sum_{i=t}^{T}\gamma^{i-t}r(s_i,a_i) R t = ∑ i = t T γ i t r ( s i , a i )
R t = γ 0 r ( s t , a t ) + γ 1 r ( s t + 1 , a t + 1 ) + . . . γ T t r ( s T , a T ) R_t=\gamma^{0}r(s_t,a_t)+\gamma^{1}r(s_{t+1},a_{t+1})+...\gamma^{T-t}r(s_T,a_T) R t = γ 0 r ( s t , a t ) + γ 1 r ( s t + 1 , a t + 1 ) + . . . γ T t r ( s T , a T )
折扣累计奖赏,这是在s t s_t s t 状态下,完成a t a_t a t 后,在接下来的T t T-t T t 步后,s t s_t s t 状态和动作a t a_t a t ,累加的奖赏。R t R_t R t 更接近 算法求出的Q ( s t , a t ) Q(s_t,a_t) Q ( s t , a t ) 。说是接近,在于Q ( s t , a t ) Q(s_t,a_t) Q ( s t , a t ) 更像是量子力学中的叠加态,它是概率分布的,R t R_t R t 更像是坍缩态,也就是你已经知道薛定谔的猫是死是活的结果。
J = E r i , s i E , a i π [ R 1 ] J=E_{r_i,s_i\sim{E},a_i\sim{\pi}}[R_1] J = E r i , s i E , a i π [ R 1 ]
首先这是个期望值,这是全篇论文理解的一个眼,这个公式理解了,论文思想理解80%了。里面包含s i E s_i\sim{E} s i E ,用周志华《机器学习》中p378中(16.8)的表示方式为P s i → s i + 1 a i P_{s_i \rightarrow s_{i+1}}^{a_i} P s i → s i + 1 a i ,在状态s i s_i s i 下,动作a i a_i a i 产生下一个状态为s i + 1 s_{i+1} s i + 1 的概率。a i π a_i\sim{\pi} a i π 为上面讲的策略概率。在DPG2014 第一个公式写得更容易理解:
J ( π θ ) = ∫ S ρ π ( s ) ∫ A π θ ( s , a ) r ( s , a ) d a d s = E s ρ π , a π θ [ r ( s , a ) ] J(\pi_\theta)=\int_{S}\rho^{\pi}(s)\int_A\pi_\theta(s,a)r(s,a)dads\\ \qquad =E_{s\sim{\rho^{\pi}},a\sim{\pi_{\theta}}}[r(s,a)] J ( π θ ) = ∫ S ρ π ( s ) ∫ A π θ ( s , a ) r ( s , a ) d a d s = E s ρ π , a π θ [ r ( s , a ) ]
两个公式是一样的,在概率策略π θ \pi_\theta π θ 下,所有的状态对应动作概率下回报的期望,这么说也很难理解吧,通俗一点,有点像原子核周围的电子云,原子核周围的电子并不像地球、火星之类有明确的轨道,其状态也是呈概率分布,J J J 相当于电子云带的能量。
$ Q^{\pi}(s_t,a_t)=E_{r_{i \ge t},s_i>t\sim{E},a_i>t\sim{\pi}}[R_t\mid s_t,a_t]\qquad(1) $
文中第一个标号的公式,也是期望值,类似前面的解释,再说一点,π \pi π 和E E E 都是很多动作或者状态的叠加,叠加的权值是概率。打符号开始差点打错了,是i ≥ t i \ge t i ≥ t ,而不是r i ≥ t r_i \ge t r i ≥ t 。也就是说i i i 是一个长的序列。在下面的公式中i i i 就只是下一步了。
$ Q^{\pi}(s_t,a_t)=E_{r_t ,s_{t+1}\sim{E}}[r(s_t,a_t)+\gamma E_{a_{t+1}\sim {\pi}}[Q^{\pi}(s_{t+1},a_{t+1})]]\qquad(2)$
Bellman等式,由上面的公式变形来的,也是期望值。有点像信号处理的Z变换(傅立叶变换是Z变换的特殊形式),把时域的信号转化成频域的信号。Q π ( s t , a t ) Q^{\pi}(s_t,a_t) Q π ( s t , a t ) 脱掉了长长的i i i ,只对应t + 1 t+1 t + 1 的时刻,注意这里是Q π ( s t , a t ) Q^{\pi}(s_t,a_t) Q π ( s t , a t ) 和Q π ( s t + 1 , a t + 1 ) Q^{\pi}(s_{t+1},a_{t+1}) Q π ( s t + 1 , a t + 1 ) 都是期望值 。
$ Q^{\mu}(s_t,a_t)=E_{r_t ,s_{t+1}\sim{E}}[r(s_t,a_t)+\gamma Q^{\mu}(s_{t+1},\mu(s_{t+1}))]\qquad(3)$
当策略概率π \pi π ,坍缩成目标策略μ \mu μ 时,( 2 ) (2) ( 2 ) 中的中括号期望变成了确定μ ( s t + 1 ) \mu(s_{t+1}) μ ( s t + 1 ) 对应的动作。但Q μ ( s t , a t ) Q^{\mu}(s_t,a_t) Q μ ( s t , a t ) 仍旧是个期望值,因为这样的式子P s i → s i + 1 a i P_{s_i \rightarrow s_{i+1}}^{a_i} P s i → s i + 1 a i ,同样状态s i s_i s i 下同样动作a i a_i a i 产生的结果并不是固定的。同样Q π ( s t + 1 , a t + 1 ) Q^{\pi}(s_{t+1},a_{t+1}) Q π ( s t + 1 , a t + 1 ) 也都是期望值。
L ( θ Q ) = E s t ρ β , a t β , r t E [ ( Q ( s t , a t ∣ θ Q ) y t ) 2 ] ( 4 ) L(\theta^Q)=E_{s_t\sim{\rho^\beta},a_t\sim{\beta},r_t\sim{E}}[(Q(s_t,a_t\mid\theta^Q)-y_t)^2]\qquad(4) L ( θ Q ) = E s t ρ β , a t β , r t E [ ( Q ( s t , a t ∣ θ Q ) y t ) 2 ] ( 4 )
其中
y t = r ( s t , a t ) + γ Q ( s t + 1 , μ ( s t + 1 ) ∣ θ Q ) ( 5 ) y_t=r(s_t,a_t)+\gamma Q(s_{t+1},\mu(s_{t+1})\mid \theta^Q) \qquad(5) y t = r ( s t , a t ) + γ Q ( s t + 1 , μ ( s t + 1 ) ∣ θ Q ) ( 5 )
其中
μ ( s ) = a r g m a x a Q ( s , a ) \mu(s)=arg max_aQ(s,a) μ ( s ) = a r g m a x a Q ( s , a ) 是贪心算法,选择期望最大回报的执行动作。由于算法采用“异策略“(off-policy),也就是被评估与被改进的不是同一个策略,被评估的策略是随机动作策略β \beta β 。
算法
算法利用了DQN2014 中的”行为-评价”方法(actor-critic),建立两个神经网络,一个行为函数网络(actor function)μ ( s ∣ θ μ ) \mu(s\mid\theta^{\mu}) μ ( s ∣ θ μ ) ,其中θ μ \theta^\mu θ μ 是其神经网络的参数;一个评价函数网络(critic)Q ( s , a ∣ θ Q ) Q(s,a\mid \theta^Q) Q ( s , a ∣ θ Q ) ,其中θ Q \theta^Q θ Q 是其神经网络参数。
算法在迭代的过程中,评价函数网络Q ( s , a ∣ θ Q ) Q(s,a\mid \theta^Q) Q ( s , a ∣ θ Q ) 通过bellman等式,也就是(4)(5),使得L ( θ Q ) L(\theta^Q) L ( θ Q ) 越来越小 ,这样Q ( s , a ∣ θ Q ) Q(s,a\mid \theta^Q) Q ( s , a ∣ θ Q ) 越来越接近实际值(对场景的建模越来越精准);与此同时,提供一种优化μ ( s ∣ θ μ ) \mu(s\mid\theta^{\mu}) μ ( s ∣ θ μ ) 方法,使得回报期望J J J 变得越来越大 。而J J J 的梯度函数,在θ Q \theta^Q θ Q 固定的情况下,只与μ ( s ∣ θ μ ) \mu(s\mid\theta^{\mu}) μ ( s ∣ θ μ ) 有关。
θ μ J ≈ E s t ρ β [ θ μ Q ( s , a ∣ θ Q ) ∣ s = s t , a = μ ( s t ∣ θ μ ) ] = E s t ρ β [ θ μ Q ( s , a ∣ θ Q ) ∣ s = s t , a = μ ( s t ) θ μ μ ( s ∣ θ μ ) ∣ s = s t ] ( 6 ) \nabla_{\theta^\mu}J\approx E_{s_t\sim{\rho^\beta}}[\nabla_{\theta^\mu}Q(s,a\mid \theta^Q)\mid _{s=s_t,a=\mu(s_t\mid {\theta^\mu})}]\\ \qquad =E_{s_t\sim{\rho^\beta}}[\nabla_{\theta^\mu}Q(s,a\mid \theta^Q)\mid _{s=s_t,a=\mu(s_t)}\nabla_{\theta^\mu}\mu(s\mid\theta^\mu)\mid _{s=s_t}] \qquad(6) θ μ J ≈ E s t ρ β [ θ μ Q ( s , a ∣ θ Q ) ∣ s = s t , a = μ ( s t ∣ θ μ ) ] = E s t ρ β [ θ μ Q ( s , a ∣ θ Q ) ∣ s = s t , a = μ ( s t ) θ μ μ ( s ∣ θ μ ) ∣ s = s t ] ( 6 )
一次迭代后的产生的新的μ ( s ∣ θ μ ) \mu(s\mid\theta^{\mu}) μ ( s ∣ θ μ ) ,将在探索过程发挥作用。
算法框架图
算法中J J J 函数只给了梯度,博主推测如下:
J ( θ μ ) ≈ 1 N ∑ i Q ( s i , a ∣ θ Q ) ∣ a = μ ( s i ) J(\theta^\mu)\approx\frac{1}{N}\sum\limits_{i}Q(s_i,a\mid \theta^Q)\mid_{a=\mu(s_i)} J ( θ μ ) ≈ N 1 i ∑ Q ( s i , a ∣ θ Q ) ∣ a = μ ( s i )