马尔可夫决策过程

马尔可夫决策过程

  • 马尔可夫过程
    • 马尔可夫性值
    • 马尔科夫过程
  • 马尔可夫奖励过程
    • 回报与价值函数
    • 贝尔曼方程
  • 马尔可夫决策过程
    • 策略
    • 马尔科夫决策过程中的价值函数
      • 状态价值函数和动作价值函数的 关系
    • 贝尔曼期望方程
    • 最优价值函数
    • 最优策略
    • 寻找最优策略
    • 贝尔曼最优方程

马尔可夫过程

马尔可夫性值

在随机过程中,马尔可夫性质(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+1st)=P(st+1s1,,st)

马尔科夫过程

马尔可夫过程是一组具有马尔可夫性质的随机变量序列 s 1 , ⋯   , s t s_1,\cdots,s_t s1,,st,其中下一个时刻的状态 s t + 1 s_{t+1} st+1只取决于当前状态 s t s_t st。我们设状态的历史为 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包含了之前的所有状态),则马尔可夫过程满足条件:
p ( s t + 1 ∣ s t ) = p ( s t + 1 ∣ h t ) (1) p(s_{t+1}|s_t)=p(s_{t+1}|h_t) \tag{1} p(st+1st)=p(st+1ht)(1)
从当前 s t s_t st转移到 s t + 1 s_{t+1} st+1,它是直接就等于它之前所有的状态转移到 s t + 1 s_{t+1} st+1

离散时间的马尔可夫过程也称为马尔可夫链(Markov chain)。马尔可夫链是最简单的马尔可夫过程,其状态是有限的。例如,下图里面有4个状态,这4个状态在 s 1 , s 2 , s 3 , s 4 s_1,s_2,s_3,s_4 s1,s2,s3,s4之间相互转移。比如从 s 1 s_1 s1开始, s 1 s_1 s1有 0.1 的概率继续存留在 s 1 s_1 s1状态,有 0.2 的概率转移到 s 2 s_2 s2,有 0.7 的概率转移到 s 4 s_4 s4
在这里插入图片描述
我们可以用状态转移矩阵(state transition matrix) P P P 来描述状态转移 p ( s t + 1 = s ′ ∣ s t = s ) p(s_{t+1}=s^{′} | s_t=s) p(st+1=sst=s)
P = ( 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 ) ) P=\begin{pmatrix} 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)\\ \end{pmatrix} P= p(s1s1)p(s1s2)p(s1sN)p(s2s1)p(s2s2)p(s2sN).........p(sNs1)p(sNs2)p(sNsN)
状态转移矩阵类似于条件概率(conditional probability),它表示当我们知道当前我们在状态 s 1 s_1 s1时,到达下面所有状态的概率。所以它的每一行描述的是从一个节点到达所有其他节点的概率。

马尔可夫奖励过程

马尔可夫奖励过程(Markov reward process, MRP)是马尔可夫链加上奖励函数。在马尔可夫奖励过程中,状态转移矩阵和状态都与马尔可夫链一样,只是多了奖励函数(reward function)。奖励函数 R R R是一个 期望,表示当我们到达某一个状态的时候,可以获得多大的奖励。
R ( s ) = E [ R t + 1 ∣ s t = s ] R(s)=E[R_{t+1}|s_t=s] R(s)=E[Rt+1st=s]

回报与价值函数

回报(return)可以定义为奖励的逐步叠加,假设时刻 t t t后的奖励序列为 r t + 1 , r t + 2 , r t + 3 , ⋯   , r_{t+1},r_{t+2},r_{t+3},\cdots, rt+1,rt+2,rt+3,,则回报为
G t = r t + 1 + γ r t + 2 + γ 2 r t + 3 + γ 3 r t + 4 + ⋯ + γ T − t − 1 r T G_t=r_{t+1}+γr_{t+2}+γ^2r_{t+3}+γ^3r_{t+4}+\cdots+γ^{T-t-1}r_{T} Gt=rt+1+γrt+2+γ2rt+3+γ3rt+4++γTt1rT
其中, T T T是最终时刻, γ γ γ是折扣因子,越往后得到的奖励折扣越多。这说明我们更希望得到现有的奖励,对未来的奖励要打折扣。当我们有了回报之后,就可以定义状态的价值了,就是状态价值函数(state-value function)。对于马尔可夫奖励过程,状态价值函数被定义成回报的期望,即
V t ( s ) = E [ G t ∣ s t = s ] = E [ r t + 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)&=E[G_t|s_t=s] \\ &=E[r_{t+1}+γr_{t+2}+γ^2r_{t+3}+γ^3r_{t+4}+...+γ^{T-t-1}r_{T}|s_t=s] \end{aligned} Vt(s)=E[Gtst=s]=E[rt+1+γrt+2+γ2rt+3+γ3rt+4+...+γTt1rTst=s]
其中, G t G_t Gt是之前定义的折扣回报(discounted return)。我们对 G t G_t Gt取了一个期望,期望就是从这个状态开始,我们可能获得多大的价值。

我们使用折扣因子的原因如下。第一,有些马尔可夫过程是带环的,它并不会终结,我们想避免无穷的奖励。第二,我们并不能建立完美的模拟环境的模型,我们对未来的评估不一定是准确的,我们不一定完全信任模型,因为这种不确定性,所以我们对未来的评估增加一个折扣。我们想把这个不确定性表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。第三,如果奖励是有实际价值的,我们可能更希望立刻就得到奖励,而不是后面再得到奖励(现在的钱比以后的钱更有价值)。最后,我们也更想得到即时奖励。有些时候可以把折扣因子设为 0,我们就只关注当前的奖励。我们也可以把折扣因子设为 1,对未来的奖励并没有打折扣,未来获得的奖励与当前获得的奖励是一样的。折扣因子可以作为强化学习智能体的一个超参数(hyperparameter)来进行调整,通过调整折扣因子,我们可以得到不同动作的智能体。

下面是一个计算回报的例子。如图所示,智能体进入第一个状态 s 1 s_1 s1的时候会得到 5 的奖励,进入第七个状态 s 7 s_7 s7的时候会得到 10 的奖励,进入其他状态都没有奖励。我们可以用向量来表示奖励函数,即
R = [ 5 , 0 , 0 , 0 , 0 , 0 , 10 ] R=[5,0,0,0,0,0,10] R=[5,0,0,0,0,0,10]
在这里插入图片描述
我们对 4 步的** 回合 **(episode)( γ = 0.5 γ=0.5 γ=0.5)来采样回报 G G G

( 1 ) s 4 , s 5 , s 6 , s 7 的回报 : 0 + 0.5 × 0 + 0.25 × 0 + 0.125 × 10 = 1.25 (1) s_4,s_5,s_6,s_7的回报:0+0.5×0+0.25×0+0.125×10=1.25 (1)s4,s5,s6,s7的回报:0+0.5×0+0.25×0+0.125×10=1.25

( 2 ) s 4 , s 3 , s 2 , s 1 的回报 : 0 + 0.5 × 0 + 0.25 × 0 + 0.125 × 5 = 0.625 (2) s_4,s_3,s_2,s_1的回报:0+0.5×0+0.25×0+0.125×5=0.625 (2)s4,s3,s2,s1的回报:0+0.5×0+0.25×0+0.125×5=0.625

( 3 ) s 4 , s 5 , s 6 , s 6 的回报 : 0 + 0.5 × 0 + 0.25 × 0 + 0.125 × 0 = 0 (3) s_4,s_5,s_6,s_6的回报:0+0.5×0+0.25×0+0.125×0=0 (3)s4,s5,s6,s6的回报:0+0.5×0+0.25×0+0.125×0=0

我们现在可以计算每一个回合得到的奖励,比如我们对轨迹 s 4 , s 5 , s 6 , s 7 s_4,s_5,s_6,s_7 s4,s5,s6,s7的奖励进行计算,这里折扣因子是 0.5。在 s 4 s_4 s4的时候,奖励为0。下一个状态 s 5 s_5 s5的时候,因为我们已经到了下一步,所以要把 s 5 s_5 s5进行折扣, s 5 s_5 s5的奖励也是0。然后是 s 6 s_6 s6,奖励也是0,折扣因子应该是0.25。到达 s 7 s_7 s7后,我们获得了一个奖励,但是因为状态 s 7 s_7 s7的奖励是未来才获得的奖励,所以我们要对之进行3次折扣。最终这个轨迹的回报就是 1.25。类似地,我们可以得到其他轨迹的回报。

当我们有了一些轨迹的实际回报时,怎么计算它的价值函数呢?比如我们想知道 s 4 s_4 s4的价值,即当我们进入 s 4 s_4 s4后,它的价值到底如何?一个可行的做法就是我们可以生成很多轨迹,然后把轨迹都叠加起来。比如我们可以从 s 4 s_4 s4开始,采样生成很多轨迹,把这些轨迹的回报都计算出来,然后将其取平均值作为我们进入 s 4 s_4 s4的价值。这其实是一种计算价值函数的办法,也就是通过蒙特卡洛(Monte Carlo,MC)采样的方法计算 s 4 s_4 s4的价值。

贝尔曼方程

此外,我们可以使用贝尔曼方程求解价值函数。贝尔曼方程就是当前状态与未来状态的迭代关系,表示当前状态的价值函数可以通过下个状态的价值函数来计算。贝尔曼方程(Bellman equation)如下:
V ( s ) = R ( s ) ⏟ 及时奖励 + γ ∑ s ′ ∈ S p ( s ′ ∣ s ) V ( s ′ ) ⏟ 未来奖励的折扣总和 V(s)=\underbrace{R(s)}_{\text{及时奖励}}+\underbrace{γ\sum_{s^{'}∈S}p(s^{'}|s)V(s^{'})}_{\text{未来奖励的折扣总和}} V(s)=及时奖励 R(s)+未来奖励的折扣总和 γsSp(ss)V(s)
其中,

  • s ′ s^{'} s可以看成未来的所有状态
  • p ( s ′ ∣ s ) p(s^{'}|s) p(ss)是指从当前状态转移到未来状态的概率
  • V ( s ′ ) V(s^{'}) V(s)代表的是未来某一个状态的价值。我们从当前状态开始,有一定的概率去到未来的所有状态,所以我们要把 p ( s ′ ∣ s ) p(s^{'}|s) p(ss)写上去。我们得到了未来状态后,乘一个 γ γ γ,这样就可以把未来的奖励打折扣。
  • γ ∑ s ′ ∈ S p ( s ′ ∣ s ) V ( s ′ ) γ\sum_{s^{'}∈S}p(s^{'}|s)V(s^{'}) γsSp(ss)V(s)可以看成未来奖励的折扣总和(discounted sum of future reward)。

贝尔曼方程的推导过程如下:

V t ( 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 ∣ s t = s ] + γ E [ r t + 2 + γ r t + 3 + γ 2 r t + 4 + . . . ∣ 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^t(s)&=E[G_t|s_t=s] \\ &=E[r_{t+1}+γr_{t+2}+γ^2r_{t+3}+...|s_t=s]\\ &=E[r_{t+1}|s_t=s]+γE[r_{t+2}+γr_{t+3}+γ^2r_{t+4}+...|s_t=s]\\ &=R(s)+γE[G_{t+1}|s_t=s]\\ &=R(s)+γE[V(s_{t+1}|s_t=s)]\\ &=R(s)+γ\sum_{s^{'}∈S}p(s^{'}|s)V(s^{'}) \end{aligned} Vt(s)=E[Gtst=s]=E[rt+1+γrt+2+γ2rt+3+...∣st=s]=E[rt+1st=s]+γE[rt+2+γrt+3+γ2rt+4+...∣st=s]=R(s)+γE[Gt+1st=s]=R(s)+γE[V(st+1st=s)]=R(s)+γsSp(ss)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 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{pmatrix} V(s_1) \\ V(s_2) \\ \vdots\\ V(s_N) \end{pmatrix}= \begin{pmatrix} R(s_1) \\ R(s_2) \\ \vdots\\ R(s_N) \end{pmatrix}+γ \begin{pmatrix} p(s_1|s_1)&p(s_2|s_1)&\dots&p(s_N|s_1)\\ p(s_1|s_2)&p(s_2|s_2)&\dots&p(s_N|s_2)\\ \vdots&\vdots&\ddots&\vdots\\ p(s_1|s_N)&p(s_2|s_N)&\dots&p(s_N|s_N) \end{pmatrix} \begin{pmatrix} V(s_1)\\ V(s_2)\\ \vdots\\ V(s_N) \end{pmatrix} 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 ( s 1 ) , V ( s 2 ) , ⋯   , V ( s N ) ] T [V(s_1),V(s_2),\cdots,V(s_N)]^{T} [V(s1),V(s2),,V(sN)]T。每一行来看,向量 V V V乘状态转移矩阵里面的某一行,再加上它当前可以得到的奖励,就会得到它当前的价值。

当我们把贝尔曼方程写成矩阵形式后,可以直接求解:
V = R + γ P V I V = R + γ P V ( I − γ P ) V = R V = ( I − γ P ) − 1 R \begin{aligned} &V=R+γPV\\ &IV=R+γPV\\ &(I-γP)V=R\\ &V=(I-γP)^{-1}R \end{aligned} V=R+γPVIV=R+γPV(IγP)V=RV=(IγP)1R
我们可以通过矩阵求逆把 V V V的价值直接求出来。但是一个问题是这个矩阵求逆的过程的复杂度是 O ( N 3 ) O(N^3) O(N3)。所以当状态非常多的时候,比如从10个状态到1000个状态,或者到100万个状态,当我们有100万个状态的时候,状态转移矩阵就会是一个100万乘100万的矩阵,对这样一个大矩阵求逆是非常困难的。所以这种方法只适用于很小量的马尔可夫奖励过程。

马尔可夫决策过程

相对于马尔可夫奖励过程,马尔可夫决策过程(Markov decision process, 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),表示未来的状态不仅依赖于当前的状态,也依赖于在当前状态智能体采取的动作。马尔可夫决策过程满足条件:
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)
对于奖励函数,它也多了一个当前的动作,变成了
R ( s t = s , a t = a ) = E [ r t ∣ s t = s , a t = a ] R(s_t=s,a_t=a)=E[r_t|s_t=s,a_t=a] R(st=s,at=a)=E[rtst=s,at=a]
当前的状态以及采取的动作会决定智能体在当前可能得到的奖励多少。

策略

策略 π π π是一个函数,表示输入状态为 s s s的情况下采取动作 a a a的概率。
π ( a ∣ s ) = p ( a t = a ∣ s t = s ) π(a|s)=p(a_t=a|s_t=s) π(as)=p(at=ast=s)
概率代表在所有可能的动作里面怎样采取行动,比如可能有 0.7 的概率往左走,有 0.3 的概率往右走,这是一个概率的表示。另外策略也可能是确定的,它有可能直接输出一个值,或者直接告诉我们当前应该采取什么样的动作,而不是一个动作的概率。

已知马尔可夫决策过程和策略 π π π,我们可以把马尔可夫决策过程转换成马尔可夫奖励过程。在马尔可夫决策过程里面,状态转移函数 P ( s ′ ∣ s , a ) P(s^{'}|s,a) P(ss,a)基于它当前的状态以及它当前的动作。因为我们现在已知策略函数,也就是已知在每一个状态下,可能采取的动作的概率,所以我们就可以直接把动作进行加和,去掉 a a a,这样我们就可以得到对于马尔可夫奖励过程的转移,这里就没有动作,即
P π ( s ′ ∣ s ) = ∑ a ∈ A π ( a ∣ s ) p ( s ′ ∣ s , a ) P_π(s^{'}|s)=\sum_{a∈A}π(a|s)p(s^{'}|s,a) Pπ(ss)=aAπ(as)p(ss,a)
对于奖励函数,我们也可以把动作去掉,这样就会得到类似于马尔可夫奖励过程的奖励函数,即
R π ( s ) = ∑ a ∈ A π ( a ∣ s ) R ( s , a ) R_π(s)=\sum_{a∈A}π(a|s)R(s,a) Rπ(s)=aAπ(as)R(s,a)

马尔科夫决策过程中的价值函数

马尔可夫决策过程中的状态价值函数定义
V π ( s ) = E π [ G t ∣ s t = s ] (2) V_π(s)=E_π[G_t|s_t=s] \tag{2} Vπ(s)=Eπ[Gtst=s](2)
状态价值函数 V π ( s ) V_π(s) Vπ(s)是从状态 s s s出发,遵循策略 π π π得到的期望回报。

马尔可夫决策过程中的动作价值函数定义
Q π ( s , a ) = E π [ G t ∣ s t = s , a t = a ] (3) Q_π(s,a)=E_π[G_t|s_t=s,a_t=a] \tag{3} Qπ(s,a)=Eπ[Gtst=s,at=a](3)
动作价值函数 Q π ( s , a ) Q_π(s,a) Qπ(s,a)是从状态 s s s开始,遵循策略 π π π,对当前状态 s s s执行动作 a a a得到的期望回报。

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

状态价值函数的期望是基于策略函数的,所以对策略函数进行一个加和,然后得到它的价值。对动作价值函数中的动作进行加和,就可以得到状态价值函数:
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) (4) V_π(s)=\sum_{a∈A}π(a|s)Q_π(s,a) \tag{4} Vπ(s)=aAπ(as)Qπ(s,a)(4)
对动作价值函数而言:
Q ( s , a ) = E [ G t ∣ s t = s , a t = a ] = E [ r t + 1 + γ r t + 2 + γ 2 r t + 3 + ⋯ ∣ s t = s , a t = a ] = E [ r t + 1 ∣ s t = s , a t = a ] + γ E [ r t + 2 + γ r t + 3 + γ 2 r t + 4 + ⋯ ∣ s t = s , a t = a ] = R ( s , a ) + γ E [ G t + 1 ∣ s t = s , a t = a ] = R ( s , a ) + γ E [ V ( s t + 1 ∣ s t = s , a t = a ) ] = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V ( s ′ ) \begin{aligned} Q(s,a)&=E[G_t|s_t=s,a_t=a]\\ &=E[r_{t+1}+γr_{t+2}+γ^2r_{t+3}+\cdots|s_t=s,a_t=a]\\ &=E[r_{t+1}|s_t=s,a_t=a]+γE[r_{t+2}+γr_{t+3}+γ^2r_{t+4}+\cdots|s_t=s,a_t=a]\\ &=R(s,a)+γE[G_{t+1}|s_t=s,a_t=a]\\ &=R(s,a)+γE[V(s_{t+1}|s_t=s,a_t=a)]\\ &=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V(s^{'}) \end{aligned} Q(s,a)=E[Gtst=s,at=a]=E[rt+1+γrt+2+γ2rt+3+st=s,at=a]=E[rt+1st=s,at=a]+γE[rt+2+γrt+3+γ2rt+4+st=s,at=a]=R(s,a)+γE[Gt+1st=s,at=a]=R(s,a)+γE[V(st+1st=s,at=a)]=R(s,a)+γsSp(ss,a)V(s)

贝尔曼期望方程

我们可以把状态价值函数和动作价值函数拆解成两个部分:即时奖励和后续状态的折扣价值(discounted value of successor state)。通过对状态价值函数进行分解,我们就可以得到一个类似于之前马尔可夫奖励过程的贝尔曼方程————贝尔曼期望方程(Bellman expectation equation):
V π ( s ) = E π [ r t + 1 + γ V π ( s t + 1 ) ∣ s t = s ] (5) V_π(s)=E_π[r_{t+1}+γV_π(s_{t+1})|s_t=s] \tag{5} Vπ(s)=Eπ[rt+1+γVπ(st+1)st=s](5)
对于动作价值函数,我们也可以做类似的分解,得到动作价值函数的贝尔曼期望方程:
Q π ( s , a ) = E π [ r t + 1 + γ Q π ( s t + 1 , a t + 1 ) ∣ s t = s , a t = a ] (6) Q_π(s,a)=E_π[r_{t+1}+γQ_π(s_{t+1},a_{t+1})|s_t=s,a_t=a] \tag{6} Qπ(s,a)=Eπ[rt+1+γQπ(st+1,at+1)st=s,at=a](6)
贝尔曼期望方程定义了当前状态与未来状态之间的关联。

我们进一步进行简单的分解,先给出式(7):
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) (7) V_π(s)=\sum_{a∈A}π(a|s)Q_π(s,a) \tag{7} Vπ(s)=aAπ(as)Qπ(s,a)(7)
接着,我们再给出式(8):
Q π ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V π ( s ′ ) (8) Q_π(s,a)=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V_ π(s^{'}) \tag{8} Qπ(s,a)=R(s,a)+γsSp(ss,a)Vπ(s)(8)
式(7)和式(8)代表状态价值函数与动作价值函数之间的关系。

我们把式(8)代入式(7)可得
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V π ( s ′ ) ) (9) V_π(s)=\sum_{a∈A}π(a|s)\left( R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V_π(s^{'}) \right ) \tag{9} Vπ(s)=aAπ(as) R(s,a)+γsSp(ss,a)Vπ(s) (9)
式(9)代表当前状态的价值与未来状态价值之间的关联。

我们把式(7)代入式(8)可得
Q π ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) Q π ( s ′ , a ′ ) (10) Q_π(s,a)=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)\sum_{a^{'}∈A}π(a^{'}|s^{'})Q_π(s^{'},a^{'}) \tag{10} Qπ(s,a)=R(s,a)+γsSp(ss,a)aAπ(as)Qπ(s,a)(10)
式(10)代表当前时刻的动作价值函数与未来时刻的动作价值函数之间的关联。

式(9)和式(10)是贝尔曼期望方程的另一种形式。

例子,如下图所示,求红色框的 价值?

在这里插入图片描述
再比如,左边的-1.3这个状态是 怎么来的

最优价值函数

在马尔可夫决策过程中,最优价值函数分为两种:最优状态值函数和最优动作值函数。

最优状态价值函数是所有策略产生的状态价值函数中,使状态 s s s价值最大的函数:
V ∗ ( s ) = max ⁡ π V π ( s ) V^*(s)=\max_πV_π(s) V(s)=πmaxVπ(s)
最优动作价值函数是指所有策略产生的动作价值函数中,使状态-行动价值最大的函数:
Q ∗ ( s , a ) = max ⁡ π Q π ( s , a ) Q^*(s,a)=\max_πQ_π(s,a) Q(s,a)=πmaxQπ(s,a)

最优价值函数明确了MDP的最优可能表现。一旦最优价值函数知晓,则认为MDP已完成求解。

最优策略

最优价值函数是指我们搜索一种策略 π π π让每个状态的价值最大,在这种最大化情况中,我们得到的策略就是最优策略,即
π ∗ ( s ) = arg ⁡ max ⁡ π V π ( s ) π^*(s)=\arg\max_πV_π(s) π(s)=argπmaxVπ(s)

寻找最优策略

最优策略使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个最优价值函数,就可以认为某个马尔可夫决策过程的环境可解。在这种情况下,最优价值函数是一致的,环境中可达到的上限的值是一致的,但这里可能有多个最优策略,多个最优策略可以取得相同的最优价值。

当取得最优动作价值函数后,我们可以通过对动作价值函数进行最大化来得到最优策略:
π ∗ ( a ∣ s ) = { 1 , a = arg ⁡ max ⁡ a ∈ A Q ∗ ( s , a ) 0 , 其他 π^*(a|s)=\left\{ \begin{aligned} 1,&a=\arg\max_{a∈A}Q^*(s,a)\\ 0,&其他 \end{aligned} \right. π(as)= 1,0,a=argaAmaxQ(s,a)其他
当动作价值函数收敛后,因为动作价值函数是关于状态与动作的函数,所以如果在某个状态采取某个动作,可以使得动作价值函数最大化,那么这个动作就是最佳的动作。如果我们能优化出一个动作价值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a),就可以直接在动作价值函数中取一个让动作价值函数值最大化的动作的值,就可以提取出最佳策略。

怎样进行策略搜索?最简单的策略搜索方法就是穷举。假设状态和动作都是有限的,那么每个状态我们可以采取 A A A种动作的策略,总共就是 ∣ A ∣ ∣ S ∣ |A|^{|S|} AS个可能的策略。我们可以把策略穷举一遍,算出每种策略的价值函数,对比一下就可以得到最佳策略。

但是穷举非常没有效率,所以我们要采取其他方法。

贝尔曼最优方程

贝尔曼最优方程(Bellman optimality equation)如下
V π ( s ) = max ⁡ a ∈ A Q π ( s , a ) V_π(s)=\max_{a∈A}Q_π(s,a) Vπ(s)=aAmaxQπ(s,a)
贝尔曼最优方程表明:最佳策略下的一个状态的价值必须等于在这个状态下采取最好动作得到的回报的期望。当马尔可夫决策过程满足贝尔曼最优方程的时候,整个马尔可夫决策过程已经达到最佳的状态。

只有当整个状态已经收敛后,我们得到最佳价值函数后,贝尔曼最优方程才会满足。满足贝尔曼最优方程后,我们可以采用最大化操作,即
V ∗ ( s ) = max ⁡ a Q ∗ ( s , a ) (12) V^*(s)=\max_{a}Q^*(s,a) \tag{12} V(s)=amaxQ(s,a)(12)
当我们取让 Q 函数值最大化的动作对应的值就是当前状态的最佳的价值函数的值。另外,我们给出 Q 函数的贝尔曼方程
Q ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V ∗ ( s ′ ) (13) Q^*(s,a)=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V^*(s^{'}) \tag{13} Q(s,a)=R(s,a)+γsSp(ss,a)V(s)(13)
我们把式(12)代入式(13)可得
Q ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V ∗ ( s ′ ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) max ⁡ a Q ∗ ( s ′ , a ′ ) \begin{aligned} Q^*(s,a)&=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V^*(s^{'}) \\ &=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)\max_aQ^*(s^{'},a^{'}) \end{aligned} Q(s,a)=R(s,a)+γsSp(ss,a)V(s)=R(s,a)+γsSp(ss,a)amaxQ(s,a)
我们就可以得到 Q 函数之间的转移。Q学习是基于贝尔曼最优方程来进行的,当取Q函数值最大的状态( max ⁡ a ′ Q ∗ ( s ′ , a ′ ) \max_{a^{'}}Q^*(s^{'},a^{'}) maxaQ(s,a))的时候可得
Q ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) max ⁡ a ′ Q ∗ ( s ′ , a ′ ) Q^*(s,a)=R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)\max_{a^{'}}Q^*(s^{'},a^{'}) Q(s,a)=R(s,a)+γsSp(ss,a)amaxQ(s,a)
我们还可以把式(13)代入式(12)可得
V ∗ ( s ) = max ⁡ a Q ∗ ( s , a ) = max ⁡ a E [ G t ∣ s t = s , a t = a ] = max ⁡ a E [ r t + 1 + γ G t + 1 ∣ s t = s , a t = a ] = max ⁡ a E [ r t + 1 + γ V ∗ ( s t + 1 ) ∣ s t = s , a t = a ] = max ⁡ a E [ r t + 1 ] + max ⁡ a E [ γ V ∗ ( s t + 1 ) ∣ s t = s , a t = a ] = max ⁡ a R ( s , a ) + max ⁡ a γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V ∗ ( s ′ ) = max ⁡ a ( R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V ∗ ( s ′ ) ) \begin{aligned} V^*(s)&=\max_aQ^*(s,a)\\ &=\max_aE[G_t|s_t=s,a_t=a]\\ &=\max_aE[r_{t+1}+γG_{t+1}|s_t=s,a_t=a]\\ &=\max_aE[r_{t+1}+γV^*(s_{t+1})|s_t=s,a_t=a]\\ &=\max_aE[r_{t+1}]+\max_aE[γV^*(s_{t+1})|s_t=s,a_t=a]\\ &=\max_aR(s,a)+\max_aγ\sum_{s^{'}∈S}p(s^{'}|s,a)V^*(s^{'})\\ &=\max_a\left( R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V^*(s^{'}) \right) \end{aligned} V(s)=amaxQ(s,a)=amaxE[Gtst=s,at=a]=amaxE[rt+1+γGt+1st=s,at=a]=amaxE[rt+1+γV(st+1)st=s,at=a]=amaxE[rt+1]+amaxE[γV(st+1)st=s,at=a]=amaxR(s,a)+amaxγsSp(ss,a)V(s)=amax R(s,a)+γsSp(ss,a)V(s)

例子,使用贝尔曼最优方程求下面 ?的价值
在这里插入图片描述
贝尔曼最优方程是非线性的,不能使用与策略优化相同的直接矩阵解决方案,可以通过一些其他迭代方法来求解。

  • 价值迭代
  • 策略迭代
  • Q-learning
  • Sarsa

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/416392.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins配置在远程服务器上执行shell脚本(两种方式)

Jenkins配置在远程服务器上执行shell脚本 方式一:通过SSH免密方式执行 说明:Jenkins部署在ServerA:10.1.1.74上,要运行的程序在ServerB:10.1.1.196 分两步 第一步:Linux Centos7配置SSH免密登录 Linux…

T - SQL使用事务 及 在Winform使用事务

事务适用场景 1 事务使用在存储过程中,直接在数据库中进行编写 2 事务使用在Winfrom项目中 SQl:使用事务转账操作的实例 一般都会找一个变量记录错误的个数,error记录上一句sql的错误和错误编号 declare errornum int 0 -- 定义…

Linux系统安装使用nginx

1.编译安装Nginx服务 (1)关闭防火墙,将安装nginx所需要软件包传到/opt目录下 systemctl stop firewalld systemctl disable firewalld setenforce 0 将压缩包传入到/opt目录下 cd /opt wget http://nginx.org/download/nginx-1.18.0.tar.gz (2). 安装依赖…

【MATLAB】ICEEMDAN_ MFE_SVM_LSTM 神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 ICEEMDAN是指“改进的完全扩展经验模态分解与自适应噪声”(Improved Complete Ensemble Empirical Mode Decomposition with Adaptive Noise),它是CEEM…

Constructor构造方法

在我们创建实例时,我们经常需要同时初始化这个实例,例如: Person ming new Person(); ming.setName("卫什么"); ming.setAge("18"); 这样需要三行代码,实际上,在我们创建实例时,是通过…

MATLAB环境下脑电信号EEG的谱分析

脑电信号一直伴随着人类的生命,脑电波是脑神经细胞发生新陈代谢、离子交换时细胞群兴奋突触电位总和,脑电信号的节律性则和丘脑相关,含有丰富的大脑活动信息。通常我们所接触的脑电图都是头皮脑电图,在有些特殊场合还需要皮下部位…

ad18学习笔记十六:如何放置精准焊盘到特定位置,捕抓功能的讲解

网上倒是一堆相关的指导 AD软件熟练度提升,如何设置板框捕捉?_哔哩哔哩_bilibili 关于Altium Designer 20 的捕抓功能的讲解_ad捕捉设置-CSDN博客 AD软件捕捉进阶实例,如何精确的放置布局元器件?_哔哩哔哩_bilibili AD绘制PCB…

学习阶段单片机买esp32还是stm32?

学习阶段单片机买esp32还是stm32? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「stm32的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&#xf…

【InternLM 实战营笔记】LMDeploy 的量化和部署

环境配置 vgpu-smi 查看显卡资源使用情况 新开一个终端执行下面的命令实时观察 GPU 资源的使用情况。 watch vgpu-smi复制环境到我们自己的 conda 环境 /root/share/install_conda_env_internlm_base.sh lmdeploy激活环境 conda activate lmdeploy安装依赖库 # 解决 Modu…

深度测试:指定DoC ID对ES写入性能的影响

在[[使用python批量写入ES索引数据]]中已经介绍了如何批量写入ES数据。基于该流程实际测试一下指定文档ID对ES性能的影响有多大。 一句话版 指定ID比不指定ID的性能下降了63%,且加剧趋势。 以下是测评验证的细节。 百万数据量 索引默认使用1分片和1副本。 指定…

JVM(3)

垃圾回收(GC)相关 在C/C中,当我们使用类似于malloc的内存开辟,还需要手动释放内存空间,这样的机制在使用时给我们造成了诸多不便,但在Java中,有垃圾回收这样的机制,这就是指:我们不再需要手动释放,程序会自动判定,某个内存空间是否可以继续使用,如果内存不使用了,就会自动释放…

Hack The Box-Fawn

目录 TASK 1 TASK 2 TASK 3 TASK 4 TASK 5 TASK 6 TASK 7 TASK 8 TASK 9 TASK 10 TASK 11 SUBMIT FLAG TASK 1 What does the 3-letter acronym FTP stand for?File Transfer Protocol (文件传输协议 FTP)TASK 2 Which port does the FTP service listen on usual…

腾讯云优惠券领取入口、云服务器优惠、领取方法及使用教程

腾讯云服务器多少钱一年?62元一年起,2核2G3M配置,腾讯云2核4G5M轻量应用服务器218元一年、756元3年,4核16G12M服务器32元1个月、312元一年,8核32G22M服务器115元1个月、345元3个月,腾讯云服务器网txyfwq.co…

国产新能源车确立全球领先地位 珠光材料等上游产业链亦乘风而起

农历新年伊始,中国新能源汽车的老大哥比亚迪率先开启了一波降价狂潮,比亚迪秦PLUS荣耀版、驱逐舰05荣耀版正式上市,相较于上一版本冠军版车型,两款新版本车型价格均下降了2万元至7.98 万元起售,堪称王炸出牌。当天&…

Python教程59:海龟画图turtle满屏飘字(飞雪连天射白鹿,笑书神侠倚碧鸳)

---------------turtle源码集合--------------- Python教程91:关于海龟画图,Turtle模块需要学习的知识点 Python教程51:海龟画图turtle画(三角形、正方形、五边形、六边形、圆、同心圆、边切圆,五角星,椭…

Java核心API-反射

反射 文章目录 反射前言一、反射概念二、反射与Class类获取Class对象方式 三、反射访问构造方法1、获取包名2、获取类名3、获取父类名称4、获取接口5、获取类中构造方法1)获取所有的构造方法2)获取public修饰的构造方法3)获取private修饰的构…

基于java SSM springboot动物检疫信息管理系统设计和实现

基于java SSM springboot动物检疫信息管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末…

AI:145-智能监控系统下的行人安全预警与法律合规分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

milvus upsert流程源码分析

milvus版本:v2.3.2 整体架构: Upsert 的数据流向: 1.客户端sdk发出Upsert API请求。 import numpy as np from pymilvus import (connections,Collection, )num_entities, dim 4, 3print("start connecting to Milvus") connections.connect("default",…

代码随想录刷题训练营day25:LeetCode(216)组合总和III、LeetCode(17)电话号码的字母组合

代码随想录刷题训练营day25:LeetCode(40)组合总和 II、LeetCode(216)组合总和III、LeetCode(17)电话号码的字母组合 LeetCode(40)组合总和 II 题目 代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util…