欢迎大家关注搜索关注微信公众号《一懂算法》,希望能把东西讲的通俗易懂,终极目标是一遍就懂
零、前言
相信只要是浅学过强化学习的人应该都能感受到贝尔曼方程的重要性,可以说是遍布了各种教程的每个角落。在遇到这些贝尔曼方程的时候,一直有几个问题困扰着我:
- 怎么又冒出来一个贝尔曼方程?
- 咋格式还和上一个不一样,变体咋这么多?
- 证明怎么这么跳跃?
几度回看都是跳过贝尔曼方程的细节,不想被绕进去。这几天终于有时间静下心来把证明过程理清了一遍,希望能用直白的语言跟大家讲清楚,尽量掰开揉碎了讲给大家。
一、基础变量符号定义
讲之前还是得声明一下几个重要变量的符号,毕竟不同版本之前的符号约定很容易差异。【这里默认大家了解强化学习基础概念,只是简单声明定义】
第
t
t
t回合下:
- 奖励为 r t r_t rt,状态为 s t s_t st,动作为 a t a_t at
- 回报 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+…+γT−t−1RT,也就是当前回合到回合结束的总奖励(含折扣)
- 状态价值函数 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π[Gt∣St=st],即 s t s_t st状态下回报的期望
- 动作价值函数 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π[Gt∣St=st,At=at],即 s t s_t st状态下执行动作 a t a_t at后回报的期望
二、抽丝剥茧,逐步证明
好了,现在开始进入正文:
-
首先,为什么贝尔曼方程能成为强化学习的核心基础?
- 是因为它描述的是当前状态的价值和下一状态的价值的关系,有了这个关系,就可以通过下一个状态的价值来迭代更新上一状态的价值【这样就可以通过最后一个状态逐步往前倒着推】。
- 这也是贝尔曼方程推导思想的核心,我们需要想办法找到当前状态价值和下一状态价值的具体关系,搭好它们之间的“大桥”,也就是找到 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 ) 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[Gt∣St=st](状态价值函数的定义)=E[Rt+1+γRt+2+γ2Rt+3+…∣St=st](回报的定义)=E[Rt+1∣St=st]+γE[Rt+2+γRt+3+γ2Rt+4+…∣St=st](期望的可加性)=R(st)+γE[Gt+1∣St=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(st−1),我们还是需要继续得到 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+1∣St+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+1∣St=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(X∣Yk)=E(E(X∣Y))
公式含义说法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+1∣St=st]=st+1∑E[Gt+1∣St=st,St+1=st+1]p(st+1∣st)
再由于马尔可夫性, 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+1∣St=st,St+1=st+1]=E[Gt+1∣St+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+1∣St=st]=st+1∑V(st+1)p(st+1∣st)=E[Vt+1∣St=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+1∣St=st]=R(st)+γst+1∑V(st+1)p(st+1∣st)=R(st)+γE[Vt+1∣St=st]
以上的公式也被称作“贝尔曼期望方程”。
-
三、千遍万化,打包汇总
证明好了上面的方程后,很有可能会有人有疑惑:“这和我看到的贝尔曼方程也不是完全一样啊,我看到的感觉更复杂啊”。确实,上面只是贝尔曼方程中的一种形式,但是搞明白了一种之后,其它的推导和转化也就容易了,接下来我们将逐步推导并转化出贝尔曼方程的其它形式:
- 贝尔曼期望方程——展开版
- 贝尔曼期望方程——动作价值函数版
- 贝尔曼最优方程
补充
- 全期望公式证明
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=1∑nxiP(xi)<期望的定义>=i=1∑n[xik=1∑mP(xi,Yk)]<将P(xi)展开>=i=1∑n[xik=1∑mP(xi∣Yk)P(Yk)]<条件期望的定义>=i=1∑nk=1∑m[xiP(xi∣Yk)P(Yk)]<交换求和次序>=k=1∑m[i=1∑nxiP(xi∣Yk)]P(Yk)<对i求和时,Yk相当于常量>=k=1∑mE(X∣Yk)P(Yk)<期望的定义>=E(E(X∣Y))<期望的定义>