强化学习(二)马尔科夫决策过程(MDP)
1. 简介
- 马尔可夫决策过程正式地描述了强化学习的环境
- 其中环境是完全可观测的
- 即当前状态完全表征了这个过程
- 几乎所有的强化学习问题都可以形式化为马尔可夫决策过程,例如:
- 最优控制主要处理连续的马尔可夫决策过程
- 部分可观察的问题可以转化为马尔可夫决策过程
- 赌场问题是具有单一状态的马尔可夫决策过程
2. 马尔科夫性(Markov property)
当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性质。具有马尔可夫性质的过程通常称之为马尔可夫过程。
用式子来表示:
P [ S t + 1 ∣ S t ] = P [ S t + 1 ∣ S 1 , ⋯ , S t ] P[S_{t+1}|S_t]=P[S_{t+1}|S_1,\cdots,S_t] P[St+1∣St]=P[St+1∣S1,⋯,St]
或者:
P s s ′ = P [ S t + 1 = s ′ ∣ S t = s ] \mathcal{P}_{ss'}=\mathbb{P}[S_{t+1}=s'|S_t=s] Pss′=P[St+1=s′∣St=s]
状态转移矩阵 P \mathcal{P} P 定义了从 s s s 的所有状态到所有后继状态 s ′ s' s′ 的转移概率,每一行的和都是1
3. 马尔可夫过程(Markov Process)
马尔科夫过程是一个无记忆的随机过程,比如一系列遵循马尔科夫性的随机状态 S 1 , S 2 , ⋯ S_1,S_2,\cdots S1,S2,⋯
定义:马尔可夫过程(也称为马尔可夫链)是一个元组 ⟨ S , P ⟩ \left\langle S,\mathcal{P}\right \rangle ⟨S,P⟩,其中:
- S S S 是一个有限的状态集合
- P \mathcal{P} P 是一个状态转移矩阵, P s s ′ = P [ S t + 1 = s ′ ∣ S t = s ] \mathcal{P}_{ss'}=\mathbb{P}[S_{t+1}=s'|S_t=s] Pss′=P[St+1=s′∣St=s]
例子:学生马尔可夫链
这个马尔科夫链从 S 1 = C 1 S_1=C1 S1=C1 开始, S 1 , S 2 , ⋯ , S T S_1,S_2,\cdots,S_T S1,S2,⋯,ST 举例如下:
C 1 , C 2 , C 3 , P a s s , S l e e p C1,C2,C3,Pass,Sleep C1,C2,C3,Pass,Sleep
C 1 , F B , F B , C 1 , C 2 , S l e e p C1,FB,FB,C1,C2,Sleep C1,FB,FB,C1,C2,Sleep
C 1 , C 2 , C 3 , P u b , C 2 , C 3 , P a s s , S l e e p C1,C2,C3,Pub,C2,C3,Pass,Sleep C1,C2,C3,Pub,C2,C3,Pass,Sleep
C 1 , F B , F B , C 1 , C 2 , C 3 , P u b , C 1 , F B , F B , F B , C 1 , C 2 , C 3 , P u b , C 2 , S l e e p C1,FB,FB,C1,C2,C3,Pub,C1,FB,FB,FB,C1,C2,C3,Pub,C2,Sleep C1,FB,FB,C1,C2,C3,Pub,C1,FB,FB,FB,C1,C2,C3,Pub,C2,Sleep
学生马尔可夫链的转移矩阵:
4. 马尔可夫奖励过程(Markov Reward Process)
马尔可夫奖励过程是一个元组 ⟨ S , P , R , γ ⟩ \left\langle S,\mathcal{P},\mathcal{R},\gamma\right \rangle ⟨S,P,R,γ⟩
- S S S 是一个有限的状态集合
- P \mathcal{P} P 是一个状态转移矩阵, P s s ′ = P [ S t + 1 = s ′ ∣ S t = s ] \mathcal{P}_{ss'}=\mathbb{P}[S_{t+1}=s'|S_t=s] Pss′=P[St+1=s′∣St=s]
- R \mathcal{R} R 是一个奖励函数, R s = E [ R t + 1 ∣ S t = s ] \mathcal{R}_s=\mathbb{E}[R_{t+1}|S_t=s] Rs=E[Rt+1∣St=s]
- γ \gamma γ 是一个折扣系数, γ ∈ [ 0 , 1 ] \gamma\in[0,1] γ∈[0,1]
例子:学生马尔可夫奖励过程(Student MRP)
G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ = ∑ k = 0 ∞ γ k R t + k + 1 G_t=R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3} + \cdots = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} Gt=Rt+1+γRt+2+γ2Rt+3+⋯=∑k=0∞γkRt+k+1 代表收获(return),是一个MDP中从某一个状态 S t S_t St 开始采样直到终止状态时所有奖励的有衰减的和。
其中:
- 折扣系数(或者叫衰减系数) γ ∈ [ 0 , 1 ] \gamma\in[0,1] γ∈[0,1] 是未来奖励的当下价值
- 在 k + 1 k+1 k+1 个时间步后获得奖励的价值为 γ k R \gamma^kR γkR
- 即时奖励的价值高于延迟奖励:
- γ \gamma γ 接近0会导致“近视”评估
- γ \gamma γ 接近1会导致“远视”评估
大多数马尔可夫奖励和决策过程是带有折扣的。为什么?
- 数学上折扣奖励更方便
- 避免循环马尔可夫过程中出现无限回报
- 对未来的不确定性可能无法完全表示
- 如果奖励是金钱,即时奖励可能比延迟奖励赚取更多利息
- 动物/人类行为表现出对即时奖励的偏好
- 有时可以使用不带折扣的马尔可夫奖励过程(即 γ = 1 \gamma=1 γ=1),比如所有的序列都一定会终止
例子:Student MRP Returns
初始状态为 S 1 = C 1 S_1=C1 S1=C1, γ = 1 2 \gamma=\frac{1}{2} γ=21
G 1 = R 2 + γ R 3 + ⋯ + γ T − 2 R T G_1=R_2+\gamma R_3+\cdots+\gamma^{T-2}R_T G1=R2+γR3+⋯+γT−2RT
γ = 0 \gamma=0 γ=0 时学生MRP的状态价值函数:
γ = 0.9 \gamma=0.9 γ=0.9 时学生MRP的状态价值函数:
γ = 1 \gamma=1 γ=1 时学生MRP的状态价值函数:
马尔科夫奖励过程的贝尔曼方程
状态价值函数可以被分解为两部分:
- 即时奖励 R t + 1 R_{t+1} Rt+1
- 后续状态的折扣价值 γ v ( S t + 1 ) \gamma v(S_{t+1}) γv(St+1)
v ( s ) = E [ G t ∣ S t = s ] = E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + … ∣ S t = s ] = E [ R t + 1 + γ ( R t + 2 + γ R t + 3 + … ) ∣ S t = s ] = E [ R t + 1 + γ G t + 1 ∣ S t = s ] = E [ R t + 1 + γ v ( S t + 1 ) ∣ S t = s ] \begin{align*} v(s) &= \mathbb{E} [G_t \mid S_t = s] \\ &= \mathbb{E} [R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \ldots \mid S_t = s] \\ &= \mathbb{E} [R_{t+1} + \gamma (R_{t+2} + \gamma R_{t+3} + \ldots) \mid S_t = s] \\ &= \mathbb{E} [R_{t+1} + \gamma G_{t+1} \mid S_t = s] \\ &= \mathbb{E} [R_{t+1} + \gamma v(S_{t+1}) \mid S_t = s] \end{align*} v(s)=E[Gt∣St=s]=E[Rt+1+γRt+2+γ2Rt+3+…∣St=s]=E[Rt+1+γ(Rt+2+γRt+3+…)∣St=s]=E[Rt+1+γGt+1∣St=s]=E[Rt+1+γv(St+1)∣St=s]
马尔科夫奖励过程(MRPs)的贝尔曼方程:
v ( s ) = E [ R t + 1 + γ v ( S t + 1 ∣ S t = s ) ] v(s)=\mathbb{E}[R_{t+1}+\gamma v(S_{t+1}|S_t=s)] v(s)=E[Rt+1+γv(St+1∣St=s)]
v ( s ) = R s + γ ∑ s ′ ∈ S P s s ′ v ( s ′ ) v(s)=\mathcal{R}_s+\gamma \sum_{s'\in\mathcal{S}}\mathcal{P}_{ss'}v(s') v(s)=Rs+γs′∈S∑Pss′v(s′)
例子:Student MRP的贝尔曼方程
这里的 γ = 1 \gamma=1 γ=1,并且已经知道了Pub的状态价值为0.8,Pass的状态价值为10
贝尔曼方程的矩阵形式:
v = R + γ P v v=\mathcal{R}+\gamma \mathcal{P}v v=R+γPv
其中 v v v 是每个状态都有一个对应元素的列向量:
求解贝尔曼方程:
贝尔曼方程是一个线性方程,可以被直接求解:
v = R + γ P v ( I − γ P ) v = R v = ( I − γ P ) − 1 R \begin{align*} v &= \mathcal{R} + \gamma \mathcal{P} v \\ (I - \gamma \mathcal{P}) v &= \mathcal{R} \\ v &= (I - \gamma \mathcal{P})^{-1} \mathcal{R} \end{align*} v(I−γP)vv=R+γPv=R=(I−γP)−1R
对于n个状态的计算复杂度为 O ( n 3 ) O(n^3) O(n3)
因为计算复杂度比较大,直接求解只可能在小规模的马尔科夫奖励过程中实现,在大规模马尔科夫奖励过程中可以使用很多迭代的方法,比如:
- 动态规划(Dynamic Programming)
- 蒙特卡洛法(Monte-Carlo evaluation)
- 时序差分法(Temporal-Difference)
5. 马尔科夫决策过程 Markov Decision Process
马尔科夫决策过程(MDP)就是带有决策的马尔科夫奖励过程(MRP),它是一个所有状态都符合马尔科夫性质的环境。
马尔科夫决策过程是一个元组 ⟨ S , A , P , R , γ ⟩ \left\langle \mathcal{S},\mathcal{A},\mathcal{P},\mathcal{R},\gamma\right \rangle ⟨S,A,P,R,γ⟩
- S \mathcal{S} S是一个有限的状态集合
- A \mathcal{A} A 是一个有限的动作集合
- P \mathcal{P} P 是一个状态转移概率矩阵, P s s ′ a = P [ S t + 1 = s ′ ∣ S t = s , A t = a ] \mathcal{P}_{ss'}^{a}=\mathbb{P}[S_{t+1}=s'|S_t=s,A_t=a] Pss′a=P[St+1=s′∣St=s,At=a]
- R \mathcal{R} R 是一个奖励函数, R = E [ R t + 1 ∣ S t = s , A t = a ] \mathcal{R}=\mathbb{E}[R_{t+1}|S_t=s,A_t=a] R=E[Rt+1∣St=s,At=a]
- γ \gamma γ 是一个折扣率, γ ∈ [ 0 , 1 ] \gamma\in[0,1] γ∈[0,1]
例子:学生马尔科夫决策过程
策略 π \pi π是给定状态下动作的概率分布
π ( a ∣ s ) = P [ A t = a ∣ S t = s ] \pi(a|s)=\mathbb{P}[A_t=a|S_t=s] π(a∣s)=P[At=a∣St=s]
- 策略完全定义了一个agent的行为
- MDP的策略只依赖当前状态(不依赖历史状态)
- 比如,策略是静态的,与时间无关, A t ∼ π ( ⋅ ∣ S t ) , ∀ t > 0 A_t \sim \pi(\cdot \mid S_t), \forall t > 0 At∼π(⋅∣St),∀t>0
给定一个MDP ⟨ S , A , P , R , γ ⟩ \left\langle \mathcal{S},\mathcal{A},\mathcal{P},\mathcal{R},\gamma\right \rangle ⟨S,A,P,R,γ⟩ 和一个策略 π \pi π,状态序列 S 1 , S 2 , ⋯ S_1,S_2,\cdots S1,S2,⋯ 是一个马尔科夫过程 ⟨ S , P π ⟩ \left\langle \mathcal{S}, \mathcal{P}^{\pi} \right \rangle ⟨S,Pπ⟩,状态和奖励序列 S 1 , R 2 , S 2 , ⋯ S_1,R_2,S_2,\cdots S1,R2,S2,⋯ 是一个马尔科夫奖励过程 ⟨ S , P π , R π , γ ⟩ \left\langle \mathcal{S},\mathcal{P}^{\pi},\mathcal{R}^{\pi},\gamma\right \rangle ⟨S,Pπ,Rπ,γ⟩,则有:
P s , s ′ π = ∑ a ∈ A π ( a ∣ s ) P s s ′ a \mathcal{P}^\pi_{s,s'} = \sum_{a \in \mathcal{A}} \pi(a \mid s) \mathcal{P}^a_{ss'} Ps,s′π=a∈A∑π(a∣s)Pss′a
R s π = ∑ a ∈ A π ( a ∣ s ) R s a \mathcal{R}^\pi_s = \sum_{a \in \mathcal{A}} \pi(a \mid s) \mathcal{R}^a_s Rsπ=a∈A∑π(a∣s)Rsa
价值函数:
一个MDP的状态价值函数 v π ( s ) v_{\pi}(s) vπ(s) 是从状态 s s s 开始依据策略 π \pi π 的收获( G t G_t Gt)的期望:
v π ( s ) = E π [ G t ∣ S t = s ] v_{\pi}(s)=\mathbb{E}_{\pi}[G_t|S_t=s] vπ(s)=Eπ[Gt∣St=s]
动作价值函数 q π ( s , a ) q_{\pi}(s,a) qπ(s,a) 是是从状态 s s s 开始依据策略 π \pi π 采取动作 a a a 的期望:
q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] q_{\pi}(s,a)=\mathbb{E}_{\pi}[G_t|S_t=s,A_t=a] qπ(s,a)=Eπ[Gt∣St=s,At=a]
例子:Student MDP的状态价值函数
Bellman期望方程 Bellman Expectation Equation
MDP下的状态价值函数和动作价值函数与MRP下的价值函数类似,可以改用下一时刻状态价值函数或动作价值函数来表达,具体方程如下:
v π ( s ) = E π [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s ] v_\pi(s) = \mathbb{E}_\pi \left[ R_{t+1} + \gamma v_\pi(S_{t+1}) \mid S_t = s \right] vπ(s)=Eπ[Rt+1+γvπ(St+1)∣St=s]
q π ( s , a ) = E π [ R t + 1 + γ q π ( S t + 1 , A t + 1 ) ∣ S t = s , A t = a ] q_\pi(s, a) = \mathbb{E}_\pi \left[ R_{t+1} + \gamma q_\pi(S_{t+1}, A_{t+1}) \mid S_t = s, A_t = a \right] qπ(s,a)=Eπ[Rt+1+γqπ(St+1,At+1)∣St=s,At=a]
根据动作价值函数 q π ( s , a ) q_{\pi}(s,a) qπ(s,a) 和状态价值函数 v π ( s ) v_{\pi}(s) vπ(s) 的定义,我们很容易得到他们之间的转化关系公式:
利用上贝尔曼方程,我们也很容易用状态价值函数表示动作价值函数
,即:
当然,也可以做一层推算:
例子:Student MDP的贝尔曼期望方程
图中计算Pass的状态价值所用方程:
v π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S P s s ′ a v π ( s ′ ) ) v_\pi(s) = \sum_{a \in \mathcal{A}} \pi(a \mid s) \left( \mathcal{R}^a_s + \gamma \sum_{s' \in \mathcal{S}} \mathcal{P}^a_{ss'} v_\pi(s') \right) vπ(s)=a∈A∑π(a∣s)(Rsa+γs′∈S∑Pss′avπ(s′))
因为不是从Pub来推理Pass,而是从Pub的上一层 Class 1,Class 2和Class 3来推理,所以不用知道Pub的状态价值就可以计算。同理因为Sleep没有上一层,所以只需要用它的奖励就可以计算Pass的价值。
贝尔曼期望方程的矩阵形式:
Bellman期望方程可以用诱导MRP简洁地表示:
v π = R π + γ P π v π v_{\pi}=\mathcal{R}^{\pi}+\gamma \mathcal{P}^{\pi}v_{\pi} vπ=Rπ+γPπvπ
可以直接求解:
v π = ( I − γ P π ) − 1 R π v_\pi = (I - \gamma \mathcal{P}^\pi)^{-1} \mathcal{R}^\pi vπ=(I−γPπ)−1Rπ
6. 最优价值函数
定义:
最优状态价值函数 v ∗ ( s ) v_{*}(s) v∗(s) 指的是在所有策略产生的状态价值函数中,使状态s价值最大的那个函数:
v ∗ ( s ) = max π v π ( s ) v_*(s) = \max_{\pi} v_{\pi}(s) v∗(s)=πmaxvπ(s)
最优动作价值函数 q ∗ ( s , a ) q_{*}(s,a) q∗(s,a) 指的是在所有策略产生的动作价值函数中,使状态动作对 ⟨ s , a ⟩ \left\langle s,a \right \rangle ⟨s,a⟩价值最大的那个函数:
q ∗ ( s , a ) = max π q π ( s , a ) q_*(s,a) = \max_{\pi} q_{\pi}(s,a) q∗(s,a)=πmaxqπ(s,a)
最优价值函数明确了MDP的最优可能表现,当我们知道了最优价值函数,也就知道了每个状态的最优价值,这时便认为这个MDP得到了解决。
例子:Student MDP的最优价值函数
例子:Student MDP的最优动作价值函数
最优策略
定义策略的部分排序:
π ≥ π ′ if v π ( s ) ≥ v π ′ ( s ) , ∀ s \pi \geq \pi' \ \text{if} \ v_{\pi}(s) \geq v_{\pi'}(s),\ \forall s π≥π′ if vπ(s)≥vπ′(s), ∀s
定理:
对于任意马尔可夫决策过程(Markov Decision Process, MDP):
- 存在一个最优策略 π ∗ \pi_{*} π∗,它优于或等于所有其他策略,即 π ∗ ≥ π , ∀ π \pi_{*}\geq\pi,\ \forall \pi π∗≥π, ∀π
- 所有最优策略都能达到最优状态价值函数,即 v π ∗ ( s ) = v ∗ ( s ) v_{\pi_{*}}(s)=v_{*}(s) vπ∗(s)=v∗(s)
- 所有最优策略都能达到最优动作-价值函数,即 q π ∗ ( s , a ) = q ∗ ( s , a ) q_{\pi}{*}(s,a)=q_{*}(s,a) qπ∗(s,a)=q∗(s,a)
寻找最优策略
可以通过最大化最优行为价值函数来找到最优策略:
π ∗ ( a ∣ s ) = { 1 if a = arg max a ∈ A q ∗ ( s , a ) 0 otherwise \pi_*(a|s) = \begin{cases} 1 & \text{if } a = \underset{a \in \mathcal{A}}{\arg\max}\ q_*(s, a) \\ 0 & \text{otherwise} \end{cases} π∗(a∣s)=⎩ ⎨ ⎧10if a=a∈Aargmax q∗(s,a)otherwise
- 对于任何MDP问题,总存在一个确定性的最优策略;
- 如果我们得到了最优动作价值函数 q ∗ ( s , a ) q_{*}(s,a) q∗(s,a),则表明我们已经找到了最优策略。
例子:Student MDP的最优策略
v ∗ v_{*} v∗的贝尔曼最优方程
最优值函数通过贝尔曼最优方程递归关联
Q ∗ Q_{*} Q∗的贝尔曼最优方程
v ∗ v_{*} v∗的贝尔曼最优方程(2)
Q ∗ Q_{*} Q∗的贝尔曼最优方程(2)
例子:Student MDP的贝尔曼最优方程
求解贝尔曼最优方程:
尔曼最优方程是非线性的,(一般情况下)没有封闭解,但有许多迭代求解方法来解决:价值迭代(Value Iteration)、策略迭代(Policy Iteration)、Q学习(Q-learning)、Sarsa等
还有一些马尔可夫决策过程(MDPs)的扩展,比如:
- 无限和连续的马尔可夫决策过程(Infinite and continuous MDPs)
- 部分可观测的马尔可夫决策过程(Partially observable MDPs)
- 无折扣、平均奖励的马尔可夫决策过程(Undiscounted, average reward MDPs)
这里不做一一讲解