马尔科夫决策过程(Markov Decision Processes,MDPs)
MDPs简单来说就是一个智能体(Agent)采取行动(Action)从而改变自己的状态(State)来获取奖励(Reward)与环境(Environment)交互的过程。MDPs的策略完全取决于当前状态,这也是马尔科夫性质的体现。可以简单的表示为
基本概念
-
s∈S :有限状态state集合,s 表示某个特定状态 -
a∈A :有限动作action集合,a 表示某个特定动作 - Transition Model
T(S,a,S′)∼Pr(s′|s,a) :Transition Model,根据当前状态s 和 动作a 预测下一个状态s′ ,这里的Pr 表示从动作s 采取动作a 转移到s′ 的概率 - Reward
R(s,a)=E[Rt+1|s,a] :表示agent采取某个动作后的即时奖励,它还有R(s,a,s′) ,R(s) 等表现形式。其意义稍微有些不同。 - Policy
π(s)→a :根据当前states 来产生 actiona ,可表现为a=π(s) 或π(s|a)=P[s|a] ,后者表现某种状态下执行某个动作的概率
回报(Return)
由于我们引入discount,可以看到我们把一个无限长度的问题转换成一个拥有最大值上限的问题。
强化学习的母的是最大化长期未来奖励,即寻找最大的
- 状态价值函数:
υ=E[Ut|St=s] ,意义为基于t 时刻状态s 能获得的未来回报(return)的期望,加入动作选择策略后可表示为υπ(s)=Eπ[Ut|St=s](Ut=Rt+1+γRt+2+⋯+γT−t−1RT) - 动作价值函数:
qπ=Epi[Ut|St=s,At=a] ,意义为基于t 时刻的状态s,选择一个action后能获得的未来回报(return)的期望
价值函数用来衡量某一状态或动作的优劣,即对智能体来说是否值得选择某一状态或在某一状态下执行某一动作。
MDPs求解
我们需要找到最优的策略使得未来回报最大化,求解过程大致可分为两部,具体内容会在后面展开:
- 预测:给定策略,评估相应的状态价值函数和状态-动作价值函数;
- 行动:根据价值函数得到当前状态对应的最优动作。
Bellman方程
Bellman方程的分析
为了更加了解方程中期望的具体形式。第一层代表当前状态(state),向下连接的第二层实心圆代表当前状态下可以执行两个动作,第三层代表执行完某个动作后得到的新状态
根据上图我们可以得到价值函数的表达式:
其中,
上式中策略
同理,我们可以得到动作价值函数的公式如下:
上式,可用bellman方程表示:
状态价值函数和动作价值函数的关系
最优方程
最优价值函数(optimal state-value function)
其意义为所有策略下价值函数的最大值。
Bellman最优方程
最优策略(optimal policy)
求解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
动态规划是一种通过把复杂问题划分为子问题,并对自问题进行求解,最后把子问题的解结合起来解决原问题的方法。「动态」是指问题由一系列的状态组成,而且状态能一步步地改变,「规划」即优化每一个子问题。因为MDPs 的 Markov 特性,即某一时刻的子问题仅仅取决于上一时刻的子问题的 action,并且 Bellman 方程可以递归地切分子问题,所以我们可以采用动态规划来求解 Bellman 方程。MDPs的问题主要分两类
- Prediction 问题
- 输入:MDPs
<S,A,P,R,γ> 和策略(policy)π - 输出:状态价值函数
υπ
- 输入:MDPs
- Control问题
- 输入: MDPs
<S,A,P,R,γ> - 输出:最优状态价值函数
υ∗ 和最优策略π
- 输入: MDPs
其处理方法也分两种
Policy Iteration
步骤:
- Iterative Policy Evaluation:
- 基于当前的Policy计算出每个状态的Value function
- 同步更新:每次迭代更新所有的状态的
υ
υk+1(s)=∑a∈Aπ(a|s)(Ras+γ∑s′∈SPass′υk(s′)) - 矩阵形式:
υk+1=Rπ+γPπυk - 左边是第
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 Improment
- 基于当前的状态价值函数(value function),用贪心算法找到最优策略
π′=argmaxqπ(s,a)a∈A -
υpi 会一直迭代到收敛,具体证明此处略。 - 扩展
- 事实上在大多数情况下 Policy evaluation 不必要非常逼近最优值,这时我们通常引入
ϵ -convergence 函数来控制迭代停止 - 很多情况下价值函数还未完全收敛,Policy 就已经最优,所以在每次迭代之后都可以更新策略(Policy),当策略无变化时停止迭代
- 事实上在大多数情况下 Policy evaluation 不必要非常逼近最优值,这时我们通常引入
- 基于当前的状态价值函数(value function),用贪心算法找到最优策略
Value Iteration
- 最优化原来:当且仅当状态
s 达到任意能到达的状态s‘ 时,价值函数υ 能在当前策略(policy)下达到最优,即υπ(s′)=υ∗(s′) ,与此同时,状态s 也能基于当前策略达到最优,即υπ(s)=υ∗(s) - 状态转移公式为:
υk+1(s)=maxa∈A(Ras)+γ∑s′∈SPass′υk(s′) - 矩阵形式为:
υk+1=maxa∈A(Ras+γPaυk) - 下面是一个实例,求每个格子到终点的最短距离,走一步的 reward 是 -1: