贝尔曼方程推导(无跳步)
这两天学习MDP,对于贝尔曼方程有很大的困惑,而且找了很多资料都没有详尽的推导,我这里把详尽推导写出来,希望能帮到正在学习的同学们。
V π ( s ) = E [ G t ∣ S t = s ] = E [ R t + 1 + γ G t + 1 ∣ S t = s ] = E [ R t + 1 + γ V π ( s ′ ) ∣ s ] \begin{aligned} V_{\pi}(s) &= E[G_t|S_t=s] \\ &= E[R_{t+1} + \gamma G_{t+1}|\pmb{S_t=s}] \\ &= E[R_{t+1}+\gamma V_{\pi}(s')|s] \end{aligned} Vπ(s)=E[Gt∣St=s]=E[Rt+1+γGt+1∣St=sSt=sSt=s]=E[Rt+1+γVπ(s′)∣s]
但是 V π ( s ′ ) = E [ G t + 1 ∣ S t + 1 = s ′ ] V_{\pi}(s')=E[G_{t+1}|\pmb{S_{t+1}=s'}] Vπ(s′)=E[Gt+1∣St+1=s′St+1=s′St+1=s′],上面这个最后一步到底是怎么出现的??
下面我在推导这个贝尔曼方程时会顺带解答这个疑惑。
#------------------------------------------------------------------------------------------------#
值函数给出了从状态 s s s出发,遵循策略 π \pi π会得到的期望回报,用于评估一个策略的好坏。贝尔曼方程给出了值函数的计算方法(迭代/递归)。
从状态值函数的表达式可以发现, t t t时刻计算的值函数必然和 t + 1 t+1 t+1时刻的值函数存在关系,因为 G t G_t Gt必然包含着 G t + 1 G_{t+1} Gt+1,所以应该是可以找到前后时刻值函数的递归关系的。就像隐马尔科夫模型中的前向变量、后向变量,前后时刻存在递归关系。
值函数前后时刻之间的递归关系得到的就是贝尔曼方程了:
状态值函数:
V π ( s ) = E [ G t ∣ S t = s ] = E [ ∑ k = 0 ∞ γ k R t + 1 + k ∣ S t = s ] = E [ R t + 1 + γ ∑ k = 0 ∞ γ k R t + 2 + k ∣ S t = s ] = E [ R t + 1 + γ G t + 1 ∣ S t = s ] = E [ R t + 1 ∣ S t = s ] + γ E [ G t + 1 ∣ S t = s ] = ∑ R t + 1 R t + 1 P ( R t + 1 ∣ S t = s ) + γ ∑ G t + 1 G t + 1 P ( G t + 1 ∣ S t = s ) \begin{aligned} V_\pi(s) &= E[G_t|S_t=s] \\ &= E[\displaystyle\sum_{k=0}^\infin \gamma^k R_{t+1+k}|S_t=s] \\ &= E[R_{t+1} + \gamma \displaystyle\sum_{k=0}^\infin \gamma^k R_{t+2+k} | S_t=s] \\ &= E[R_{t+1} + \gamma G_{t+1}|S_t=s] \\ &= E[R_{t+1}|S_t=s]+\gamma E[G_{t+1}|S_t=s] \\ &=\displaystyle\sum_{R_{t+1}}R_{t+1}P(R_{t+1}|S_t=s) \\ &+\gamma \displaystyle\sum_{G_{t+1}}G_{t+1}P(G_{t+1}|S_t=s) \\ \end{aligned} Vπ(s)=E[Gt∣St=s]=E[k=0∑∞γkRt+1+k∣St=s]=E[Rt+1+γk=0∑∞γkRt+2+k∣St=s]=E[Rt+1+γGt+1∣St=s]=E[Rt+1∣St=s]+γE[Gt+1∣St=s]=Rt+1∑Rt+1P(Rt+1∣St=s)+γGt+1∑Gt+1P(Gt+1∣St=s)
我们用 s s s代指 S t S_t St, a a a代指 A t A_t At,用 s ′ s' s′ 代指 S t + 1 S_{t+1} St+1,即当前时刻的状态为 s s s,当前采取的动作是 a a a,下一时刻状态为 s ′ s' s′。注意, s , a , s ′ s,a,s' s,a,s′都是有多种可能取值的。而且这里时刻 t t t只是一种泛指,只是为了指示 s , s ′ s,s' s,s′是前后关系。
P ( R t + 1 ∣ S t = s ) P(R_{t+1}|S_t=s) P(Rt+1∣St=s)–>需要在 S t / s S_t/s St/s条件下,采取动作 A t / a A_t/a At/a ,随后转移到状态 S t + 1 / s ′ S_{t+1}/s' St+1/s′,并随即确定性地获得奖励 R t + 1 R_{t+1} Rt+1(用 R s s ′ a R_{ss'}^a Rss′a表示)。 ∑ R t + 1 \displaystyle\sum_{R_{t+1}} Rt+1∑指代所有情形的 R t + 1 / R s s ′ a R_{t+1}/R_{ss'}^a Rt+1/Rss′a,对应所有情形的动作 A t / a A_t/a At/a、 S t + 1 / s ′ S_{t+1}/s' St+1/s′。
P ( G t + 1 ∣ S t = s ) P(G_{t+1}|S_t=s) P(Gt+1∣St=s)–>需要在 S t / s S_t/s St/s条件下采取动作 A t / a A_t/a At/a,随后转移到状态 S t + 1 / s ′ S_{t+1}/s' St+1/s′,然后需要在状态 S t + 1 / s ′ S_{t+1}/s' St+1/s′条件下依概率产生 G t + 1 G_{t+1} Gt+1。 ∑ G t + 1 \displaystyle\sum_{G_{t+1}} Gt+1∑同理
( 接 上 式 ) = ∑ a ∑ s ′ R s s ′ a P ( a ∣ s ) P ( s ′ ∣ s , a ) + γ ∑ G t + 1 ∑ a ∑ s ′ G t + 1 P ( a ∣ s ) P ( s ′ ∣ s , a ) P ( G t + 1 ∣ s ′ ) \begin{aligned} &(接上式) \\ &= \displaystyle\sum_{a}\displaystyle\sum_{s'}R_{ss'}^a P(a|s) P(s'|s,a) \\ &+\gamma \displaystyle\sum_{G_{t+1}}\displaystyle\sum_{a}\displaystyle\sum_{s'} G_{t+1}P(a|s)P(s'|s,a)P(G_{t+1}|s') \\ \end{aligned} (接上式)=a∑s′∑Rss′aP(a∣s)P(s′∣s,a)+γGt+1∑a∑s′∑Gt+1P(a∣s)P(s′∣s,a)P(Gt+1∣s′)
这里, ∑ G t + 1 G t + 1 P ( G t + 1 ∣ s ′ ) = E [ G t + 1 ∣ s ′ ] = V π ( s ′ ) \displaystyle\sum_{G_{t+1}}G_{t+1}P(G_{t+1}|s')=E[G_{t+1}|s']=V_{\pi}(s') Gt+1∑Gt+1P(Gt+1∣s′)=E[Gt+1∣s′]=Vπ(s′)。用 π ( a ∣ s ) \pi(a|s) π(a∣s)表示 P ( a ∣ s ) P(a|s) P(a∣s), P s s ′ a P_{ss'}^a Pss′a表示 P ( s ′ ∣ s , a ) P(s'|s,a) P(s′∣s,a)
( 接 上 式 ) = ∑ a ∑ s ′ R s s ′ a π ( a ∣ s ) P s s ′ a + γ ∑ a ∑ s ′ π ( a ∣ s ) P s s ′ a V π ( s ′ ) = ∑ a ∑ s ′ π ( a ∣ s ) P s s ′ a ( R s s ′ a + γ V π ( s ′ ) ) \begin{aligned} &(接上式) \\ &=\displaystyle\sum_{a}\displaystyle\sum_{s'}R_{ss'}^a \pi(a|s) P_{ss'}^a \\ &+\gamma \displaystyle\sum_{a}\displaystyle\sum_{s'}\pi(a|s)P_{ss'}^aV_{\pi}(s') \\ &= \displaystyle\sum_{a}\displaystyle\sum_{s'} \pi(a|s) P_{ss'}^a(R_{ss'}^a + \gamma V_{\pi}(s')) \end{aligned} (接上式)=a∑s′∑Rss′aπ(a∣s)Pss′a+γa∑s′∑π(a∣s)Pss′aVπ(s′)=a∑s′∑π(a∣s)Pss′a(Rss′a+γVπ(s′))
至此,我们就得到了贝尔曼方程其中的一个,另一个是反映动作值函数前后时刻递归关系的。
补充一下
∑ a ∑ s ′ π ( a ∣ s ) P s s ′ a V π ( s ′ ) = ∑ a ∑ s ′ P ( a ∣ s ) P ( s ′ ∣ s , a ) V π ( s ′ ) = E [ V π ( s ′ ) ∣ s ] \begin{aligned} \displaystyle\sum_{a}\displaystyle\sum_{s'}\pi(a|s)P_{ss'}^aV_{\pi}(s') &= \displaystyle\sum_{a}\displaystyle\sum_{s'}P(a|s)P(s'|s,a)V_{\pi}(s') \\ &=E[V_{\pi}(s')|s] \end{aligned} a∑s′∑π(a∣s)Pss′aVπ(s′)=a∑s′∑P(a∣s)P(s′∣s,a)Vπ(s′)=E[Vπ(s′)∣s]
因为 E [ V π ( s ′ ) ∣ s ] E[V_{\pi}(s')|s] E[Vπ(s′)∣s]–>需要在状态 s s s条件下,采取动作 a a a,随后转移到状态 s ′ s' s′,然后得到 V π ( s ′ ) V_{\pi}(s') Vπ(s′)
所以才会出现:
V π ( s ) = E [ G t ∣ S t = s ] = E [ R t + 1 + γ G t + 1 ∣ S t = s ] = E [ R t + 1 + γ V π ( s ′ ) ∣ s ] \begin{aligned} V_{\pi}(s) &= E[G_t|S_t=s] \\ &= E[R_{t+1} + \gamma G_{t+1}|S_t=s] \\ &= E[R_{t+1}+\gamma V_{\pi}(s')|s] \end{aligned} Vπ(s)=E[Gt∣St=s]=E[Rt+1+γGt+1∣St=s]=E[Rt+1+γVπ(s′)∣s]
这样就解答了开头的疑惑~
动作值函数的递归关系同理,就不写了。
有帮助的话点个赞啊~~