转载自:https://zhuanlan.zhihu.com/p/25319023
马尔可夫决策过程(Markov Decision Processes,MDPs)
MDPs 简单说就是一个智能体(Agent)采取行动(Action)从而改变自己的状态(State)获得奖励(Reward)与环境(Environment)发生交互的循环过程。
MDP 的策略完全取决于当前状态(Only present matters),这也是它马尔可夫性质的体现。
基本概念
- : 有限状态 state 集合,s 表示某个特定状态
- : 有限动作 action 集合,a 表示某个特定动作
- Transition Model : Transition Model, 根据当前状态 s 和动作 a 预测下一个状态 s’,这里的 表示从 s 采取行动 a 转移到 s’ 的概率
- Reward :表示 agent 采取某个动作后的即时奖励,它还有 R(s, a, s’), R(s) 等表现形式,采用不同的形式,其意义略有不同
- Policy : 根据当前 state 来产生 action,可表现为 或 ,后者表示某种状态下执行某个动作的概率
回报(Return):
由于我们引入了 discount,可以看到我们把一个无限长度的问题转换成了一个拥有最大值上限的问题。
强化学习的目的是最大化长期未来奖励,即寻找最大的 U。(注:回报也作 G 表示)
基于回报(return),我们再引入两个函数
- 状态价值函数:,意义为基于 t 时刻的状态 s 能获得的未来回报(return)的期望,加入动作选择策略后可表示为()
- 动作价值函数:,意义为基于 t 时刻的状态 s,选择一个 action 后能获得的未来回报(return)的期望
价值函数用来衡量某一状态或动作-状态的优劣,即对智能体来说是否值得选择某一状态或在某一状态下执行某一动作。
MDP 求解
我们需要找到最优的策略使未来回报最大化,求解过程大致可分为两步,具体内容会在后面展开
- 预测:给定策略,评估相应的状态价值函数和状态-动作价值函数
- 行动:根据价值函数得到当前状态对应的最优动作
Bellman 期望方程
Bellman 方程的分析
为了更加了解方程中期望的具体形式,可以见下图,第一层的空心圆代表当前状态(state),向下连接的实心圆代表当前状态可以执行两个动作,第三层代表执行完某个动作后可能到达的状态 s’。
我们将概率和转换为期望,上式等价于:
同理,我们可以得到动作价值函数的公式如下:
状态价值函数和动作价值函数的关系
最优方程
最优价值函数(optimal state-value function)
其意义为所有策略下价值函数的最大值
Bellman最优方程
- v 描述了处于一个状态的长期最优化价值,即在这个状态下考虑到所有可能发生的后续动作,并且都挑选最优的动作来执行的情况下,这个状态的价值
- q 描述了处于一个状态并执行某个动作后所带来的长期最优价值,即在这个状态下执行某一特定动作后,考虑再之后所有可能处于的状态并且在这些状态下总是选取最优动作来执行所带来的长期价值
最优策略(Optimal Policy)
关于收敛性:(对策略定义一个偏序)
定理:
对于任意 MDP:
- 总是存在一个最优策略,它比其它任何策略都要好,或者至少一样好
- 所有最优决策都达到最优值函数,
- 所有最优决策都达到最优行动值函数,
最优策略可从最优状态价值函数或者最优动作价值函数得出:
求解 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 和策略(policy)
- 输出:状态价值函数
- Control 问题
- 输入:MDP
- 输出:最优状态价值函数和最优策略
解决也是分两种,见下文
Policy Iteration
步骤:
- Iterative Policy Evaluation:
- 基于当前的 Policy 计算出每个状态的 Value function
- 同步更新:每次迭代更新所有的状态的 v
- 矩阵形式:
- 左边是第 k 次迭代每个 state 上状态价值函数的值,右边是通过贪心(greedy)算法找到策略
- 计算实例:
- k=2, -1.7 -1.75 = 0.25*(-1+0) + 0.25*(-1-1) + 0.25*(-1-1) + 0.25*(-1-1)
- k=3, -2.9 -2.925 = -0.25*(-1-2) + 0.25*(-1-2) + 0.25*(-1-2) + 0.25*(-1-1.7)
- Policy Improvement
- 基于当前的状态价值函数(value function),用贪心算法找到最优策略
- 会一直迭代到收敛,具体证明如图:
- 扩展
- 事实上在大多数情况下 Policy evaluation 不必要非常逼近最优值,这时我们通常引入 函数来控制迭代停止
- 很多情况下价值函数还未完全收敛,Policy 就已经最优,所以在每次迭代之后都可以更新策略(Policy),当策略无变化时停止迭代
Value Iteration
- 最优化原理:当且仅当状态 s 达到任意能到达的状态 s‘ 时,价值函数 v 能在当前策略(policy)下达到最优,即,与此同时,状态 s 也能基于当前策略达到最优,即
- 状态转移公式为:
- 矩阵形式为:
- 下面是一个实例,求每个格子到终点的最短距离,走一步的 reward 是 -1:
同步动态规划算法小结
- 迭代策略评估(Iterative Policy Evaluation)解决的是 Prediction 问题,使用了贝尔曼期望方程(Bellman Expectation Equation)
- 策略迭代(Policy Iteration)解决的是 Control 问题,实质是在迭代策略评估之后加一个选择 Policy 的过程,使用的是贝尔曼期望方程和贪心算法
- 价值迭代(Value Iteration) 解决的是 Control 问题,它并没有直接计算策略(Policy),而是在得到最优的基于策略的价值函数之后推导出最优的 Policy,使用的是贝尔曼最优化方程(Bellman Optimality Equation)
Model-free v.s. Model-based
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 算法。
State-Action-Reward-State-Action (SARSA)
Deep Q Network (DQN)
同时,因为训练样本并不满足 iid,DQN 引入 Experience Replay 机制从 replay 中随机采样数据以尽量减少样本间的相关性,使得网络更容易训练。另外,DQN 的 target network 和 estimate network 结构一致,经过 C 轮迭代之后更新 target network = estimate network,从而使训练更稳定。
训练过程如下:
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)
- Target Network
- Critic
- Critic Network (estimation)
- Target Network
训练过程如下:
其中还有几个值得注意的点:
- 不同于 DQN 每过 C 次迭代将 estimation network 的参数直接复制到 target network,DDPG 使用 soft target update( ) 保证参数缓慢更新
- 引入了 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
A(s,a) 意义为当前 (s,a) pair 的效用相对于该状态下平均效用的大小,如果大于 0 则说明该动作优于平均动作。
Trust Region Policy Optimization (TRPO)
最后再通过一些变换,以及引入平均 KL-divergence 可将问题转化为:(过程可参考原论文或https://zhuanlan.zhihu.com/p/26308073)
引入 KL-divergence 的目的是限制新旧策略的的差别,防止更新太过发散。
Proximal Policy Optimization (PPO)
参考资料:
- 优达学城(Udacity)纳米学位增强学习部分Reinforcement Learning By David Silver
UC Berkeley CS188 Intro to AI -- Course Material - CS188 https://inst.eecs.berkeley.edu/~cs188/fa18/
- Introduction to Various Reinforcement Learning Algorithms. Part I (Q-Learning, SARSA, DQN, DDPG)
- Introduction to Various Reinforcement Learning Algorithms. Part II (TRPO, PPO)