马尔科夫决策过程之Bellman Equation(贝尔曼方程)

本文总结一下马尔科夫决策过程之Bellman Equation(贝尔曼方程)

 

1

Bellman Equation for MRPs

首先我们从value function的角度进行理解,value function可以分为两部分:

见下面的推导公式:

 

我们直接从第一行到最后一行是比较好理解的,因为从状态s到状态s+1,是不确定,还是之前的例子。

 

比如掷骰子游戏,当前点数是1的情况下,下一个状态有可能是1,2,3,4,5,6的任意一种状态可能,所以最外层会有一个期望符号。

 

如果我们跟着一直推下来的话:有疑问的会在导出最后一行时,将G(t+1)变成了v(St+1)。其理由是收获的期望等于收获的期望的期望。参考叶强童鞋的理解。

 

则最后我们得到了针对MRP的Bellman方程:

 

通过方程可以看出v(s)由两部分组成,一是该状态的即时奖励期望,即时奖励期望等于即时奖励,因为根据即时奖励的定义,它与下一个状态无关。

 

这里解释一下为什么会有期望符合,是因为从状态s的下一个状态s+1可能有多个状态,比如掷骰子,下一个状态可能有1,2,3,4,5,6,从s到下一个状态都是有一定概率,所以会有期望符合。

 

另一个是下一时刻状态的价值期望,可以根据下一时刻状态的概率分布得到其期望,比如在上面掷骰子例子中,从状态1到下一个状态1,2,3,4,5,6求期望的做法,我们可以直接用概率公式p(1->1),p(1->2),p(1->3),p(1->4),p(1->5),p(1->6) 然后乘以对应下一状态的价值函数即可。

 

如果用s’表示s状态下一时刻任一可能的状态,那么Bellman方程可以写成:

完整的slides如下:

 

 

2

Example: Bellman Equation for Student MRP

好,我们在上面既然知道了通过Bellman Equation来迭代的计算每个状态的价值函数,下面我们举出一个例子来算一个状态的value function帮助理解

 

 

通过上图我们分析一下4.3如何计算?见下图即可:

 

可能还有一些童鞋会问,算该状态的value function的时候,其它的状态的value function是怎么知道的呢?

 

比如算4.3的时候,我们如何知道它后继状态的value funciton为0.8,10。其实这些值一开始可以任意初始化,后面可以学习更新,就类似于神经网络的权值参数,一开始任意初始化,后面通过loss反向更新一样。

 

3

Bellman Equation in Matrix Form

最后我们可以给出Bellman方程的矩阵形式和求解

 

结合矩阵的具体表达形式如下:

 

 

总的slides如下:

 

 

Bellman方程是一个线性方程组,理论上解可以直接求解:

 

 

但是它的计算复杂度是0(n^3),  是状态数量,因为矩阵的求逆过程为0(n^3)。

由于求解复杂度较高。因此直接求解仅适用于小规模的MRPs。

 

大规模MRP的求解通常需要使用迭代法。常用的迭代方法有:

  • 动态规划Dynamic Programming、
  • 蒙特卡洛评估Monte-Carlo evaluation、
  • 时序差分学习Temporal-Difference,
### 马尔科夫决策过程中的贝尔曼方程解释 #### 定义与背景 马尔科夫决策过程(Markov Decision Process, MDP)是一种用于建模具有序列决策问题的方法,在给定当前状态下,未来的状态仅依赖于现在的状态而独立于过去的状态。这种特性被称为马尔可夫性质[^3]。 #### 贝尔曼方程的作用 贝尔曼方程描述了在MDP中如何评估某个策略的好坏。对于任意给定的策略π,存在两个重要的函数来衡量其性能: - **状态值函数(V)**:表示遵循特定策略时处于某状态下的预期累积奖励。 \( V^\pi(s)=\mathbb{E}_\pi[R_t|S_t=s]=\sum_a \pi(a|s)\sum_{r,s'}p(r,s'|a,s)[r+\gamma V^\pi(s')] \) - **行动值函数(Q)**:则进一步细化到了采取具体动作后的效果上 \( Q^\pi(s,a)=\mathbb{E}_\pi[R_t|S_t=s,A_t=a]=\sum_{r,s'} p(r,s'|a,s)[r+\gamma\sum_{a'}\pi(a'|s')Q^\pi(s',a')] \) 上述公式表明无论是\(V\)还是\(Q\)都可通过考虑即时奖励加上后续状态/动作组合所能带来的长期收益来进行计算[^1]。 #### 折扣因子的影响 引入折扣因子γ(0≤γ<1),使得近期奖励相较于远期更有价值,这不仅反映了现实世界中人们更倾向于眼前利益的事实,同时也帮助解决了无限时间范围内的收敛性问题。当改变此参数时,确实会影响最终形成的策略倾向——较低的γ可能导致更加短视的行为模式;较高的γ鼓励长远规划[^2]。 #### 计算挑战 尽管理论上可以通过求解线性方程组的方式找到精确解,但在实际应用中由于环境复杂度高以及可能存在的连续空间等问题,直接获取闭合形式的解决方案往往变得不可行。因此研究者们开发了许多近似算法如动态规划、蒙特卡洛方法和时序差分学习等来间接逼近最优解。 ```python import numpy as np def bellman_update(V, P, R, gamma=0.9): """ Perform one step of the Bellman update on value function. :param V: Current estimate of state values (array-like). :param P: Transition probability matrix (dict or array-like). :param R: Reward table (dict or array-like). :param gamma: Discount factor between 0 and 1. :return: Updated estimates for each state's value. """ new_V = {} for s in V.keys(): max_action_value = float('-inf') for action in range(len(P[s])): expected_return = sum([prob * (R[(s,action,next_state)] + gamma*V[next_state]) for next_state, prob in enumerate(P[s][action])]) if expected_return > max_action_value: max_action_value = expected_return new_V[s] = max_action_value return new_V ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值