Policy-Based
有关于Policy-Based的基本概念,可以看上一章博客的的介绍
Policy Gradient是Policy-Based中的一种,还是以上一章博客的电子游戏举例,假设给定一个游戏画面,输入到network里面去,给出具体action的概率。但这是在一整局游戏里,遇到某个state时的流程。那么整个训练的过程是怎么样的呢?
θ \theta θ是Policy Gradient中模型的参数,给定一组模型参数它去玩n次游戏,一整把游戏的所有state、action和reward我们统称为 τ \tau τ。 τ \tau τ作为训练资料被收集起来训练一次模型,参数被update之后,再次去玩游戏,收集数据,之后更新模型。直至模型收敛为止。
在清楚了整个Policy Gradient的训练过程之后,我们再来探讨 ∇ l o g p ( a t n ∣ s t n , θ ) \nabla logp(a^n_t|s^n_t,\theta) ∇logp(atn∣stn,θ)这个函数代表什么。
我们假设现在要做的是一个分类问题,也即输入游戏画面,输出action分类,在做有监督训练的时候,我们需要给prediction对应的ground truth信息。那么要优化这个分类网络的话,其实就是在优化分类的cross entropy,最小化 − ∑ i = 1 3 y i ^ l o g y i -\sum_{i=1}^{3}\hat{y_i}logy_i −∑i=13yi^logyi,实际上就是在最大化 l o g y i logy_i logyi的值。
所以如果先不考虑 R ( τ n ) R(\tau^n) R(τn)将每一个state都输入到network里面,整个训练过程就可以被视作是分类问题。 ∇ l o g p ( a t n ∣ s t n , θ ) \nabla logp(a^n_t|s^n_t,\theta) ∇logp(atn∣stn,θ)这个式子,在 s t n s^n_t stn的情况下,采取 a t n a^n_t atn,会得到高分,所以我们希望出现这个情况的概率越大越好。
而乘上
R
(
τ
n
)
R(\tau^n)
R(τn)的话,其实就是将得到的Reward当作是一个系数,放大得到高分Reward的
τ
\tau
τ的概率。所以其实整个Policy Gradient并不是模型端有什么新的改进,甚至可以用之前常见的分类网络来做这个事情,它是一个强化学习的训练思路。这里也有一些Tips可以优化你的model。
Tip1 - Add baseline
刚刚说到 R ( τ n ) R(\tau^n) R(τn)会作为系数出现,它如果是也会分成2个情况,是正值就会使得 ∇ l o g p ( a t n ∣ s t n , θ ) \nabla logp(a^n_t|s^n_t,\theta) ∇logp(atn∣stn,θ)更大,是负值或者0值就使其更小。但在很多场景下,Reward的值都是正的,所以在Agent看来,你每一个action都是好的,都会增加其概率,在做完normalization之后,上升的少的相当于就是概率下降,上升的多的才会增加概率。但实际在优化过程中,Agent的sampling是有限次数的,当action a没有被采样到时,别的action概率都增加了,而各个action的 l o g p θ ( a t n ∣ s t n ) logp_\theta(a^n_t|s^n_t) logpθ(atn∣stn)相加需要等于0,所以变相就减少了action a被采样的概率。所以这个显然是有问题的。
现在我们引入一个baseline, R ( τ n ) − b R(\tau^n) - b R(τn)−b使得我们的Reward是有正有负的。这个 b b b值的选取也比较随意,但一般都是取 R ( τ ) R(\tau) R(τ)的期望值。
Tip2 - Assign Suitable Credit
同样还是这个 R ( τ n ) R(\tau^n) R(τn)的问题,我们在每一个episode的前面乘上这个系数,但其实细想就会发现,这其实并不合理。你没办法保证这个episode中每一个action都是好的。上图就是一个比较直观的例子,在 s a s_a sa的情况下采取 a 1 a_1 a1会得到+5分,但采取 a 2 a_2 a2会得到-5分,后面一整局两个episode都是采用一样的action,它们得到了不同的Reward。这种情况,如果在sample的情况足够的的时候,Agent可以通过足够的样本数,明白得到-7分是因为在 s a s_a sa时采取了 a 2 a_2 a2导致的。
不过sample总是有限的,为了解决这个问题。我们在计算Reward时,只考虑采取了这个action之后,得到reward的总和。在这个action发生之前得到的reward,不应该影响Agent的优化。
除此之外,我们再考虑一个情况,在一次episode中,某一次比较早期的action是比较关键的,它会影响最终的结果。但其实实际上,随着时间线的拉长,可能影响会越来越小,所以我们会在 R ( τ n ) R(\tau^n) R(τn)前面乘上一个小于1的衰减系数 γ \gamma γ,随着t的增大,前面的 γ \gamma γ系数就会被乘上越多次。实现一个权重递减的功能。
这里 R ( τ n ) − b R(\tau^n) - b R(τn)−b这一项,我们将其称为Advantage Function,数学形式是 A θ ( s t , a t ) A^\theta(s_t, a_t) Aθ(st,at),是指用 θ \theta θ这个model去和环境做互动。
当然Policy Gradient弊端也很明显,就是优化一次模型就得让它去玩一次游戏,所以其训练的周期也很长,训练数据不能重复利用。接下来的章节会继续介绍其他强化学习的方法。