Policy-Based Reinforcement Learning

Policy-based Approach

policy-based 强化学习通常是要学习一个actor, actor可以用\(\pi_\theta (S)\) 来确定。如果我们用actor来玩游戏,那么每一局可以看成是一个操作序列\(\tau=\{s_1, a_1, r_1, s_2, a_2, r_2, \dots, s_T, a_T, r_T\}\)

其中\(s_i\) 表示状态,\(a_i\)表示action,\(r_i\)表示在\(s_i\)的状态下采取\(a_i\)动作可以获得的奖励。与普通的深度学习不一样,强化学习需要至少完成一局游戏后才会进行更新,也就是说强化学习看重的是整个局的最后的奖励。如果每走一步就更新,那么整个模型就没有全局观。

玩一局游戏,最终的得分是

\[R_\theta = \sum_{t=1}^Tr_t \]

我们用\(\bar{R_\theta}\)来表示期望的奖励,那么我们的目的就是使得这个期望奖励最大化。其中

\[\bar{R_\theta}=\sum_\tau R(\tau)P(\tau|\theta)\approx \dfrac{1}{N}\sum_{n=1}^NR(\tau^n) \]

当采样的数足够大的时候,右边就会与左边无限逼近。类似于抛质地均匀的硬币,当抛的次数足够多的时候,正反面的比例接近\(1:1\)

现在目标有了,我们要做的就是找出最大化\(\bar{R_\theta}\)\(\theta\)

\[\theta^* = \arg\max_\theta\sum_\tau R(\tau)P(\tau|\theta) \]

梯度上升来一发?

\[\bigtriangledown\bar{R_\theta}=\sum_{\tau}R(\tau)\bigtriangledown P(\tau|\theta) \]

因为奖励不是由\(\theta\)决定的,所以要做的是对\(P(\tau|\theta)\)进行梯度计算。

这里要引入一个公式

\[\dfrac{\log (f(x))}{dx} = \dfrac{df(x)}{f(x)dx} \]

那么

\[\bigtriangledown\bar{R_\theta}=\sum_{\tau}R(\tau)\bigtriangledown P(\tau|\theta)=\sum_\tau R(\tau)P(\tau|\theta)\dfrac{\bigtriangledown P(\tau|\theta)}{P(\tau|\theta)}=\sum_\tau R(\tau)P(\tau|\theta)\bigtriangledown\log P(\tau|\theta) \]

\[\bigtriangledown\bar{R_\theta}\approx\dfrac{1}{N}\sum_{n=1}^NR(\tau^n)\bigtriangledown\log P(\tau^n|\theta) \]

那么\(P(\tau|\theta)\)怎么计算?

\[P(\tau|\theta)=p(s_1)p(a_1|s_1,\theta)p(r_1,s_2|s_1,a_1)p(a_2|s_2,\theta)p(r_2,s_3|s_2, a_2)\dots \]

\[P(\tau|\theta)=p(s_1)\prod_{t=1}^Tp(a_t|s_t,\theta)p(r_t, s_{t+1}|s_t,a_t) \]

所以由

\[\bigtriangledown\log P(\tau|\theta) = \sum_{t=1}^T\bigtriangledown \log p(a_t|s_t,\theta) \]

最后有

\[\bigtriangledown\bar{R_\theta}\approx\dfrac{1}{N}\sum_{n=1}^NR(\tau^n)\sum_{t=1}^{T_n}\bigtriangledown \log p(a_t|s_t,\theta) \]

至于为什么最后要取log,因为取了log,本质上\(\dfrac{dp(a_t|s_t,\theta)}{p(a_t|s_t,\theta)}\),这样就相当于有了一个归一化,整个期望的结果,不会由那些出现很频繁的但是奖励比较低的骚操作所主导(出现越频繁,分母越大)。

参考

  1. 台大李宏毅老师的DL presentation
posted @ 2018-04-08 09:45  狂徒归来  阅读(977)  评论(0编辑  收藏  举报