Press "Enter" to skip to content

【强化学习】强化学习知识点整理

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

作者:我勒个矗

 

链接:https://zhuanlan.zhihu.com/p/25319023

 

 

小编寄语:Bellman 最优方程告诉我们,通过考虑回报的期望等于回报的期望的期望,可以得到当前状态下最优策略的近似解。

 

我们在做决策时也可以多考虑一步。

 

 

1. 马尔可夫决策过程

 

马尔可夫决策过程(Markov Decision Processes, MDP)简单说就是一个智能体(Agent)采取行动(Action)从而改变自己的状态(State)获得奖励(Reward)与环境(Environment)发生交互的循环过程。

 

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

 

其可以简单表示为:

 

1.1 基本概念

 

 

: 有限状态 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,可表现为或,后者表示某种状态下执行某个动作的概率。

 

 

1.2 回报

 

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

 

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

 

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

 

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

 

状态价值函数:意义为基于 t 时刻的状态 s 能获得的未来回报(return)的期望,加入动作选择策略后可表示为()

 

动作价值函数:,意义为基于 t 时刻的状态 s,选择一个 action 后能获得的未来回报(return)的期望

 

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

 

1.3 MDP 求解

 

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

 

 

「预测」:给定策略,评估相应的状态价值函数和状态-动作价值函数

 

「行动」:根据价值函数得到当前状态对应的最优动作

 

 

2. Bellman 期望方程

 

2.1 Bellman 方程的分析

 

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

根据上图得出状态价值函数公式:

 

其中,

 

上式中策略是指给定状态 s 的情况下, a 的概率分布,即

 

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

 

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

如上图,Bellman 方程也可以表达成矩阵形式:可直接求出;其复杂度为,一般可通过动态规划、蒙特卡洛估计与 Temporal-Difference learning 求解。

 

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

2.3 最优方程

 

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

 

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

 

「Bellman最优方程」

 

v 描述了处于一个状态的长期最优化价值,即在这个状态下考虑到所有可能发生的后续动作,并且都挑选最优的动作来执行的情况下,这个状态的价值

 

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

 

2.4 最优策略

 

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

 

定理:

 

对于任意 MDP:

 

总是存在一个最优策略,它比其它任何策略都要好,或者至少一样好

 

所有最优决策都达到最优值函数,

 

所有最优决策都达到最优行动值函数,

 

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

 

2.5 求解 Bellman 最优方程

 

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

 

动态模型已知

 

拥有足够的计算空间和时间

 

系统满足 Markov 特性

 

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

 

Value Iteration

 

Policy Iteration

 

Q-learning

 

Sarsa

 

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

 

Infinite and continuous MDPs

 

Partially observable MDPs

 

Undiscounted, average reward MDPs

 

3. 动态规划求解 MDP 的 Planning

 

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

 

MDP 的问题主要分两类

 

Prediction 问题:输入MDP和策略(policy)。输出:状态价值函数。

 

Control 问题:输入MDP最优状态价值函数和最优策略

 

解决也是分两种,见下文

 

3.1 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),当策略无变化时停止迭代

 

3.2 Value Iteration

 

最优化原理:当且仅当状态 s 达到任意能到达的状态 s‘ 时,价值函数 v 能在当前策略(policy)下达到最优,即,与此同时, s 也能基于当前策略达到最优,即

 

状态转移公式为:

 

矩阵形式为:

 

下面是一个实例,求每个格子到终点的最短距离,走一步的 reward 是 -1:

3.3 同步动态规划算法小结

 

 

迭代策略评估(Iterative Policy Evaluation)解决的是 Prediction 问题,使用了贝尔曼期望方程(Bellman Expectation Equation)

 

策略迭代(Policy Iteration)解决的是 Control 问题,实质是在迭代策略评估之后加一个选择 Policy 的过程,使用的是贝尔曼期望方程和贪心算法

 

价值迭代(Value Iteration) 解决的是 Control 问题,它并没有直接计算策略(Policy),而是在得到最优的基于策略的价值函数之后推导出最优的 Policy,使用的是贝尔曼最优化方程(Bellman Optimality Equation)

 

 

3.4 Model-free v.s. Model-based

 

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

 

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

 

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

 

3.5 Q-learning

 

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

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

 

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

3.7 Deep Q Network (DQN)

 

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

 

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

 

训练过程如下:

3.8 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 加入在参数上效果更好,见 Better Exploration with Parameter Noise)

 

3.9 PG 和 Q learning 的问题

 

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

 

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

 

3.10 优势函数 Advantage Function

 

优势函数就是为了解决 Q function 值方差小而引入的,基本形式为

 

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

 

3.11 Trust Region Policy Optimization (TRPO)

 

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

 

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

第一项旧策略回报值,第二项为新旧策略的回报差值。上式又可以进一步转化为

 

但非常依赖新策略导致很难优化,所以我们忽略状态分布的变化,保持旧策略对应的状态分布,引入对的近似作为优化目标:

 

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

 

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

 

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

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注