“贝尔曼方程”那些事儿:含贝尔曼方程详细推导,通俗易懂

欢迎大家关注搜索关注微信公众号《一懂算法》,希望能把东西讲的通俗易懂,终极目标是一遍就懂

零、前言

相信只要是浅学过强化学习的人应该都能感受到贝尔曼方程的重要性,可以说是遍布了各种教程的每个角落。在遇到这些贝尔曼方程的时候,一直有几个问题困扰着我:

  1. 怎么又冒出来一个贝尔曼方程?
  2. 咋格式还和上一个不一样,变体咋这么多?
  3. 证明怎么这么跳跃?

几度回看都是跳过贝尔曼方程的细节,不想被绕进去。这几天终于有时间静下心来把证明过程理清了一遍,希望能用直白的语言跟大家讲清楚,尽量掰开揉碎了讲给大家。

一、基础变量符号定义

讲之前还是得声明一下几个重要变量的符号,毕竟不同版本之前的符号约定很容易差异。【这里默认大家了解强化学习基础概念,只是简单声明定义】
t t t回合下:

  1. 奖励为 r t r_t rt,状态为 s t s_t st,动作为 a t a_t at
  2. 回报 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}+\gamma R_{t+2}+\gamma^2R_{t+3}+\gamma^3R_{t+4}+\ldots+\gamma^{T-t-1}R_T Gt=Rt+1+γRt+2+γ2Rt+3+γ3Rt+4++γTt1RT,也就是当前回合到回合结束的总奖励(含折扣)
  3. 状态价值函数 V π ( s t ) = E π [ G t ∣ S t = s t ] V_\pi(s_t)=\mathbb{E}_\pi\begin{bmatrix}G_t\mid S_t=s_t\end{bmatrix} Vπ(st)=Eπ[GtSt=st],即 s t s_t st状态下回报的期望
  4. 动作价值函数 Q π ( s t , a t ) = E π [ G t ∣ S t = s t , A t = a t ] Q_\pi(s_t,a_t)=\mathbb{E}_\pi\left[G_t\mid S_t=s_t,A_t=a_t\right] Qπ(st,at)=Eπ[GtSt=st,At=at],即 s t s_t st状态下执行动作 a t a_t at后回报的期望

二、抽丝剥茧,逐步证明

好了,现在开始进入正文:

  1. 首先,为什么贝尔曼方程能成为强化学习的核心基础?

    • 是因为它描述的是当前状态的价值和下一状态的价值的关系,有了这个关系,就可以通过下一个状态的价值来迭代更新上一状态的价值【这样就可以通过最后一个状态逐步往前倒着推】。
    • 这也是贝尔曼方程推导思想的核心,我们需要想办法找到当前状态价值和下一状态价值的具体关系,搭好它们之间的“大桥”,也就是找到 V ( s t ) V(s_t) V(st) V ( s t + 1 ) V(s_{t+1}) V(st+1)的公式关系。
  2. 那么如何找到 V ( s t ) V(s_t) V(st) V ( s t + 1 ) V(s_{t+1}) V(st+1)的公式关系呢?

  • 首先我们先从状态价值函数的定义出发进行拆分,看看能不能从 V ( s t ) V(s_t) V(st)中拆分出 V ( s t + 1 ) V(s_{t+1}) V(st+1)
    V ( s t ) = E [ G t ∣ S t = s t ] (状态价值函数的定义) = E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + … ∣ S t = s t ] (回报的定义) = E [ R t + 1 ∣ S t = s t ] + γ E [ R t + 2 + γ R t + 3 + γ 2 R t + 4 + … ∣ S t = s t ] (期望的可加性) = R ( s t ) + γ E [ G t + 1 ∣ S t = s t ] (回报的定义) \begin{aligned} V(s_t)& =\mathbb{E}\left[G_t\mid S_t=s_t\right](状态价值函数的定义) \\ &=\mathbb{E}\begin{bmatrix}R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\ldots\mid S_t=s_t\end{bmatrix}(回报的定义) \\ &=\mathbb{E}\left[R_{t+1}|S_t=s_t\right]+\gamma\mathbb{E}\left[R_{t+2}+\gamma R_{t+3}+\gamma^2R_{t+4}+\ldots\mid S_t=s_t\right](期望的可加性) \\ &=R(s_t)+\gamma\mathbb{E}[G_{t+1}|S_t=s_t](回报的定义) \end{aligned} V(st)=E[GtSt=st](状态价值函数的定义)=E[Rt+1+γRt+2+γ2Rt+3+St=st](回报的定义)=E[Rt+1St=st]+γE[Rt+2+γRt+3+γ2Rt+4+St=st](期望的可加性)=R(st)+γE[Gt+1St=st](回报的定义)

  • 我们现在得到了 V ( s t ) V(s_t) V(st) G t + 1 G_{t+1} Gt+1的关系,这个时候我们还是无法去做迭代的,因为 V ( s t ) V(s_t) V(st)无法继续往前推导出 V ( s t − 1 ) V(s_{t-1}) V(st1),我们还是需要继续得到 V ( s t ) V(s_t) V(st) V ( s t + 1 ) V(s_{t+1}) V(st+1)之间的迭代关系,才能循环推导下去,因此我们还需要从 G t + 1 G_{t+1} Gt+1中拆分出 V ( s t + 1 ) V(s_{t+1}) V(st+1)

    • 首先从定义上可以显然知道两者的关系,即 V ( s t + 1 ) = E [ G t + 1 ∣ S t + 1 = s t + 1 ] V(s_{t+1})=\mathbb{E}\begin{bmatrix}G_{t+1}\mid S_{t+1}=s_{t+1}\end{bmatrix} V(st+1)=E[Gt+1St+1=st+1],这里我们发现其实已经很接近上面的 E [ G t + 1 ∣ S t = s t ] \mathbb{E}\begin{bmatrix}G_{t+1}\mid S_t=s_{t}\end{bmatrix} E[Gt+1St=st]了,两者求期望的目标都是 G t + 1 G_{t+1} Gt+1,只不过两者求期望的条件不一样,一个是 s t s_t st,一个是 s t + 1 s_{t+1} st+1。这个时候我们注意, s t + 1 s_{t+1} st+1就是 s t s_t st的下一个状态,换句话说也相当于 s t s_t st的一个子空间,这时候我们就可以用全期望公式建立起它们的联系了。

    • 全期望公式: E ( X ) = ∑ k m P ( Y k ) E ( X ∣ Y k ) = E ( E ( X ∣ Y ) ) E(X)=\sum_{k}^m P(Y_k)E(X|Y_k)=E(E(X|Y)) E(X)=kmP(Yk)E(XYk)=E(E(XY))
      公式含义说法1:随机变量X的数学期望等于,局部条件下X的期望的加权平均
      公式含义说法2:将样本空间划分为m个互斥的子空间,在每个空间下对X求期望然后再加权平均,结果就等于直接对X求期望

    • 那么由全期望公式我们可以得到:
      E [ G t + 1 ∣ S t = s t ] = ∑ s t + 1 E [ G t + 1 ∣ S t = s t , S t + 1 = s t + 1 ] p ( s t + 1 ∣ s t ) \mathbb{E}[G_{t+1}|S_{t}=s_{t}]=\sum_{s_{t+1}}\mathbb{E}[G_{t+1}|S_t=s_{t},S_{t+1}=s_{t+1}]p(s_{t+1}|s_{t}) E[Gt+1St=st]=st+1E[Gt+1St=st,St+1=st+1]p(st+1st)
      再由于马尔可夫性, G t + 1 G_{t+1} Gt+1其实只和 s t + 1 s_{t+1} st+1有关,和 s t s_{t} st无关,因此
      E [ G t + 1 ∣ S t = s t , S t + 1 = s t + 1 ] = E [ G t + 1 ∣ S t + 1 = s t + 1 ] = V ( s t + 1 ) \mathbb{E}[G_{t+1}|S_t=s_{t},S_{t+1}=s_{t+1}]=\mathbb{E}[G_{t+1}|S_{t+1}=s_{t+1}]=V(s_{t+1}) E[Gt+1St=st,St+1=st+1]=E[Gt+1St+1=st+1]=V(st+1)
      将其代回上一个式子得,
      E [ G t + 1 ∣ S t = s t ] = ∑ s t + 1 V ( s t + 1 ) p ( s t + 1 ∣ s t ) = E [ V t + 1 ∣ S t = s t ] \mathbb{E}[G_{t+1}|S_{t}=s_{t}]=\sum_{s_{t+1}}V(s_{t+1})p(s_{t+1}|s_{t})=\mathbb{E}[V_{t+1}|S_{t}=s_{t}] E[Gt+1St=st]=st+1V(st+1)p(st+1st)=E[Vt+1St=st]
      综上
      V ( s t ) = R ( s t ) + γ E [ G t + 1 ∣ S t = s t ] = R ( s t ) + γ ∑ s t + 1 V ( s t + 1 ) p ( s t + 1 ∣ s t ) = R ( s t ) + γ E [ V t + 1 ∣ S t = s t ] \begin{aligned} V(s_t)&=R(s_t)+\gamma\mathbb{E}[G_{t+1}|S_t=s_t] \\ &=R(s_t)+\gamma\sum_{s_{t+1}}V(s_{t+1})p(s_{t+1}|s_{t}) \\ &=R(s_t)+\gamma\mathbb{E}[V_{t+1}|S_t=s_t] \end{aligned} V(st)=R(st)+γE[Gt+1St=st]=R(st)+γst+1V(st+1)p(st+1st)=R(st)+γE[Vt+1St=st]
      以上的公式也被称作“贝尔曼期望方程”。

三、千遍万化,打包汇总

证明好了上面的方程后,很有可能会有人有疑惑:“这和我看到的贝尔曼方程也不是完全一样啊,我看到的感觉更复杂啊”。确实,上面只是贝尔曼方程中的一种形式,但是搞明白了一种之后,其它的推导和转化也就容易了,接下来我们将逐步推导并转化出贝尔曼方程的其它形式:

  1. 贝尔曼期望方程——展开版
  2. 贝尔曼期望方程——动作价值函数版
  3. 贝尔曼最优方程

补充

  1. 全期望公式证明

E ( X ) = ∑ i = 1 n x i P ( x i ) < 期望的定义 > = ∑ i = 1 n [ x i ∑ k = 1 m P ( x i , Y k ) ] < 将 P ( x i ) 展开 > = ∑ i = 1 n [ x i ∑ k = 1 m P ( x i ∣ Y k ) P ( Y k ) ] < 条件期望的定义 > = ∑ i = 1 n ∑ k = 1 m [ x i P ( x i ∣ Y k ) P ( Y k ) ] < 交换求和次序 > = ∑ k = 1 m [ ∑ i = 1 n x i P ( x i ∣ Y k ) ] P ( Y k ) < 对 i 求和时, Y k 相当于常量 > = ∑ k = 1 m E ( X ∣ Y k ) P ( Y k ) < 期望的定义 > = E ( E ( X ∣ Y ) ) < 期望的定义 > \begin{aligned} &E\left(X\right) \\ &=\sum_{i=1}^nx_iP(x_i) <期望的定义>\\ &=\sum_{i=1}^n\left[x_i{\sum_{k=1}^mP\left(x_i,Y_k\right)}\right] <将P(x_i)展开>\\ &=\sum_{i=1}^n\left[x_i{\sum_{k=1}^mP\left(x_i|Y_k\right)P\left(Y_k\right)}\right] <条件期望的定义>\\ &=\sum_{i=1}^n{\sum_{k=1}^m[x_iP\left(x_i|Y_k\right)P\left(Y_k\right)]} <交换求和次序>\\ &=\sum_{k=1}^m{[\sum_{i=1}^nx_iP\left(x_i|Y_k\right)]P\left(Y_k\right)} <对i求和时,Y_k相当于常量>\\ &=\sum_{k=1}^m{E(X|Y_k)P\left(Y_k\right)} <期望的定义>\\ &=E(E(X|Y))<期望的定义>\\ \end{aligned} E(X)=i=1nxiP(xi)<期望的定义>=i=1n[xik=1mP(xi,Yk)]<P(xi)展开>=i=1n[xik=1mP(xiYk)P(Yk)]<条件期望的定义>=i=1nk=1m[xiP(xiYk)P(Yk)]<交换求和次序>=k=1m[i=1nxiP(xiYk)]P(Yk)<i求和时,Yk相当于常量>=k=1mE(XYk)P(Yk)<期望的定义>=E(E(XY))<期望的定义>

哈密顿-雅可比-贝尔曼方程推导是基于动态规划的思想。动态规划是一种解决多阶段决策过程最优化问题的方法。在这个过程中,我们需要找到一个最优策略,使得总成本最小化。这个问题可以被分解成多个子问题,每个子问题都是一个最优化问题。通过解决这些子问题,我们可以得到整个问题的最优解。 在动态规划中,我们需要定义一个价值函数,它表示在当前状态下采取最优策略所能得到的最小成本。哈密顿-雅可比-贝尔曼方程就是用来计算这个价值函数的。具体来说,它是一个偏微分方程,描述了价值函数在时间和状态上的变化。 哈密顿-雅可比-贝尔曼方程推导可以分为两个步骤。首先,我们需要定义一个贝尔曼方程,它描述了价值函数在一个时间步长内的变化。然后,我们将这个贝尔曼方程推广到连续时间和状态空间上,得到哈密顿-雅可比-贝尔曼方程。 具体来说,贝尔曼方程可以表示为: V(s) = min_u {c(s,u) + γ ∑_s' p(s'|s,u) V(s')} 其中,V(s)表示在状态s下的价值函数,c(s,u)表示在状态s下采取行动u所产生的成本,p(s'|s,u)表示在状态s下采取行动u后转移到状态s'的概率,γ是一个折扣因子,用于平衡当前和未来的成本。 接下来,我们将这个贝尔曼方程推广到连续时间和状态空间上。我们定义一个哈密顿函数H(x,u,t),它表示在时间t和状态x下采取行动u所能得到的最小成本。哈密顿函数可以表示为: H(x,u,t) = min_v {c(x,u,v,t) + ∂V(x,t)/∂t + ∑_i=1^n f_i(x,u,v,t) ∂V(x,t)/∂x_i} 其中,c(x,u,v,t)表示在状态x下采取行动u和v所产生的成本,f_i(x,u,v,t)表示状态x在第i个维度上的变化率。 最后,我们可以得到哈密顿-雅可比-贝尔曼方程: ∂V(x,t)/∂t + min_u H(x,u,t) = 0 这个方程描述了价值函数在时间和状态上的变化。通过求解这个方程,我们可以得到最优策略和最小成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值