强化学习(Reinforcement Learning)知识整理

马尔可夫决策过程(Markov Decision Processes,MDPs)

MDPs 简单说就是一个智能体(Agent)采取行动(Action)从而改变自己的状态(State)获得奖励(Reward)与环境(Environment)发生交互的循环过程。

MDP 的策略完全取决于当前状态(Only present matters),这也是它马尔可夫性质的体现。

其可以简单表示为:  M = <S, A, P_{s,a}, R>

基本概念

  1. s \in S: 有限状态 state 集合,s 表示某个特定状态
  2. a \in A: 有限动作 action 集合,a 表示某个特定动作
  3. Transition Model T(S, a, S') \sim P_r(s'|s, a): Transition Model, 根据当前状态 s 和动作 a 预测下一个状态 s’,这里的 P_r 表示从 s 采取行动 a 转移到 s’ 的概率
  4. Reward R(s, a) = E[R_{t+1}|s, a]:表示 agent 采取某个动作后的即时奖励,它还有 R(s, a, s’), R(s) 等表现形式,采用不同的形式,其意义略有不同
  5. Policy \pi(s) \to a: 根据当前 state 来产生 action,可表现为 a=\pi(s)\pi(a|s) = P[a|s],后者表示某种状态下执行某个动作的概率

回报(Return):

U(s_0\,s_1\,s_2\,\cdots) 与 折扣率(discount)\gamma\in[0,1]: U 代表执行一组 action 后所有状态累计的 reward 之和,但由于直接的 reward 相加在无限时间序列中会导致无偏向,而且会产生状态的无限循环。因此在这个 Utility 函数里引入 \gamma 折扣率这一概念,令往后的状态所反馈回来的 reward 乘上这个 discount 系数,这样意味着当下的 reward 比未来反馈的 reward 更重要,这也比较符合直觉。定义

\begin{align} U(s_0\,s_1\,s_2\,\cdots) &= \sum_{t=0}^{\infty}{\gamma^tR(s_t)} \quad 0\le\gamma<1 \\    &\le \sum_{t=0}^{\infty }{\gamma^tR_{max}} = \frac{R_{max}}{1-\gamma}    \end{align}

由于我们引入了 discount,可以看到我们把一个无限长度的问题转换成了一个拥有最大值上限的问题。

强化学习的目的是最大化长期未来奖励,即寻找最大的 U。(注:回报也作 G 表示)

基于回报(return),我们再引入两个函数

  • 状态价值函数:v(s)=E[U_t|S_t=s],意义为基于 t 时刻的状态 s 能获得的未来回报(return)的期望,加入动作选择策略后可表示为 v_{\pi}(s)=E_{\pi}[U_t|S_t=s](U_t=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{T-t-1}R_T)
  • 动作价值函数:q_{\pi}=E_{\pi}[U_t|S_t=s,\,A_t=a],意义为基于 t 时刻的状态 s,选择一个 action 后能获得的未来回报(return)的期望

价值函数用来衡量某一状态或动作-状态的优劣,即对智能体来说是否值得选择某一状态或在某一状态下执行某一动作。

MDP 求解

我们需要找到最优的策略使未来回报最大化,求解过程大致可分为两步,具体内容会在后面展开

  1. 预测:给定策略,评估相应的状态价值函数和状态-动作价值函数
  2. 行动:根据价值函数得到当前状态对应的最优动作

Bellman 期望方程

Bellman 方程的分析

为了更加了解方程中期望的具体形式,可以见下图,第一层的空心圆代表当前状态(state),向下连接的实心圆代表当前状态可以执行两个动作,第三层代表执行完某个动作后可能到达的状态 s’。

根据上图得出状态价值函数公式:v_{\pi}(s)=E[U_t|S_t=s]=\sum_{a\in A}\pi(a|s)\,\left( R_s^a+\gamma \sum_{s'\in S}P^a_{ss'}v_{\pi}(s')\right)

其中,P_{ss’}^a = P(S_{t+1}=s'|S_t=s, A_t=a)

上式中策略\pi是指给定状态 s 的情况下,动作 a 的概率分布,即\pi(a|s)=P(a|s)

我们将概率和转换为期望,上式等价于:

v_{\pi}(s) = E_{\pi}[R_s^a + \gamma v_{\pi}(S_{t+1}|S_t=s]

同理,我们可以得到动作价值函数的公式如下:

q_{\pi}(s,a)=E_{\pi}[R_{t+1}+\gamma q_{\pi}(S_{t+1},A_{t+1})|S_t=s,A_t=a]

如上图,Bellman 方程也可以表达成矩阵形式:v=R+\gamma Pv,可直接求出v=(I-\gamma P)^{-1}R;其复杂度为O(n^3),一般可通过动态规划、蒙特卡洛估计与 Temporal-Difference learning 求解。

状态价值函数和动作价值函数的关系


v_{\pi}(s) = \sum_{a \in A} \pi(a|s)q_{\pi}(s,a) = E[q_{\pi}(s,a)|S_t=s]
q_{\pi}(s,a) = R_s^a + \gamma \sum_{s'\in S}P_{ss'}^a \sum_{a' \in A}\pi(a'|s')q_{\pi}(s',a') = R_s^a+\gamma \sum_{s' \in S} P_{ss'}^a v_{\pi}(s')

最优方程

最优价值函数(optimal state-value function)

v_*(s)=\max_{\pi}{v_{\pi}(s)} \\q_*(s,a) = \max_{\pi}q_{\pi}(s,a)

其意义为所有策略下价值函数的最大值

Bellman最优方程


v_*(s)= \max_aq_*(s,a)= \max_a\left( R_s^a + \gamma\sum_{s'\in S}P_{ss'}^a v_*(s') \right) \\q_*(s,a)= R_s^a+\gamma \sum_{s'\in S}P_{ss'}^av_*(s') = R_s^a + \gamma \sum_{s’ \in S}P_{ss'}^a\max_{a’}q_*(s',a')

  • v 描述了处于一个状态的长期最优化价值,即在这个状态下考虑到所有可能发生的后续动作,并且都挑选最优的动作来执行的情况下,这个状态的价值
  • q 描述了处于一个状态并执行某个动作后所带来的长期最优价值,即在这个状态下执行某一特定动作后,考虑再之后所有可能处于的状态并且在这些状态下总是选取最优动作来执行所带来的长期价值

最优策略(Optimal Policy)

关于收敛性:(对策略定义一个偏序)

\pi \ge \pi' \,\mbox{if}\; v_{\pi}(s)\ge v_{\pi'}(s),\forall s

定理:

对于任意 MDP:

  • 总是存在一个最优策略\pi_*,它比其它任何策略都要好,或者至少一样好
  • 所有最优决策都达到最优值函数, v_{\pi_*}(s)=v_*(s)
  • 所有最优决策都达到最优行动值函数,q_{\pi_*}(s,a)=q_*(s,a)

最优策略可从最优状态价值函数或者最优动作价值函数得出:

\pi_*(a|s) = \begin{cases}1, & \mbox{if } a = \arg\max_{a \in A} q_*(s,a)\\0, & otherwise\end{cases}

求解 Bellman 最优方程

通过解 Bellman 最优性方程找一个最优策略需要以下条件:

    • 动态模型已知
    • 拥有足够的计算空间和时间
    • 系统满足 Markov 特性

所以我们一般采用近似的办法,很多强化学习方法一般也是研究如何近似求解 Bellman 方程,一般有下面几种(后文会做具体讲解):

    • Value Iteration
    • Policy Iteration
    • Q-learning
    • Sarsa

MDPs 还有下面几种扩展形式:

    • Infinite and continuous MDPs
    • Partially observable MDPs
    • Undiscounted, average reward MDPs

动态规划求解 MDPs 的 Planning

动态规划是一种通过把复杂问题划分为子问题,并对自问题进行求解,最后把子问题的解结合起来解决原问题的方法。「动态」是指问题由一系列的状态组成,而且状态能一步步地改变,「规划」即优化每一个子问题。因为MDP 的 Markov 特性,即某一时刻的子问题仅仅取决于上一时刻的子问题的 action,并且 Bellman 方程可以递归地切分子问题,所以我们可以采用动态规划来求解 Bellman 方程。

MDP 的问题主要分两类

  • Prediction 问题
    • 输入:MDP <S,A,P,R,\gamma> 和策略(policy)\pi
    • 输出:状态价值函数 v_{\pi}
  • Control 问题
    • 输入:MDP <S,A,P,R,\gamma>
    • 输出:最优状态价值函数v_*和最优策略\pi

解决也是分两种,见下文

Policy Iteration

步骤:

  • Iterative Policy Evaluation:
    • 基于当前的 Policy 计算出每个状态的 Value function
    • 同步更新:每次迭代更新所有的状态的 v

V_{k+1}(s)=\sum_{a\in A}\pi(a|s)\left( R_s^a+\gamma\sum_{s'\in S}P_{ss'}^av_k(s')\right)

    • 矩阵形式:\mathbf{v^{k+1}=R^{\pi}+\gamma P^{\pi}v^k}


    • 左边是第 k 次迭代每个 state 上状态价值函数的值,右边是通过贪心(greedy)算法找到策略
    • 计算实例:
      • k=2, -1.7 \approx -1.75 = 0.25*(-1+0) + 0.25*(-1-1) + 0.25*(-1-1) + 0.25*(-1-1)
      • k=3, -2.9 \approx -2.925 = -0.25*(-1-2) + 0.25*(-1-2) + 0.25*(-1-2) + 0.25*(-1-1.7)
  • Policy Improvement
    • 基于当前的状态价值函数(value function),用贪心算法找到最优策略

\pi'(s)=\arg\max_{a\in A} q_{\pi}(s,a)

    • v_{\pi}会一直迭代到收敛,具体证明如图:


    • 扩展
      • 事实上在大多数情况下 Policy evaluation 不必要非常逼近最优值,这时我们通常引入 \epsilon-convergence 函数来控制迭代停止
      • 很多情况下价值函数还未完全收敛,Policy 就已经最优,所以在每次迭代之后都可以更新策略(Policy),当策略无变化时停止迭代

Value Iteration

  • 最优化原理:当且仅当状态 s 达到任意能到达的状态 s‘ 时,价值函数 v 能在当前策略(policy)下达到最优,即v_{\pi}(s') = v_*(s'),与此同时,状态 s 也能基于当前策略达到最优,即v_{\pi}(s) = v_*(s)
  • 状态转移公式为:v_{k+1}(s) = \max_{a\in A}(R^a_s+\gamma\sum_{s' \in S}P^a_{ss'}v_k(s'))
  • 矩阵形式为:\mathbf{v_{k+1}} =\max_{a \in A} \mathbf{R^a_s} +\gamma\mathbf{P^av_k}
  • 下面是一个实例,求每个格子到终点的最短距离,走一步的 reward 是 -1:

同步动态规划算法小结

  1. 迭代策略评估(Iterative Policy Evaluation)解决的是 Prediction 问题,使用了贝尔曼期望方程(Bellman Expectation Equation)
  2. 策略迭代(Policy Iteration)解决的是 Control 问题,实质是在迭代策略评估之后加一个选择 Policy 的过程,使用的是贝尔曼期望方程和贪心算法
  3. 价值迭代(Value Iteration) 解决的是 Control 问题,它并没有直接计算策略(Policy),而是在得到最优的基于策略的价值函数之后推导出最优的 Policy,使用的是贝尔曼最优化方程(Bellman Optimality Equation)

Model-free v.s. Model-based

Model-based 是指学习 Transition Model T(S, a, S') \sim P_r(s'|s, a) ,即在状态 s 采取行动 a 后转移到 s' 的概率,然后基于这个 Model 去选择最优的策略。Transition Model 的空间复杂度为 O(S^2A) ,所以不太适合用于解决状态空间和动作空间过大的问题。

Model-free 未知 Transition Model,通常通过不断的尝试去直接学习最优策略。

前面的 Policy Iteration 和 Value Iteration 都是 model-based 方法,因此一定程度上受限于状态空间和动作空间的规模。于是 Q-learning 应运而生。

Q-learning

公式如下,可以看出 Q-leaning 由 Value iteration 演变而来,但去除了对 Transition Model 的依赖,因此属于 Model-free 的方法。另一方面下一个动作 a 的选择,原来是根据 policy 选择最优的 action,现在是 maximum 下一个 state 的值来选择 action,所以 Q-learning 属于 off-policy 算法。

Q(s_t, a_t)\leftarrow (1-\alpha)Q(s_t, a_t) + \alpha[r_{t+1} + \gamma \max_{a} Q(s_{t+1}, a)]

https://martin-thoma.com/images/2016/07/q-learning.png

State-Action-Reward-State-Action (SARSA)

公式如下,唯一与 Q-learning 的不同是,SARSA 是 on-policy 方法,需要考虑 exporation-exploitation 问题,基本方法是 \epsilon -greedy。

Q(s_t, a_t) \leftarrow (1-\alpha)Q(s_t,a_t) + \alpha[r_{t+1} + \gamma Q(s_{t+1}, a_{t+1})]

https://martin-thoma.com/images/2016/07/sarsa-lambda.png

Deep Q Network (DQN)

基本思路是,用神经网络建模 Q function,基本公式如下:( \phi 是 state s,\theta 代表网络参数)。Loss 为 网络输出值( Q(\phi_j,a_j;\theta) )和目标值( y_j )之间的平方误差。

y_j = r_j + \gamma \max_{a'}Q(\phi_{j+1},a',\theta^-)

同时,因为训练样本并不满足 iid,DQN 引入 Experience Replay 机制从 replay 中随机采样数据以尽量减少样本间的相关性,使得网络更容易训练。另外,DQN 的 target network 和 estimate network 结构一致,经过 C 轮迭代之后更新 target network = estimate network,从而使训练更稳定。

训练过程如下:

https://storage.googleapis.com/deepmind-media/dqn/DQNNaturePaper.pdf

Deep Deterministic Policy Gradient (DDPG)

DQN 可以很好的解决高维状态空间问题,但对连续动作空间或者是动作空间非常大的情况并不适用。DDPG 尝试通过 actor-critic architecture 来解决连续动作空间的问题,引入 actor 输出连续动作(离散也可以),critic 则是对状态,动作对(s,a)打分,指导 actor 的学习。

DDPG 也采用了 DQN 的 Seperate Target Network 机制,critic 和 actor 各有两个神经网络,一类是 target,一类用于 estimate(即会即时更新的 network)。

  • Actor
    • Actor Network (estimation) \mu(s_i|\theta^\mu)
    • Target Network \mu'(s_{i+1}|\theta^{\mu})
  • Critic
    • Critic Network (estimation) Q(s_i,a_i|\theta^Q)
    • Target Network Q(s_{i+1}, \mu'(s_{i+1}|\theta^{\mu'})|\theta^{Q'})

训练过程如下:

https://arxiv.org/pdf/1509.02971.pdf

其中还有几个值得注意的点:

  • 不同于 DQN 每过 C 次迭代将 estimation network 的参数直接复制到 target network,DDPG 使用 soft target update( \theta'\leftarrow \tau\theta + (1-\tau)\theta' \with \tau \ll 1.) 保证参数缓慢更新
  • 引入了 batch normalization
  • 通过给参数空间或动作空间加入 noise 鼓励 actor 进行 exploration (Open AI 发现把 noise 加入在参数上效果更好,见 blog post)

PG 和 Q learning 的问题

Policy Gradient 的问题是,1)大的策略更新使训练失败,2)有时很难将策略的变化映射到参数空间,3)不合适的学习率导致梯度消失或爆炸,4)样本效率(sample efficiency)低。

Q learning 的问题是,大部分情况下,对不同的 action 差别不会很大(方差小),且在部分任务中,Q function 的值总为正。

优势函数 Advantage Function

优势函数就是为了解决 Q function 值方差小而引入的,基本形式为A(s,a) = Q(s,a) - V(s)=E_{s'\sim P(s'|s,a)}[r(s) + \gamma V^\pi(s')-V^\pi(s)]

A(s,a) 意义为当前 (s,a) pair 的效用相对于该状态下平均效用的大小,如果大于 0 则说明该动作优于平均动作。

Trust Region Policy Optimization (TRPO)

实作 DDPG 的一个问题网络参数更新的步长不好确定,太小网络优化会非常慢,太大则容易优化过头,导致更新后的网络反而不如更新之前。为此 TRPO 想通过一个机制使回报函数在更新的过程中单调递增,即 expected discounted long-term reward \eta 递增。

\eta(\pi)=E_{s_0,a_0,...}\left[\sum_{t=0}^\infty \gamma^t r(s_t) \right]

为使每次迭代后 \eta 保持增加,直观的想法是将其分解为旧策略对应的回报函数+其他项,然后设法保证其他项大于等于零即可。该分解公式如下:(具体推导可参见:arxiv.org/pdf/1509.0297)。

η For New Policy π’ (https://arxiv.org/pdf/1509.02971.pdf)

第一项旧策略回报值,第二项为新旧策略的回报差值。上式又可以进一步转化为 \eta(\hat{\pi}) = \eta(\pi)+\sum_s \rho_{\hat{\pi}}(s)\sum_a \hat{\pi}(a|s)A^\pi(s,a) \\ \rho_{\pi}(s)=P(s_0=s)+\gamma P(s_1=s)+\gamma^2P(s_2=s)+...

\eta(\hat{\pi}) 非常依赖新策略导致很难优化,所以我们忽略状态分布的变化,保持旧策略对应的状态分布,引入对\eta(\hat{\pi}) 的近似 L_\pi(\hat\pi)作为优化目标:

L_\pi(\hat\pi)=\eta(\pi)+\sum_s \rho_\pi(s)\sum_a \hat\pi(a|s)A_\pi(s,a)

式中的动作 a 还是依赖于新策略,而新策略由未知的参数 \theta 决定,所以我们引入重要性采样(importance sampling)对动作分布进行处理。

\sum_a \hat\pi(a|s)A_\pi(s,a)=E_{a,q}\left[ \frac{\hat\pi_\theta(a|s_n)}{q(a|s_n)}  A_{\theta_{old}}(s_n,a) \right]

最后再通过一些变换,以及引入平均 KL-divergence 可将问题转化为:(过程可参考原论文或zhuanlan.zhihu.com/p/26

\begin{equation*} \begin{aligned} & \underset{\theta}{\text{maximize}} & & E_{s\sim \rho_{\theta_{old}}, a\sim\pi_{\theta_{old}}}[\frac{\pi_\theta(a|s) }{\pi_{\theta_{old}}(a|s)} A_{\theta_old}(s,a)]  \\ & \text{subject to} & & D_{\text{KL}}^{\text{max}}(\theta_{old}, \theta) \le \delta \end{aligned} \end{equation*}

引入 KL-divergence 的目的是限制新旧策略的的差别,防止更新太过发散。

Proximal Policy Optimization (PPO)


参考资料:

  1. 优达学城(Udacity)纳米学位增强学习部分Reinforcement Learning By David Silver
    UC Berkeley CS188 Intro to AI -- Course Material
  2. CS188 inst.eecs.berkeley.edu/
  3. Introduction to Various Reinforcement Learning Algorithms. Part I (Q-Learning, SARSA, DQN, DDPG)
  4. Introduction to Various Reinforcement Learning Algorithms. Part II (TRPO, PPO)
编辑于 2019-10-26

文章被以下专栏收录