未来只取决于当前状态,而与过去的历史无关。
The future is independent of the past given the present.
P ( S t + 1 ∣ S t ) = P ( S t + 1 ∣ S 1 , S 2 , ⋯ , S t ) P(S_{t+1}|S_t)=P(S_{t+1}|S_1,S_2,\cdots,S_t) P(St+1∣St)=P(St+1∣S1,S2,⋯,St)
状态转移概率
P s s ′ = P ( S t + 1 = s ′ ∣ S t = s ) P_{ss'}=P(S_{t+1}=s'|S_t=s) Pss′=P(St+1=s′∣St=s)
状态转移矩阵
由状态转移概率组成的大小为 n ∗ n n*n n∗n的矩阵。它每一行描述了从一个节点到达其他节点的概率。
P = [ p 11 , ⋯ , p 1 n ⋮ , ⋯ , ⋮ p n 1 , ⋯ , p n n ] P= \begin{bmatrix} p_{11},&\cdots, &p_{1n} \\ \vdots,&\cdots, &\vdots \\ p_{n1},&\cdots, &p_{nn} \end{bmatrix} P=⎣ ⎡p11,⋮,pn1,⋯,⋯,⋯,p1n⋮pnn⎦ ⎤
给定一个马尔科夫链后,对这个链状态的采样,可以生成很多的轨迹。
定义
马尔科夫奖励过程(Markov Reward Process)是马尔可夫过程再加上了一个奖励函数。它由一个四元组构成: < S , P , R , γ > <S,P,R,γ>
(1)回报
回报是一次抽样轨迹的总折扣奖励。因为我们更希望得到现有的奖励,所以就要把未来奖励打折扣。对于每一个轨迹,我们都可以计算得到它的回报。
G t = R t + 1 + γ R t + 2 + ⋯ γ k R t + 1 + k = ∑ k = 0 ∞ γ k R t + 1 + k G_t=R_{t+1}+\gamma R_{t+2}+\cdots \gamma^kR_{t+1+k}=\sum_{k=0}^{\infty} \gamma^k R_{t+1+k} Gt=Rt+1+γRt+2+⋯γkRt+1+k=k=0∑∞γkRt+1+k
其中, γ \gamma γ为折扣因子,介于 [ 0 , 1 ] [0,1] [0,1]之间。认为距离当前时间步越远的奖励,其重要性就越低。当 γ \gamma γ为0时,只考虑当前奖励。当未来奖励可以提前获得,则不需要折扣计算,令 γ = 1 \gamma=1 γ=1。
① 马尔可夫过程可能带环,我们想避免无穷的奖励。
② 模型的不确定性,对未来的评估是不一定准确的。
③ 希望得到立即奖励,所以就要把未来奖励打折扣。
问题:如何利用一些轨迹的回报计算状态的价值函数呢?
方法一:蒙特卡洛采样(MC)算法:
选择初始进入的某个状态s,产生很多轨迹然后把这些轨迹的回报跌加起来。最后取平均作为状态s的价值。
方法二:Bellman Equation
贝尔曼方程(Bellman Equation)定义了当前状态和未来状态间的迭代关系:当前状态价值 = 即时奖励 + 有折扣的未来价值。
V ( s ) = E ( R t + 1 + γ V ( s t + 1 ) ∣ S t = s ) = R s + γ × ∑ s ′ ∈ S P s s ′ V ( s ′ ) V(s) = E(R_{t+1}+\gamma V(s_{t+1})|S_t=s) \\ = R_s+\gamma \times \sum_{s' \in S}P_{ss'}V(s') V(s)=E(Rt+1+γV(st+1)∣St=s)=Rs+γ×s′∈S∑Pss′V(s′)
推导:
V ( s ) = E [ G t ∣ S t = s ] V(s)=E[G_t|S_t=s] V(s)=E[Gt∣St=s]
= E [ R t + 1 + γ R t + 2 + ⋯ + γ k R t + 1 + k ∣ S t = s ] =E[R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^k R_{t+1+k}|S_t=s] =E[Rt+1+γRt+2+⋯+γkRt+1+k∣St=s]
= E [ R t + 1 ] + γ E [ R t + 2 + ⋯ + γ k − 1 R t + 1 + k ∣ S t = s ] =E[R_{t+1}]+\gamma E[R_{t+2}+\cdots+\gamma^{k-1} R_{t+1+k}|S_t=s] =E[Rt+1]+γE[Rt+2+⋯+γk−1Rt+1+k∣St=s]
= R ( s ) + γ ∑ s ′ ∈ S P s s ′ E [ R t + 2 + ⋯ + γ k − 1 R t + 1 + k ∣ S t = s , S t + 1 = s ′ ] =R(s)+\gamma \sum_{s' \in S}P_{ss'}E[R_{t+2}+\cdots+\gamma^{k-1} R_{t+1+k}|S_t=s,S_{t+1}=s'] =R(s)+γ∑s′∈SPss′E[Rt+2+⋯+γk−1Rt+1+k∣St=s,St+1=s′]
= R ( s ) + γ ∑ s ′ ∈ S P s s ′ E [ R t + 2 + ⋯ + γ k − 1 R t + 1 + k ∣ S t + 1 = s ′ ] =R(s)+\gamma \sum_{s' \in S}P_{ss'}E[R_{t+2}+\cdots+\gamma^{k-1} R_{t+1+k}|S_{t+1}=s'] =R(s)+γ∑s′∈SPss′E[Rt+2+⋯+γk−1Rt+1+k∣St+1=s′]
= R ( s ) + γ ∑ s ′ ∈ S P s s ′ V ( s ′ ) =R(s)+\gamma \sum_{s' \in S}P_{ss'}V(s') =R(s)+γ∑s′∈SPss′V(s′)
当前状态的价值函数由即时奖励与未来奖励的折扣总和相加获得
矩阵形式
[ V ( s 1 ) V ( s 2 ) ⋮ V ( s N ) ] = [ R ( s 1 ) R ( s 2 ) ⋮ R ( s N ) ] + γ [ P s 1 s 1 , P s 1 s 2 , ⋯ , P s 1 s N P s 2 s 1 , P s 2 s 2 , ⋯ , P s 2 s N ⋮ , ⋮ , ⋯ , ⋮ P s N s 1 , P s N s 2 , ⋯ , P s N s N ] [ V ( s 1 ) V ( s 2 ) ⋮ V ( s N ) ] \begin{bmatrix} V(s_1) \\ V(s_2) \\ \vdots \\ V(s_N) \end{bmatrix} = \begin{bmatrix} R(s_1) \\ R(s_2) \\ \vdots \\ R(s_N) \end{bmatrix} + \gamma \begin{bmatrix} P_{s_1s_1},&P_{s_1s_2},&\cdots,&P_{s_1s_N} \\ P_{s_2s_1},&P_{s_2s_2},&\cdots,&P_{s_2s_N} \\ \vdots,&\vdots,&\cdots,&\vdots \\ P_{s_Ns_1},&P_{s_Ns_2},&\cdots,&P_{s_Ns_N} \end{bmatrix} \begin{bmatrix} V(s_1) \\ V(s_2) \\ \vdots \\ V(s_N) \end{bmatrix} ⎣ ⎡V(s1)V(s2)⋮V(sN)⎦ ⎤=⎣ ⎡R(s1)R(s2)⋮R(sN)⎦ ⎤+γ⎣ ⎡Ps1s1,Ps2s1,⋮,PsNs1,Ps1s2,Ps2s2,⋮,PsNs2,⋯,⋯,⋯,⋯,Ps1sNPs2sN⋮PsNsN⎦ ⎤⎣ ⎡V(s1)V(s2)⋮V(sN)⎦ ⎤
将贝尔曼方程写成矩阵形式后,可以直接求解:
V = R + γ P V V = ( 1 − γ P ) − 1 R V = R+\gamma PV \\ V=(1-\gamma P)^{-1}R V=R+γPVV=(1−γP)−1R
因此可以通过矩阵求逆把V价值直接求出来。但时间复杂度为 O ( N 3 ) O(N^3) O(N3),当状态非常多时矩阵求逆很困难。因此解析法求V价值只适用于很小量的马尔可夫奖励过程。
例子
注意在MRP中,即时奖励仅与当前状态相关。 期望值计算如图所示,根据价值函数公式可知,某一状态S的状态函数 V ( S ) V(S) V(S)由奖励函数 R S R_S RS和可转移状态价值函数 V ( S ′ ) V(S') V(S′)的期望决定。假设 γ = 1 \gamma=1 γ=1,则 4.3 = − 2 + 0.6 ∗ 10 + 0.4 ∗ 0.8 4.3 = -2 + 0.6*10+0.4*0.8 4.3=−2+0.6∗10+0.4∗0.8。
可以通过动态规划算法、蒙特卡洛采样、时序差分法学习等方法,求解大型马尔科夫奖励过程
(1)蒙特卡洛模拟
选择初始状态后生成大量轨迹。当生成一定轨迹后,直接用 G t G_t Gt除以轨迹数量,将轨迹的回报期望作为状态价值。
(2)动态规划法
将贝尔曼方程变成一个贝尔曼更新(Bellman update),通过不停的迭代更新每个状态的价值,最终达到收敛而获得每个状态的价值。
定义
MDP就是MRP多引入了动作因子。由于引入了动作,奖励函数 将不再只与状态相关,还与动作相关。现在的奖励函数是初始状态为s下,采取动作a所获得的即时奖励。同时状态转移概率 也发生了变化,表示初始状态s下,采取动作a,状态变为s’的概率。
马尔可夫决策过程与马尔可夫奖励过程的区别
MDP相对于MRP在当前状态跟未来状态转移过程中多了一层决策性。
定义:
策略 π \pi π表示在某个状态下,可采取动作的概率分布。
P s , s ′ π = ∑ a ∈ A t π ( a ∣ s ) P s s ′ a P_{s,s'}^\pi = \sum_{a \in A_t} \pi(a|s)P_{ss'}^a Ps,s′π=a∈At∑π(a∣s)Pss′a
R S π = ∑ a ∈ A t π ( a ∣ s ) R s a R_S^\pi = \sum_{a \in A_t}\pi(a|s)R_s^a RSπ=a∈At∑π(a∣s)Rsa
(1)状态价值函数(state-value function)
初始状态为s,并遵循策略 π \pi π,所能获得的回报的期望。
对比MRP的状态价值函数: v ( s ) = E [ G t ∣ S t = s ] v(s)=E[G_t|S_t=s] v(s)=E[Gt∣St=s]
(2)动作价值函数(action-value function)
初始状态为s,采取动作a,并遵循策略 π \pi π,所能获得的回报的期望。
(1)v函数-q函数
在状态s下,根据策略 π \pi π可以选择不同的动作。因此状态价值函数等于所有可选动作的动作价值的平均值。
(2)q函数-v函数
在初始状态为s,采取动作a后,可以获得立即奖励 R s a R_s^a Rsa。同时根据状态转移概率 P s a P_s^a Psa可以到达不同的下一状态s’。因此动作价值函数等于立即奖励+折扣后的所有可能下一状态价值的平均值。
(3)状态价值函数的贝尔曼方程
将(2)中的q-v关系带入到(1)中便可以获得V函数的贝尔曼方程。
(4)状态动作价值函数的贝尔曼方程
将(1)中的v-q关系带入到(2)中便可以获得Q函数的贝尔曼方程。
(5)举例
V → π → R + γ P V Q → R + γ P π Q V \to \pi \to R+ \gamma PV \\ Q \to R + \gamma P\pi Q V→π→R+γPVQ→R+γPπQ
(1)最优策略
若存在一个策略 π ∗ \pi_* π∗,它的每一个状态下的价值函数都比其他策略高。则策略 π ∗ \pi_* π∗为最佳策略。
(2)寻找最优策略
状态s下的根据最优策略采取的动作应该是最大状态动作价值函数所对应的动作。因此一个固定的最佳策略可以将它最大q值所对应的动作的概率设置为1,同时将其他可能动作的概率设置为0.
(1)v-q
最优策略 π ∗ \pi_* π∗下,最大Q值的动作的概率为1,其余为0.
(2)q-v
(3)贝尔曼最优方程
(4)举例
v → m a x { R + γ P v } v \to max\{R+\gamma Pv \} v→max{R+γPv}
(1)定义
知道一个马尔可夫决策过程以及要采取的决策 π \pi π,计算价值函数 v π ( s ) v^\pi(s) vπ(s)的过程。
(2)价值预测(value prediction)
通过贝尔曼期望方程,不停的迭代,直到所有状态价值收敛。收敛过后,状态的值便是其价值。
v π ( s ) = ∑ a ∈ A t π ( a ∣ s ) ( R ( s , a ) + ∑ s ′ ∈ S P ( s ′ ∥ s , a ) v π ( s ′ ) ) v^\pi(s)=\sum_{a \in A_t}\pi(a|s)(R(s,a)+\sum_{s' \in S}P(s' \|s,a)v^\pi(s')) vπ(s)=a∈At∑π(a∣s)(R(s,a)+s′∈S∑P(s′∥s,a)vπ(s′))
[1] 莫凡Python:https://www.bilibili.com/video/BV13W411Y75P?p=13
[2] 强化学习笔记:https://www.jianshu.com/p/fb33231ac3a8
[3] https://github.com/datawhalechina/easy-rl
[4] David_Silver:https://www.davidsilver.uk/teaching/