强化学习——马尔科夫决策过程 MDP

马尔可夫决策过程是强化学习里面的一个基本框架。 马尔可夫过程、马尔可夫反馈过程是马尔可夫决策过程的基础,所以本博客将会一并介绍。

1. 马尔科夫过程 Markov Process,MP

1.1. 马尔科夫性质 Markov Property

马尔可夫性质指明了什么样的过程可以被称为马尔可夫过程。

如果一个Agent的状态转移是符合马尔可夫过程的,那就是说Agent的下一个状态只取决于它的当前状态,而与它之前的状态都没有关系。

我们设Agent的状态历史为 h t = { s 1 , s 2 , . . . , s t } h_t=\{s_1,s_2,...,s_t\} ht={s1,s2,...,st} h t h_t ht即所有发生过的状态,其中 s t s_t st是当前状态

如果 h t h_t ht中的状态转移是符合马尔可夫过程的,也即满足如下条件: p ( s t + 1 ∣ s t ) = p ( s t + 1 ∣ h t ) p(s_{t+1}|s_t)=p(s_{t+1}|h_t) p(st+1st)=p(st+1ht) p ( s t + 1 ∣ s t , a t ) = p ( s t + 1 ∣ h t , a t ) p(s_{t+1}|s_t,a_t)=p(s_{t+1}|h_t,a_t) p(st+1st,at)=p(st+1ht,at)Agent从当前的状态 s t s_t st转移到下一个状态 s t + 1 s_{t+1} st+1就相当于把之前所有的状态 h t h_t ht转移到 s t + 1 s_{t+1} st+1。说明Agent未来的状态转移跟过去是独立的,只取决于现在。

1.2. 马尔科夫链 Markov Chain

马尔科夫链也称马尔科夫过程。为了形象地说明马尔科夫链,我们看看下面这张图:
在这里插入图片描述

图中有4个状态: s 1 , s 2 , s 3 , s 4 s_1,s_2,s_3,s_4 s1,s2,s3,s4Agent的状态在这4个状态之间相互转换
比如说Agent现在处于状态 s 1 s_1 s1,那么下一个状态可能是:

  • 有0.1的概率保持状态 s 1 s_1 s1不变;
  • 有0.2的概率从状态 s 1 s_1 s1转移到状态 s 2 s_2 s2
  • 有0.3的概率从状态 s 1 s_1 s1转移到状态 s 4 s_4 s4

状态 s 4 s_4 s4

  • s 4 s_4 s4有0.5的概率保持状态不变;
  • s 4 s_4 s4有0.3的概率转移到 s 1 s_1 s1
  • s 4 s_4 s4有0.2的概率转移到 s 3 s_3 s3

我们可以用状态转移矩阵(State Transition Matrix)来描述这样的状态转移,状态转移矩阵中的每一个元素表示为: p ( s t + 1 = s ′ ∣ s t = s ) p(s_{t+1}=s'|s_t=s) p(st+1=sst=s),总体表达为:
[ p ( s 1 ∣ s 1 ) p ( s 2 ∣ s 1 ) p ( s 3 ∣ s 1 ) p ( s 4 ∣ s 1 ) p ( s 1 ∣ s 2 ) p ( s 2 ∣ s 2 ) p ( s 3 ∣ s 2 ) p ( s 4 ∣ s 2 ) p ( s 1 ∣ s 3 ) p ( s 2 ∣ s 3 ) p ( s 3 ∣ s 3 ) p ( s 4 ∣ s 3 ) p ( s 1 ∣ s 4 ) p ( s 2 ∣ s 4 ) p ( s 3 ∣ s 4 ) p ( s 4 ∣ s 4 ) ] ⇒ [ 0.1 0.2 0 0.7 1 0 0 0 0 1 0 0 0 0.3 0.2 0.5 ] \begin{bmatrix} p(s_1|s_1) & p(s_2|s_1) & p(s_3|s_1) & p(s_4|s_1) \\ p(s_1|s_2) & p(s_2|s_2) & p(s_3|s_2) & p(s_4|s_2)\\ p(s_1|s_3) & p(s_2|s_3) & p(s_3|s_3) & p(s_4|s_3)\\ p(s_1|s_4) & p(s_2|s_4) & p(s_3|s_4) & p(s_4|s_4)\\ \end{bmatrix}\Rightarrow \begin{bmatrix} 0.1 & 0.2 & 0 & 0.7 \\ 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0.3 & 0.2 & 0.5\\ \end{bmatrix} p(s1s1)p(s1s2)p(s1s3)p(s1s4)p(s2s1)p(s2s2)p(s2s3)p(s2s4)p(s3s1)p(s3s2)p(s3s3)p(s3s4)p(s4s1)p(s4s2)p(s4s3)p(s4s4)0.11000.2010.30000.20.7000.5
状态转移矩阵类似于一个条件概率矩阵(Conditional Probability Matrix),即它每一行都描述了从一个状态到达所有其它状态的概率。

下面我们举例一个马尔科夫链:
在这里插入图片描述

上图有七个状态,比如说从 s 1 s_1 s1有 0.4 的概率转移到 s 2 s_2 s2、 0.6 的概率继续保持当前的状态。 s 2 s_2 s2有0.4的概率转移到 s 3 s_3 s3、0.4的概率转移到 s 1 s_1 s1、0.2的概率继续保持当前的状态。

所以给定了这个状态转移的马尔可夫链后,我们可以对链进行采样,每次采样都会得到一串的轨迹。例如下面三条轨迹:

  • s 3 → s 4 → s 5 → s 6 → s 6 s_3\rightarrow s_4\rightarrow s_5 \rightarrow s_6 \rightarrow s_6 s3s4s5s6s6
  • s 3 → s 2 → s 3 → s 2 → s 1 s_3\rightarrow s_2\rightarrow s_3 \rightarrow s_2 \rightarrow s_1 s3s2s3s2s1
  • s 3 → s 4 → s 5 → s 6 → s 7 s_3\rightarrow s_4\rightarrow s_5 \rightarrow s_6 \rightarrow s_7 s3s4s5s6s7

通过对马尔可夫链的采样,就可以生成很多这样的轨迹。

2. 马尔科夫反馈过程 Markov Reward Process,MRP

2.1. 具有反馈值的马尔科夫过程

在马尔科夫链中加上反馈作为权重,就构成了马尔科夫反馈过程(MRP),例如:
在这里插入图片描述

在上面的马尔科夫链中规定反馈向量为: R = [ 5 , 0 , 0 , 0 , 0 , 0 , 0 , 7 ] R=[5,0,0,0,0,0,0,7] R=[5,0,0,0,0,0,0,7]也就是说到达状态 s 1 s_1 s1时可以获得5反馈,到达状态 s 7 s_7 s7时可以获得7反馈,其它状态没有任何反馈。这样的设定就可以引导马尔科夫链向某些特定的状态进行转移。

2.2. 回报和价值函数 Return and Value function

单步的马尔科夫链的反馈可以通过反馈向量 R R R直接计算得到,一个马尔科夫轨迹的反馈就需要进行一些变化才可以计算得到。

为了计算一个马尔科夫轨迹的反馈,我们定义了一个概念,称为回报(Return),它代表了折扣后的反馈值。Return 可以表示为反馈的逐步叠加,如下式所示: G t = γ 0 R t + 1 + γ 1 R t + 2 + γ 2 R t + 3 + γ 3 R t + 4 + . . . + γ T − ( t + 1 ) R T G_t=\gamma^0 R_{t+1}+\gamma^1 R_{t+2}+\gamma^2 R_{t+3}+\gamma^3 R_{t+4}+...+\gamma^{T-(t+1)} R_{T} Gt=γ0Rt+1+γ1Rt+2+γ2Rt+3+γ3Rt+4+...+γT(t+1)RT其中 γ ∈ [ 0 , 1 ] \gamma\in[0,1] γ[0,1],称为折扣因子。

MRP求回报的过程:

假设马尔科夫反馈过程如下所示
在这里插入图片描述
在上述马尔科夫反馈过程中,反馈向量为 R = [ 5 , 0 , 0 , 0 , 0 , 0 , 0 , 7 ] R=[5,0,0,0,0,0,0,7] R=[5,0,0,0,0,0,0,7],设折扣因子 γ = 1 2 \gamma=\frac{1}{2} γ=21,则:

  • s 3 → s 4 → s 5 → s 6 → s 6 : 0 + 1 2 × 0 + 1 4 × 0 + 1 8 × 0 + 1 16 × 0 = 0 s_3\rightarrow s_4\rightarrow s_5 \rightarrow s_6 \rightarrow s_6:0+\frac{1}{2}\times 0+ \frac{1}{4}\times0+\frac{1}{8}\times0+\frac{1}{16}\times0=0 s3s4s5s6s60+21×0+41×0+81×0+161×0=0
  • s 3 → s 2 → s 3 → s 2 → s 1 : 0 + 1 2 × 0 + 1 4 × 0 + 1 8 × 0 + 1 16 × 5 = 0.3125 s_3\rightarrow s_2\rightarrow s_3 \rightarrow s_2 \rightarrow s_1:0+\frac{1}{2}\times 0+ \frac{1}{4}\times0+\frac{1}{8}\times0+\frac{1}{16}\times5=0.3125 s3s2s3s2s10+21×0+41×0+81×0+161×5=0.3125
  • s 3 → s 4 → s 5 → s 6 → s 7 : 0 + 1 2 × 0 + 1 4 × 0 + 1 8 × 0 + 1 16 × 7 = 0.4375 s_3\rightarrow s_4\rightarrow s_5 \rightarrow s_6 \rightarrow s_7:0+\frac{1}{2}\times 0+ \frac{1}{4}\times0+\frac{1}{8}\times0+\frac{1}{16}\times7=0.4375 s3s4s5s6s70+21×0+41×0+81×0+161×7=0.4375

有了回报就可以定义状态的价值函数(State Value Function)了。对于 MRP,状态的价值函数被定义为回报的期望,如下式所示: V t = s = E [ G t ∣ s t = s ] = E [ R t + 1 + γ 1 R t + 2 + γ 2 R t + 3 + γ 3 R t + 4 + . . . + γ T − ( t + 1 ) R T ∣ s t = s ] \begin{aligned} V_{t=s} & = \mathbb{E}[G_{t}|s_t=s] \\ & = \mathbb{E}[R_{t+1}+\gamma^1 R_{t+2}+\gamma^2 R_{t+3}+\gamma^3 R_{t+4}+...+\gamma^{T-(t+1)} R_{T}|s_t=s] \\ \end{aligned} Vt=s=E[Gtst=s]=E[Rt+1+γ1Rt+2+γ2Rt+3+γ3Rt+4+...+γT(t+1)RTst=s]

价值函数也可以看做是未来可能获得的反馈的贴现,就是当马尔科夫链进入某一个状态时,就具有多大的价值。

2.3. 折扣因子 Discount Factor

折扣因子是马尔科夫反馈过程中的要素,之所以引入它,有多方面的原因:

  • 有些马尔可夫反馈过程是带环的,没有起始,折扣因子可以避免无穷的反馈;
  • 马尔科夫反馈过程并不能完美地模拟环境,仍然存在不确定性。如果某个反馈是有实际价值的,我们更希望立刻就得到奖励,而不是放弃既得利益去选择充满不确定性的未来利益。折扣因子可以用来表示马尔科夫反馈过程中的风险,使马尔科夫链更加倾向于选择近期的高回报状态;
  • 折扣因子是可以调整的,例如当折扣因子设为0时,就相当于只关注了下一步反馈。当折扣因子设为1时,就相当于对未来并没有折扣,未来的每一步获得的奖励都是一样的。

2.4. 价值函数的求解

2.4.1. 动态规划法
2.4.1.1. 动态规划过程

动态规划(Dynamic Programming,DP)适合解决满足如下两个性质的问题:

  • 最优子结构(optimal substructure)。即动态规划法将问题可以拆分成一个个的小问题,通过解决并组合小问题的答案,得到大问题的答案,即最优解;
  • 重叠子问题(Overlapping subproblems)。当相同的子问题出现多次,那么该子问题的解决方案能够被重复使用。

动态规划法构造了一个贝尔曼等式(Bellman Equation),贝尔曼等式的求解过程可以分解成一个递归结构。每执行一步递归,就相当于解决了一个子问题,此时就能得到一个子状态,由于Agent的未来状态与子状态相关联,那么也就可以继续推算出未来的整体状态。同时在递归的过程中,价值函数可以储存并重用它的最佳的解。

但是动态规划只能应用于MDP的规划问题(Planning)而不是学习问题(Learning),Agent必须对环境是完全已知才能做动态规划,直观的说,就是要知道状态转移概率和对应的Reward才行

2.4.1.2. 贝尔曼等式的定义

贝尔曼等式是一种计算价值函数的工具,它表示了当前状态与未来状态的迭代关系,表示当前状态的值函数可以通过下个状态的值函数来计算。Bellman Equation 因其提出者、动态规划创始人 Richard Bellman 而得名 ,也称作“动态规划方程”。

其公式为: V ( s ) = R ( s ) ⏟ Immediate Reward + γ ∑ s ′ ∈ S P ( s ′ ∣ s ) V ( s ′ ) ⏟ Discounted sum of future reward V(s)=\underbrace{R(s)}_{\text{Immediate Reward}}+\underbrace{\gamma\sum_{s'\in S}P(s'|s)V(s')}_{\text{Discounted sum of future reward}} V(s)=Immediate Reward R(s)+Discounted sum of future reward γsSP(ss)V(s)其中, V ( s ) V(s) V(s)是指当前状态的价值; s ′ s' s是未来的所有状态; γ \gamma γ是折扣因子; P ( s ′ ∣ s ) P(s'|s) P(ss)是指从当前状态转移到未来状态的概率; V ( s ′ ) V(s') V(s)代表未来某一个状态的价值。

贝尔曼等式定义了状态之间的迭代关系。假设有一个马尔可夫转移链如下所示。
在这里插入图片描述

贝尔曼等式描述的就是当前状态到未来状态的转移。假如当前状态是 s 1 s_1 s1,那么它未来的状态有三种可能:

  • 有0.1的概率留在当前的状态;
  • 有0.2的概率转移到状态 s 2 s_2 s2
  • 有0.7的概率转移到状态 s 4 s_4 s4;

如下图所示:
在这里插入图片描述

把转移概率乘以未来状态的价值,再加上它的本身具有的价值就会得到它当前状态的价值。

贝尔曼等式也可以写成矩阵的形式,对照如下: V = R + γ P V V=R+\gamma PV V=R+γPV [ 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 2 ∣ s 1 ) ⋯ p ( s N ∣ s 1 ) p ( s 1 ∣ s 2 ) p ( s 2 ∣ s 2 ) ⋯ p ( s N ∣ s 2 ) ⋮ ⋮ ⋱ ⋮ p ( s 1 ∣ s N ) p ( s 2 ∣ s N ) ⋯ 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_1|s_1) & p(s_2|s_1) & \cdots & p(s_N|s_1) \\ p(s_1|s_2) & p(s_2|s_2) & \cdots & p(s_N|s_2)\\ \vdots & \vdots & \ddots & \vdots\\ p(s_1|s_N) & p(s_2|s_N) & \cdots & p(s_N|s_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)+γp(s1s1)p(s1s2)p(s1sN)p(s2s1)p(s2s2)p(s2sN)p(sNs1)p(sNs2)p(sNsN)V(s1)V(s2)V(sN)当我们把贝尔曼等式写成矩阵形式后,可以直接求得其解析解: V = R + γ P V E V = R + γ P V ( E − γ P ) V = R V = ( E − γ P ) − 1 R \begin{aligned} V & = R+\gamma PV \\ EV& = R+\gamma PV \\ (E-\gamma P)V & = R \\ V & = (E-\gamma P)^{-1}R \\ \end{aligned} VEV(EγP)VV=R+γPV=R+γPV=R=(EγP)1R其中 E E E是一个单位阵

该解析解的求解复杂度是 O ( n 3 ) O(n^3) O(n3),所以当状态非常多的时候,求解十分困难,一般就不会用这种方法进行价值求解。

2.4.1.3. 贝尔曼等式的推导

下面我们将证明贝尔曼等式可以表示未来状态的回报,也即证明它可以当做一个价值函数。数学表示为: E [ V ( s t + 1 ) ∣ s t ] = E [ G t + 1 ∣ s t ] \mathbb{E}[V(s_{t+1})|s_t]=\mathbb{E}[G_{t+1}|s_{t}] E[V(st+1)st]=E[Gt+1st]

由价值函数的定义得: E [ V ( s t + 1 ) ∣ s t ] = E [ E [ G t + 1 ∣ s t + 1 ] ∣ s t ] \mathbb{E}[V(s_{t+1})|s_t]=\mathbb{E}[\mathbb{E}[G_{t+1}|s_{t+1}]|s_t] E[V(st+1)st]=E[E[Gt+1st+1]st]此时我们将原命题转换为求证: E [ E [ G t + 1 ∣ s t + 1 ] ∣ s t ] = E [ G t + 1 ∣ s t ] \mathbb{E}[\mathbb{E}[G_{t+1}|s_{t+1}]|s_t]=\mathbb{E}[G_{t+1}|s_{t}] E[E[Gt+1st+1]st]=E[Gt+1st]由全概率公式可得:

E [ G t + 1 ∣ s t + 1 ] = ∑ G t + 1 G t + 1 P ( G t + 1 ∣ s t + 1 ) \mathbb{E}[G_{t+1}|s_{t+1}]=\sum_{G_{t+1}}G_{t+1}P(G_{t+1}|s_{t+1}) E[Gt+1st+1]=Gt+1Gt+1P(Gt+1st+1)

全概率公式(Law of total expectation):
E ( X ) = ∑ i E ( X ∣ A i ) P ( A i ) E(X)=\sum_{i}E(X|A_i)P(A_i) E(X)=iE(XAi)P(Ai)

则此时有: E [ E [ G t + 1 ∣ s t + 1 ] ∣ s t ] = ∑ s t + 1 ∑ G t + 1 G t + 1 P ( G t + 1 ∣ s t + 1 , s t ) P ( s t + 1 ∣ s t ) = ∑ s t + 1 ∑ G t + 1 G t + 1 P ( G t + 1 ∣ s t + 1 , s t ) P ( s t + 1 ∣ s t ) P ( s t ) P ( s t ) = ∑ s t + 1 ∑ G t + 1 G t + 1 P ( G t + 1 ∣ s t + 1 , s t ) P ( s t + 1 , s t ) P ( s t ) = ∑ s t + 1 ∑ G t + 1 G t + 1 P ( G t + 1 , s t + 1 , s t ) P ( s t ) = ∑ s t + 1 ∑ G t + 1 G t + 1 P ( G t + 1 , s t + 1 ∣ s t ) = ∑ G t + 1 ∑ s t + 1 G t + 1 P ( G t + 1 , s t + 1 ∣ s t ) = ∑ G t + 1 G t + 1 P ( G t + 1 ∣ s t ) = E [ G t + 1 ∣ s t ] \begin{aligned} \mathbb{E}[\mathbb{E}[G_{t+1}|s_{t+1}]|s_t] & = \sum_{s_{t+1}}\sum_{G_{t+1}}G_{t+1}P(G_{t+1}|s_{t+1},s_t)P(s_{t+1}|s_{t}) \\ & = \sum_{s_{t+1}}\sum_{G_{t+1}}\frac{G_{t+1}P(G_{t+1}|s_{t+1},s_t)P(s_{t+1}|s_{t})P(s_t)}{P(s_t)}\\ & = \sum_{s_{t+1}}\sum_{G_{t+1}}\frac{G_{t+1}P(G_{t+1}|s_{t+1},s_t)P(s_{t+1},s_{t})}{P(s_t)}\\ & = \sum_{s_{t+1}}\sum_{G_{t+1}}\frac{G_{t+1}P(G_{t+1},s_{t+1},s_t)}{P(s_t)}\\ & = \sum_{s_{t+1}}\sum_{G_{t+1}}G_{t+1}P(G_{t+1},s_{t+1}|s_t)\\ & = \sum_{G_{t+1}}\sum_{s_{t+1}}G_{t+1}P(G_{t+1},s_{t+1}|s_t)\\ & = \sum_{G_{t+1}}G_{t+1}P(G_{t+1}|s_t)\\ & = \mathbb{E}[G_{t+1}|s_t]\\ \end{aligned} E[E[Gt+1st+1]st]=st+1Gt+1Gt+1P(Gt+1st+1,st)P(st+1st)=st+1Gt+1P(st)Gt+1P(Gt+1st+1,st)P(st+1st)P(st)=st+1Gt+1P(st)Gt+1P(Gt+1st+1,st)P(st+1,st)=st+1Gt+1P(st)Gt+1P(Gt+1,st+1,st)=st+1Gt+1Gt+1P(Gt+1,st+1st)=Gt+1st+1Gt+1P(Gt+1,st+1st)=Gt+1Gt+1P(Gt+1st)=E[Gt+1st]即得: E [ V ( s t + 1 ) ∣ s t ] = E [ E [ G t + 1 ∣ s t + 1 ] ∣ s t ] = E [ G t + 1 ∣ s t ] \mathbb{E}[V(s_{t+1})|s_t]=\mathbb{E}[\mathbb{E}[G_{t+1}|s_{t+1}]|s_t]=\mathbb{E}[G_{t+1}|s_{t}] E[V(st+1)st]=E[E[Gt+1st+1]st]=E[Gt+1st]这说明贝尔曼等式可以表示Agent在某一状态时的价值。

贝尔曼等式的推导: V ( s ) = E [ G t ∣ s t = s ] = E [ R t + 1 + γ 1 R t + 2 + γ 2 R t + 3 + . . . + γ T − ( t + 1 ) R T ∣ s t = s ] = R ( R t + 1 ∣ s t = s ) + γ E [ R t + 2 + γ 1 R t + 3 + . . . + γ T − ( t + 1 ) − 1 R T ∣ s t = s ] = R ( s ) + γ E [ G t + 1 ∣ s t = s ] = R ( s ) + γ E [ V ( s t + 1 ) ∣ s t = s ] = R ( s ) + γ ∑ s ′ ∈ s P ( s ′ ∣ s ) V ( s ′ ) \begin{aligned} V(s) & = \mathbb{E}[G_{t}|s_t=s] \\ & = \mathbb{E}[R_{t+1}+\gamma^1 R_{t+2}+\gamma^2 R_{t+3}+...+\gamma^{T-(t+1)} R_{T}|s_t=s]\\ & = R(R_{t+1}|s_t=s) + \gamma\mathbb{E}[R_{t+2}+\gamma^1 R_{t+3}+...+\gamma^{T-(t+1)-1} R_{T}|s_t=s] \\ & = R(s)+\gamma\mathbb{E}[G_{t+1}|s_t=s] \\ & = R(s) + \gamma\mathbb{E}[V(s_{t+1})|s_t=s] \\ & = R(s) + \gamma\sum_{s'\in s}P(s'|s)V(s') \\ \end{aligned} V(s)=E[Gtst=s]=E[Rt+1+γ1Rt+2+γ2Rt+3+...+γT(t+1)RTst=s]=R(Rt+1st=s)+γE[Rt+2+γ1Rt+3+...+γT(t+1)1RTst=s]=R(s)+γE[Gt+1st=s]=R(s)+γE[V(st+1)st=s]=R(s)+γssP(ss)V(s)

2.4.2. 蒙特卡罗采样法 Monte Carlo Sampling

蒙特卡罗法的思想很简单,就是尽可能多的采集马尔科夫链的轨迹,产生了一个轨迹就可以得到一个反馈,直接把轨迹的折扣反馈 G t G_t Gt算出来,然后把所有轨迹的折扣反馈积累起来除以轨迹的数量,得到价值的期望。

例如在以下马尔科夫反馈过程中,对当前状态 s 3 s_3 s3采样了3条轨迹:
在这里插入图片描述
马尔科夫反馈过程的反馈向量为 R = [ 5 , 0 , 0 , 0 , 0 , 0 , 0 , 7 ] R=[5,0,0,0,0,0,0,7] R=[5,0,0,0,0,0,0,7],设折扣因子 γ = 1 2 \gamma=\frac{1}{2} γ=21

  • s 3 → s 4 → s 5 → s 6 → s 6 : 0 + 1 2 × 0 + 1 4 × 0 + 1 8 × 0 + 1 16 × 0 = 0 s_3\rightarrow s_4\rightarrow s_5 \rightarrow s_6 \rightarrow s_6:0+\frac{1}{2}\times 0+ \frac{1}{4}\times0+\frac{1}{8}\times0+\frac{1}{16}\times0=0 s3s4s5s6s60+21×0+41×0+81×0+161×0=0
  • s 3 → s 2 → s 3 → s 2 → s 1 : 0 + 1 2 × 0 + 1 4 × 0 + 1 8 × 0 + 1 16 × 5 = 0.3125 s_3\rightarrow s_2\rightarrow s_3 \rightarrow s_2 \rightarrow s_1:0+\frac{1}{2}\times 0+ \frac{1}{4}\times0+\frac{1}{8}\times0+\frac{1}{16}\times5=0.3125 s3s2s3s2s10+21×0+41×0+81×0+161×5=0.3125
  • s 3 → s 4 → s 5 → s 6 → s 7 : 0 + 1 2 × 0 + 1 4 × 0 + 1 8 × 0 + 1 16 × 7 = 0.4375 s_3\rightarrow s_4\rightarrow s_5 \rightarrow s_6 \rightarrow s_7:0+\frac{1}{2}\times 0+ \frac{1}{4}\times0+\frac{1}{8}\times0+\frac{1}{16}\times7=0.4375 s3s4s5s6s70+21×0+41×0+81×0+161×7=0.4375

则其价值期望为: V ( s 3 ) = 0 + 0.3125 + 0.4375 3 = 0.25 V(s_3)=\frac{0+0.3125+0.4375}{3}=0.25 V(s3)=30+0.3125+0.4375=0.25

2.4.3. 时序差分学习法 TD-Learning

时序差分学习 (Temporal-Difference Learning,TD-Learning)是动态规划和蒙特卡罗的一个结合。它用动态规划的方法来计算蒙特卡罗法中的回报 G t G_t Gt

蒙特卡罗每次都需要等到Agent到达轨迹终点时才能进行回报 G t G_t Gt的更新;而对于TD learning来说,Agent每进行一个状态变化都可以更新一次回报 G t G_t Gt,不需要等到到达轨迹终点才进行更新。

3. 马尔科夫决策过程 Markov Decision Process,MDP

3.1. 具有策略的马尔科夫反馈过程

相对于马尔科夫反馈过程,马尔可夫决策过程(Markov Decision Process,MDP)多了Decision,也就是Action。其它的定义跟 MRP 都是类似的。

MDP的状态转移表达式变成了: P ( s t + 1 = s ′ ∣ s t = s , a t = a ) P(s_{t+1}=s'|s_t=s,a_t=a) P(st+1=sst=s,at=a)含义为,未来的状态不仅是依赖于Agent当前的状态,也依赖于在当前状态所采取的Action(某一个策略的输出)。

MDP的价值函数同样也多了一个当前动作,变成了: R ( s t = s , a t = a ) = E [ r t ∣ s t = s , a t = a ] R(s_t=s,a_t=a)=\mathbb{E}[r_t|s_t=s,a_t=a] R(st=s,at=a)=E[rtst=s,at=a]含义为,当前Agent的状态以及采取的动作会决定Agent在当前可能得到多少奖励。

3.2. 策略函数 Policy Function

3.2.1. 策略函数的定义

Policy 就是产生决策的函数,它决定了Agent在某一个状态应该采取什么样的Action。当Agent获取到当前状态 s s s后,将当前状态带入策略函数 π \pi π,就可以得到一个概率,即: π ( a ∣ s ) = P ( a t = a ∣ s t = s ) \pi(a|s)=P(a_t=a|s_t=s) π(as)=P(at=ast=s)这个概率就代表了所有可能的动作,比如可能有 0.7 的概率往左走,有 0.3 的概率往右走,这是一个条件概率的表示。

3.2.2. MDP与MRP

MDP的状态转移与MRP以及MP有明显的差异,MP与MRP的转移是直接就决定。比如当前状态是 s s s,那么下一个状态就直接通过转移概率决定。

MDP多了一个动作 a ,也就是Agent处于当前状态时,首先要决定采取某一种动作,但是由于动作也是概率的,因此得到的未来状态也是一个概率分布,而不是像MRP与MP那样得到一个确定的状态转移。

虽然在一些情况下我们也可以设定MDP的策略直接输出一个确定的动作,例如直接取概率最大的动作输出,但这种情况只是在众多概率中选择了一个,并不是只有唯一的一个状态转移。

在已知一个MDP和一个策略 π \pi π的情况下,就可以把MDP转换成MRP。在MDP中,转移函数 P ( s ′ ∣ s , a ) P(s'|s,a) P(ss,a)取决于Agent当前状态以及行为。

在这里插入图片描述

因为根据策略 π \pi π就可以知道它可能采取的动作的概率,那么就可以直接对Action进行求和把a去掉,这样就可以得到了MRP的转移。对于反馈函数,也可以用同样的方法把Action消去,这样就得到了对应MRP的反馈函数: P π ( s ′ ∣ s ) = ∑ a ∈ A π ( a ∣ s ) P ( s ′ ∣ s , a ) P^\pi(s'|s)=\sum_{a\in A}\pi(a|s)P(s'|s,a) Pπ(ss)=aAπ(as)P(ss,a) R π ( s ) = ∑ a ∈ A π ( a ∣ s ) R ( s , a ) R^\pi(s)=\sum_{a\in A}\pi(a|s)R(s,a) Rπ(s)=aAπ(as)R(s,a)

3.3. 状态-价值函数 state-value function

状态-价值函数即指MDP中的价值函数,它由策略 π \pi π决定。

为了表示策略对价值函数的影响,我们引入Q函数(Q-function),Q函数也称为Action-Value Function。Q 函数表示了在某一个状态采取某一个动作时得到的反馈期望值: 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π[Gtst=s,at=a]这里的 q π ( s , a ) q^\pi(s,a) qπ(s,a)代表了某种状态下采取某种策略的反馈期望值,将 q π q^\pi qπ与它对应的策略 π \pi π的乘积进行求和即可得到价值函数 v π ( s ) v^\pi(s) vπ(s) v π ( s ) = ∑ a ∈ A π ( a ∣ s ) q π ( s , a ) v^\pi(s)=\sum_{a\in A}\pi(a|s)q^\pi(s,a) vπ(s)=aAπ(as)qπ(s,a)Q函数的贝尔曼等式表示为: q π ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ s P ( s ′ ∣ s , a ) v π ( s ′ ) q^\pi(s,a)= R(s,a) + \gamma\sum_{s'\in s}P(s'|s,a)v^\pi(s') qπ(s,a)=R(s,a)+γssP(ss,a)vπ(s)

根据上面 v π ( s ) v^\pi(s) vπ(s) q π ( s , a ) q^\pi(s,a) qπ(s,a)的表达式,相互代入可得: v π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ s P ( s ′ ∣ s , a ) v π ( s ′ ) ) q π ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ s P ( s ′ ∣ s , a ) ∑ a ′ ∈ A π ( a ′ ∣ s ) q π ( s , a ′ ) \begin{aligned} v^\pi(s) & = \sum_{a\in A}\pi(a|s)\biggl( R(s,a) + \gamma\sum_{s'\in s}P(s'|s,a)v^\pi(s')\biggr) \\ q^\pi(s,a) & = R(s,a) + \gamma\sum_{s'\in s}P(s'|s,a)\sum_{a'\in A}\pi(a'|s)q^\pi(s,a') \end{aligned} vπ(s)qπ(s,a)=aAπ(as)(R(s,a)+γssP(ss,a)vπ(s))=R(s,a)+γssP(ss,a)aAπ(as)qπ(s,a)

状态-价值函数和 Q 函数也可以表示成回报期望值的形式:

v π ( s ) = E π [ R t + 1 + γ v π ( s t + 1 ) ∣ s t = s ] q π ( s , a ) = E π [ R t + 1 + γ q π ( s t + 1 , a t + 1 ) ∣ s t = s , a t = a ] \begin{aligned} v^\pi(s) & = \mathbb{E}_\pi[R_{t+1}+\gamma v^\pi(s_{t+1})|s_t=s] \\ q^\pi(s,a) & = \mathbb{E}_{\pi}[R_{t+1}+\gamma q^\pi(s_{t+1},a_{t+1})|s_t=s,a_t=a] \\ \end{aligned} vπ(s)qπ(s,a)=Eπ[Rt+1+γvπ(st+1)st=s]=Eπ[Rt+1+γqπ(st+1,at+1)st=s,at=a]

3.4. 回溯 Backup

在马尔科夫过程中有一个重要概念叫回溯(Backup)。Backup 是类似于 Bootstrapping 的迭代关系,它表达了价值信息是如何从一个状态(动作-状态对)的后继状态(动作-状态对)转移回它的过程,可以类比于神经网络算法的反向传播。

如下图是状态-价值函数的计算分解图,每一个空心圆圈代表一个状态,每一个实心圆圈代表一个状态-动作对。
在这里插入图片描述

上图中有两层求和:

  • 第一层求和是叶结点向上求和,就可以把未来的价值( s ′ s' s的价值)回溯到黑色的节点;
  • 第二层求和是Action向上求和,在得到黑色节点的价值过后,再往上回溯一层,就可以推导出根节点的价值,即当前状态的价值。

上图B给出了状态-价值函数与Q函数之间的关系,它的计算式表达为: v π ( s ) = ∑ a ∈ A π ( a ∣ s ) q π ( s , a ) v^\pi(s)=\sum_{a\in A}\pi(a|s)q^\pi(s,a) vπ(s)=aAπ(as)qπ(s,a)C的计算式表达为: q π ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ s P ( s ′ ∣ s , a ) v π ( s ′ ) q^\pi(s,a)= R(s,a) + \gamma\sum_{s'\in s}P(s'|s,a)v^\pi(s') qπ(s,a)=R(s,a)+γssP(ss,a)vπ(s)

所以以上回溯过程就是 v π ( s ) v^\pi(s) vπ(s)的计算公式所要表达的,将 q π ( s , a ) q^\pi(s,a) qπ(s,a)带入 v π ( s ) v^\pi(s) vπ(s)得: v π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ s P ( s ′ ∣ s , a ) v π ( s ′ ) ) v^\pi(s) = \sum_{a\in A}\pi(a|s)\biggl( R(s,a) + \gamma\sum_{s'\in s}P(s'|s,a)v^\pi(s')\biggr) vπ(s)=aAπ(as)(R(s,a)+γssP(ss,a)vπ(s))

如下图是Q函数的计算分解图,每一个空心圆圈代表一个状态,每一个实心圆圈代表一个状态-动作对。

在这里插入图片描述

上图中有两层求和:

  • 第一层求和是先把叶子节点从状态-动作对回溯到状态;
  • 第二层求和是当回溯到状态后,再对这些状态进行求和,将它们回溯到当前时刻的动作-状态对,也即Q函数。

在上图C的计算表达式为: v π ( s ) = ∑ a ∈ A π ( a ∣ s ) q π ( s , a ) v^\pi(s)=\sum_{a\in A}\pi(a|s)q^\pi(s,a) vπ(s)=aAπ(as)qπ(s,a)B的计算表达式为: q π ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ s P ( s ′ ∣ s , a ) v π ( s ′ ) q^\pi(s,a)= R(s,a) + \gamma\sum_{s'\in s}P(s'|s,a)v^\pi(s') qπ(s,a)=R(s,a)+γssP(ss,a)vπ(s)先回溯C,再回溯B,即将C带入到B中可得: q π ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ s P ( s ′ ∣ s , a ) ∑ a ′ ∈ A π ( a ′ ∣ s ) q π ( s , a ′ ) q^\pi(s,a) = R(s,a) + \gamma\sum_{s'\in s}P(s'|s,a)\sum_{a'\in A}\pi(a'|s)q^\pi(s,a') qπ(s,a)=R(s,a)+γssP(ss,a)aAπ(as)qπ(s,a)

3.5. 策略评估 Policy Eevaluation

3.5.1. 策略评估(预测)

当确定了一个MDP以及要采取的策略 π \pi π时,计算价值函数的过程就称为Policy Evaluation,就是在评估这个策略会得到多大的奖励。策略评估(Policy Evaluation)在有时候也称为预测(Prediction),也就是预测Agent当前采取的策略最终会产生多大的价值。

下面我们举一个策略评估的例子:
假设环境里面有5种状态和两种动作:往左走和往右走。

s 1 s_1 s1 s 2 s_2 s2 s 3 s_3 s3 s 4 s_4 s4 s 5 s_5 s5
50007

反馈是关于动作以及状态两个变量的函数。它规定了,不管Agent采取什么动作,只要到达状态 s 1 s_1 s1,就能得到5反馈,只有到达状态 s 5 s_5 s5,就能得到7反馈。

那么Agent在某一状态的价值可以通过以下公式迭代得到,这个迭代过程可以看作是异步溯回(Synchronous Backup)过程: v t + 1 π ( s ) = ∑ a P ( π ( s ) = a ) ( R ( s , a ) + γ ∑ s ′ ∈ s P ( s ′ ∣ s , a ) v t π ( s ′ ) ) v^\pi_{t+1}(s)=\sum_{a}P(\pi(s)=a)\biggl( R(s,a) + \gamma\sum_{s'\in s}P(s'|s,a)v^\pi_{t}(s')\biggr) vt+1π(s)=aP(π(s)=a)(R(s,a)+γssP(ss,a)vtπ(s))

同步回溯(synchronous backup)是指每一次的迭代都会完全更新所有的状态,这样对于程序资源需求特别大。
异步回溯(asynchronous backup)是指通过某种方式,使得每一次迭代不需要更新所有的状态,只需要更新上一次迭代变化的部分即可。

有时如果确定了策略函数,那就可以把 a a a去掉,得到简化后的式子: v t + 1 ( s ) = R π + γ P π ( s ′ ∣ s ) v t ( s ′ ) v_{t+1}(s)=R^\pi+\gamma P^\pi(s'|s)v_t(s') vt+1(s)=Rπ+γPπ(ss)vt(s)

此时这个公式就只有价值函数跟状态转移函数了。通过迭代简化后的函数也可以得到Agent每个状态的价值。因为不管是在MRP和MDP中,价值函数的变量都是只与状态有关,也就是说当Agent处于某一个状态时,未来的价值是一定的。

该公式的迭代过程可以通过以下例子来理解,假设现在有一个环境如下图。
在这里插入图片描述

Agent的目的是从某一个状态开始,然后到达终止状态(左上角或右下角)。Agent总共可以有 15 个状态和1个终止状态,因为我们把每个位置用一个状态来表示。

策略函数将Agent设置为随机游走,也即向上下左右状态转换的概率均为25%(除了边界)。反馈函数设置为Agent每转移一次状态,就会得到-1的奖励,所以Agent需要尽快地到达终止状态。折扣因子 γ \gamma γ设为1。

假设Agent目前在状态15,最终得到每一个状态可获得的最大价值为:

[[ 0 -1 -2 -3]
 [-1 -2 -3 -4]
 [-2 -3 -4 -5]
 [-3 -4 -5 -6]]

也就是说,当Agent目前在状态15时,它可获得的最大价值为-6。

上述训练过程的代码根据 博客:强化学习圣经-GridWorld 改编实现

3.5.2. 控制

控制是MDP的核心问题之一,它也可通过动态规划解决,理由请查看2.4.1.1. 动态规划过程

  • 预测,即上一小节讲策略评估,是指输入一个 M D P ( S , A , P , R , γ ) MDP(S,A,P,R,\gamma) MDP(S,A,P,R,γ)和策略函数 π \pi π,输出其每一个状态的价值 v π v^\pi vπ
  • 控制问题是指,输入一个 M D P ( S , A , P , R , γ ) MDP(S,A,P,R,\gamma) MDP(S,A,P,R,γ),输出其最佳的价值函数 v ∗ v^* v和最佳策略 π ∗ \pi^* π

预测与控制是递进的关系,在强化学习中,我们通过解决预测问题,进而解决控制问题。

我们再重复说一下预测问题,给定反馈函数和策略,如下左图:
在这里插入图片描述
我们规定 A → A ′ A \to A' AA可以得到+10的反馈, B → B ′ B \to B' BB可以得到+5的奖励,其它步骤的奖励均为-1。Agent的策略设定为随机行动,也就是向上下左右的概率各25%。右图即是预测得出的每一个状态的价值 v π v^\pi vπ

同样的反馈函数,当不再限制Agent的策略时,就是一个控制问题,如下左图:
在这里插入图片描述
上面第二幅图就是控制任务得出的最佳价值 v ∗ v^* v,第三幅图就是最佳策略 π ∗ \pi^* π

最佳价值 v ∗ v^* v与最佳策略 π ∗ \pi^* π的定义为: v ∗ = max ⁡ π v π ( s ) π ∗ = arg max ⁡ π v π ( s ) \begin{aligned} v^* & = \max_\pi v^\pi(s)\\ \pi^* & = \argmax_\pi v^\pi(s)\end{aligned} vπ=πmaxvπ(s)=πargmaxvπ(s)

每个状态的最佳价值 v ∗ v^* v只需在迭代的过程中取得极大值即可,当得到最佳的价值后,我们通过Q函数的极大化得到最佳策略 π ∗ \pi^* π

由于价值函数 v π v^\pi vπ是关于状态-动作的一个函数,所以在某一个状态采取某个动作可以使得这个价值函数 v π v^\pi vπ最大化,那么这个动作就应该是最佳的动作。所以如果在全部状态优化出价值函数 v π v^\pi vπ,就可以根据价值函数 v π v^\pi vπ取一个让价值函数 v π v^\pi vπ最大化的动作的值,从而计算出它的最佳策略。

最简单的策略搜索办法就是穷举。若状态和动作都是有限的,对于 S S S个状态中的每个状态都可以采取 N N N种动作,那么总共就是 ∣ N ∣ ∣ S ∣ |N|^{|S|} NS个可能的策略。那我们可以把策略都穷举一遍,然后算出每种策略的 价值,对比一下就可以得到最佳策略。

但是穷举非常没有效率,所以我们要采取其他方法。搜索最佳策略有两种常用的方法:Policy Iteration 和 Value Iteration。

3.5.2.1. 策略迭代 Policy Iteration

策略迭代由两个步骤组成:

  1. 策略评估(Policy Evaluation),不断迭代优化策略 π \pi π直到其收敛,然后去估计该策略下的价值 v π v^\pi vπ
  2. 策略改进(Policy Improvement),得到 v π v^\pi vπ后,可以进一步推算出它的Q函数,然后对Q函数进行极大化,通过在Q函数上面做贪心搜索来进一步改进它的策略。

在策略迭代初始化的时候,会输入一个初始的价值函数 v v v和策略函数 π \pi π ,然后就在策略评估和策略改进两个步骤中不断迭代进行。

形象地说,左边这幅图的上面的线就是当前价值 v v v的值,下面的线是策略 π \pi π的值。
在这里插入图片描述

  1. 先给定当前已有的策略函数 π \pi π,然后根据 π \pi π进行策略评估计算出价值函数 v π v^\pi vπ
  2. 有了价值函数 v π v^\pi vπ后,进行策略改进得到一个Q函数。Q函数采取贪心的策略更新策略函数 π \pi π
  3. 得到一个改进的策略之后,还需再进行策略评估,得到新的价值函数;
  4. 这样就逐渐迭代,最终收敛。

在上面第2步中,得到价值函数 v π v^\pi vπ后,就可以通过反馈函数 R R R以及状态转移把它的Q函数算出来,如下式所示:
q π i ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) v π i ( s ′ ) q^{\pi i}(s,a)=R(s,a)+\gamma\sum_{s'\in S}P(s'|s,a)v^{\pi i}(s') qπi(s,a)=R(s,a)+γsSP(ss,a)vπi(s)对每一个状态,策略改进会更新现有的策略,也就是说就在每一个状态,都去取使它得到最大值的动作,如下式所示: π i + 1 ( s ) = arg max ⁡ a q π i ( s , a ) \pi_{i+1}(s)=\argmax_a q^{\pi i}(s,a) πi+1(s)=aargmaxqπi(s,a)

可以把Q函数看成一个表格(Table),横轴是Agent的所有状态,纵轴是Agent可能的动作:
在这里插入图片描述
那么对于某一个State取其最大值对应的那个Action就是它现在应该采取的Action。所以 arg max ⁡ \argmax argmax操作就说在每个状态里面采取能使这一列的Q最大化的Action。

当一直在采取 arg max ⁡ \argmax argmax操作的时候,就会得到一个单调的递增,通过这种贪心策略就可以得到更好的或者不变的策略函数 π \pi π和价值函数 v π v^\pi vπ。所以当这个改进过程停止过后就可以得到不同状态下的最佳策略。

另一方面,我们可以说当改进停止过后,极大化的Action就相当于是价值函数: q π ( s , π ′ ( s ) ) = max ⁡ a ∈ A q π ( s , a ) = q π ( s , π ( s ) ) = v π ( s ) q^\pi(s,\pi'(s))=\max_{a\in A}q^\pi(s,a)=q^\pi(s,\pi(s))=v^\pi(s) qπ(s,π(s))=aAmaxqπ(s,a)=qπ(s,π(s))=vπ(s)即: v π ( s ) = max ⁡ a ∈ A q π ( s , a ) v^\pi(s)=\max_{a\in A}q^\pi(s,a) vπ(s)=aAmaxqπ(s,a)

上式被称为贝尔曼最优方程(Bellman optimality equation)。贝尔曼最优方程表达了这样一个事实:最佳策略下的一个状态的价值必须等于在这个状态下采取最好动作得到的期望回报。

在迭代完成时,就有 v π → v ∗ v^\pi\to v^* vπv π → π ∗ \pi\to\pi^* ππ,此时的 q π q^\pi qπ可以表示为 q ∗ q^* q,也就是说最佳价值可以表示为: v ∗ ( s ) = max ⁡ a ∈ A q ∗ ( s , a ) = max ⁡ a ∈ A ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) v ∗ ( s ′ ) ) \begin{aligned} v^*(s) & = \max_{a\in A}q^*(s,a)\\ & = \max_{a\in A}\biggl( R(s,a)+\gamma\sum_{s'\in S}P(s'|s,a)v^{*}(s')\biggr) \end{aligned} v(s)=aAmaxq(s,a)=aAmax(R(s,a)+γsSP(ss,a)v(s))

3.5.2.2. 价值迭代 Value Iteration

价值迭代从另一个角度思考问题,利用动态规划的方法将优化问题分成两个步骤:

  • Agent第一步执行最优的策略;
  • 之后的状态每一步都按照最优的策略执行,那么Agent最后的结果就是最优的。

最优化原理
一个策略 π ( s ∣ a ) \pi(s|a) π(sa)在状态 s s s达到了最优价值,也就是 v π ( s ) = v ∗ ( s ) v^{\pi}(s) = v^{*}(s) vπ(s)=v(s)成立,当且仅当对于任何能够从 s s s到达的 s ′ s' s都已经达到了最优价值。

价值迭代将贝尔曼最优化方程当成一个Update Rule来进行,如下式所示:
v ( s ) ← max ⁡ a ∈ A ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) v ∗ ( s ′ ) ) v(s) \leftarrow \max_{a\in A}\biggl( R(s,a)+\gamma\sum_{s'\in S}P(s'|s,a)v^{*}(s')\biggr) v(s)aAmax(R(s,a)+γsSP(ss,a)v(s))

在策略迭代中这个等式只有当整个MDP已经到达最佳的状态时才满足。但这里可以把它转换成一个迭代的等式。不停地去迭代贝尔曼最优化方程,使它最终收敛于最佳的策略,这就是价值迭代算法的精髓。

价值迭代得到最佳的策略的过程可以表示为:
当算法开始时,首先初始化价值函数,设未进行迭代时价值函数的值为0: v 0 ( s ) = 0 v_0(s)=0 v0(s)=0

每进行一次状态转移,就会有一次迭代: q k + 1 ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) v k ( s ′ ) v k + 1 ( s ) = max ⁡ a ∈ A q k + 1 ( s , a ) \begin{aligned} q_{k+1}(s,a) & = R(s,a)+\gamma\sum_{s'\in S}P(s'|s,a)v_{k}(s')\\ v_{k+1}(s) & = \max_{a\in A}q_{k+1}(s,a) \end{aligned} qk+1(s,a)vk+1(s)=R(s,a)+γsSP(ss,a)vk(s)=aAmaxqk+1(s,a)

当迭代完成后,得到 v ∗ v^* v,就可以进一步推算出它的最佳策略。可以直接用 arg max ⁡ \argmax argmax,把它的 Q 函数重构出来,每一个状态对应的最大的那个Action就是它现在的最佳策略。这样就可以从最佳价值函数里面提取出最佳策略。: π ( s ) = arg max ⁡ a ∈ A ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) v k + 1 ( s ′ ) ) \pi(s)=\argmax_{a\in A}\biggl( R(s,a)+\gamma\sum_{s'\in S}P(s'|s,a)v_{k+1}(s')\biggr) π(s)=aAargmax(R(s,a)+γsSP(ss,a)vk+1(s))

但是这个时候我们只是在解决一个Planning 的问题,而不是真正的强化学习的问题,因为Agent知道环境如何变化。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:设计师小姐姐 返回首页