Policy Gradient算法
数学理论
- 不像value-based的方法(Q learning, Sarsa),与其不同的是他要输出的不是action的value,而是具体的那一个action,这样policy gradient就跳过了value这个阶段
- value-based输出的不是连续值,然后再选择最大的action
- policy gradient可以在一个连续分布上选取action
- 这个方法在方反向传播的时候是没有误差的,不过它确实在做一种反向传播
- 但是这个反向传播的目的是让这一次被选中的行为在下一次更有可能发生
(一下的 π ( s , a ) 和 π ( a ∣ s ) \pi(s,a)和\pi(a|s) π(s,a)和π(a∣s)一个道理,可以直接计算)
- J表示当前单步MDP的状态的最优值,R表示这一动作的奖励
J ( θ ) = E π [ R ( s , a ) ] 按 照 之 前 那 个 贝 尔 曼 方 程 展 开 = ∑ s d ( s ) ∑ a π θ ( s , a ) R ( s , a ) d ( s ) 就 是 之 前 的 P J(\theta)=E_{\pi}[R(s,a)]\\ 按照之前那个贝尔曼方程展开\\ =\sum_{s}d(s)\sum_{a}\pi_{\theta}(s,a)R(s,a)\qquad d(s)就是之前的P J(θ)=Eπ[R(s,a)]按照之前那个贝尔曼方程展开=s∑d(s)a∑πθ(s,a)R(s,a)d(s)就是之前的P
- 求梯度
∇ θ J ( θ ) = ∇ θ ∑ s d ( s ) ∑ a π θ ( s , a ) R ( s , a ) = ∑ s d ( s ) ∑ a ∇ θ π θ ( s , a ) R ( s , a ) \nabla_{\theta}J(\theta)=\nabla_{\theta}\sum_{s}d(s)\sum_{a}\pi_{\theta}(s,a)R(s,a)\\ =\sum_{s}d(s)\sum_{a}\nabla_{\theta}\pi_{\theta}(s,a)R(s,a) ∇θJ(θ)=∇θs∑d(s)a∑πθ(s,a)R(s,a)=s∑d(s)a∑∇θπθ(s,a)R(s,a)
- 然后我们想要得到概率 π \pi π的分布从而来采样,下面就有一个似然比的技巧(虽然不知道为什么叫似然比,但是这个就是一个积分技巧)
∇ θ π θ ( s , a ) = π θ ( s , a ) ∇ θ π θ ( s , a ) π θ ( s , a ) = π θ ( s , a ) ∇ θ log π θ ( s , a ) \nabla_{\theta}\pi_{\theta}(s,a)=\pi_{\theta}(s,a)\frac{\nabla_{\theta}\pi_{\theta}(s,a)}{\pi_{\theta}(s,a)}=\pi_{\theta}(s,a)\nabla_{\theta}\log \pi_{\theta}(s,a) ∇θπθ(s,a)=πθ(s,a)πθ(s,a)∇θπθ(s,a)=πθ(s,a)∇θlogπθ(s,a)
- s上面的式子就把概率提出来了,所以有
∇ θ J ( θ ) = ∑ s d ( s ) ∑ a π θ ( s , a ) ∇ θ log π θ ( s , a ) R ( s , a ) = E ( s , a ) ∼ π θ ( s , a ) [ ∇ θ log π θ ( s , a ) R ( s , a ) ] \nabla_{\theta}J(\theta)=\sum_{s}d(s)\sum_{a}\pi_{\theta}(s,a)\nabla_{\theta}\log \pi_{\theta}(s,a)R(s,a)\\= E_{(s,a)\sim \pi_{\theta}(s,a)}[\nabla_{\theta}\log \pi_{\theta}(s,a)R(s,a)] ∇θJ(θ)=s∑d(s)a∑πθ(s,a)∇θlogπθ(s,a)R(s,a)=E(s,a)∼πθ(s,a)[∇θlogπθ(s,a)R(s,a)]
- 然后将似然率的方式应用到多步MDPs上, q π ( s , a ) q_{\pi}(s,a) qπ(s,a)就是在整个流程中所有对应的(s,a)得到的reward
∇ θ J ( θ ) = E ( s , a ) ∼ π θ ( s , a ) [ ∇ θ log π θ ( s , a ) q π ( s , a ) ] \nabla_{\theta}J(\theta)= E_{(s,a)\sim \pi_{\theta}(s,a)}[\nabla_{\theta}\log \pi_{\theta}(s,a)q_{\pi}(s,a)] ∇θJ(θ)=E(s,a)∼πθ(s,a)[∇θlogπθ(s,a)qπ(s,a)]
蒙特卡洛梯度策略强化算法
看起来名字很高大上,其实就是对于上面的概率分布用采样的形式来得到
- 使用随机梯度上升的方法更新参数
- 使用策略梯度法,返回 v t v_t vt作为 q π ( s t , a t ) q_{\pi}(s_t,a_t) qπ(st,at)的无偏估计, v t v_t vt就是第t次的reward
带基数的trick
在采样的时候,可能有些action虽然效果好,但是没被采样到,所以要加个baseline
就是在算梯度的时候引入一个基准值,这样梯度正负性也就有了
b的取值最简单的就是取之前的平均值,每一步都会更新这个平均值