强化学习:贝尔曼方程

前言

刚开始学强化学习(RL)的时候,有一道必须跨过去的坎,叫贝尔曼方程(Bellman Equation)

甚至可以说,不理解贝尔曼方程,就读不懂DQN、PPO这些精彩的算法了。很多教程上来就是一堆 s,a,s′,π,ps, a, s', \pi, ps,a,s′,π,p,让人望而生畏。但其实,它的核心思想非常朴素,就是一种 "递归" 的智慧。

今天这篇文章,我想用最通俗的语言,配合严格的数学推导,把贝尔曼期望方程和最优方程彻底捋顺,同时也记录一下,未来忘了再回来翻一翻。

在阅读之前,建议对强化信息的概念有个最基础的理解,至少得知道强化学习是个什么东西吧,然后还有智能体,环境,动作这些概念得知道。

一、 直观理解:如何给"当下"估价?

在强化学习里,我们最关心的东西叫价值函数(Value Function) ,记作 V(s)V(s)V(s)。它的意思是:站在状态 sss 这个位置,长远来看,我到底能拿到多少好处?

举个生活中的例子:考研复习

假设今天是12月1日,你坐在图书馆(这是状态 StS_tSt)。

你怎么评估"坐在图书馆"这个状态的价值?

  1. 即时奖励(Reward) :今天你复习了,很充实,或者做对了一道题,得到一点点快乐。这是 Rt+1R_{t+1}Rt+1。
  2. 未来价值(Future Value) :因为今天复习了,你明天(St+1S_{t+1}St+1)的基础会更好,明天复习效率更高,最终考上的概率更大。这个"明天的价值",就是 V(St+1)V(S_{t+1})V(St+1)。

但是,明天的价值不能直接拿来用,因为未来是不确定的,而且我们通常比较短视(比较看重眼前的快乐)。所以我们要给明天打个折,乘以一个折扣因子 γ\gammaγ(比如 0.9,搞不好明天直接摆烂不考了,这部分价值不就没了,0.9就代表了对不确定性的补偿)。

于是,我们得到了一个朴素的等式:

今天的价值 = 今天的收获 + 0.9 × 明天的价值

这就是贝尔曼方程的灵魂 :它把计算"无限远的未来总收益",转化成了计算"眼前"和"下一步"。只要知道了下一步的价值,我就能推导出这一步的价值。 这种形式,特别适合用计算机来迭代计算,所以意义重大。

二、 预备知识:数学符号的定义

在推导之前,我们要把刚才的直觉翻译成数学语言。别怕,只有这几个符号:

  1. StS_tSt : ttt 时刻的状态。
  2. AtA_tAt : 在状态 StS_tSt 采取的动作。
  3. Rt+1R_{t+1}Rt+1 : 执行动作后,环境给的即时奖励(注意下标通常是 t+1,因为是动作发生后得到的)。
  4. γ\gammaγ : 折扣因子,范围 [0,1][0, 1][0,1],防止未来无限收益导致数值爆炸。
  5. GtG_tGt : 回报(Return) 。这是最重要的概念,代表从 ttt 时刻开始,一直到结束,所有奖励打折后的总和:
    Gt=Rt+1+γRt+2+γ2Rt+3+... G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \dots Gt=Rt+1+γRt+2+γ2Rt+3+...
  6. Vπ(s)V_{\pi}(s)Vπ(s) : 状态价值函数。代表在策略 π\piπ 下,状态 sss 的期望回报。
    Vπ(s)=Eπ[Gt∣St=s] V_{\pi}(s) = \mathbb{E}_{\pi} [G_t | S_t = s] Vπ(s)=Eπ[Gt∣St=s]

三、 贝尔曼期望方程的推导

所谓 "期望方程" ,是基于特定策略 π\piπ 的。比如你的策略是"瞎蒙",那这个方程算出来的就是"瞎蒙策略"下的价值;如果你的策略是"保守",算出来的就是"保守策略"下的价值。

我们来看看 Vπ(s)V_{\pi}(s)Vπ(s) 是怎么展开的。

第一步:回报 GtG_tGt 的递归分解

这是最关键的一个展开:
Gt=Rt+1+γRt+2+γ2Rt+3+γ3Rt+4+...=Rt+1+γ(Rt+2+γRt+3+γ2Rt+4+... ) \begin{aligned} G_t &= R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \gamma^3 R_{t+4} + \dots \\ &= R_{t+1} + \gamma (R_{t+2} + \gamma R_{t+3} + \gamma^2 R_{t+4} + \dots) \end{aligned} Gt=Rt+1+γRt+2+γ2Rt+3+γ3Rt+4+...=Rt+1+γ(Rt+2+γRt+3+γ2Rt+4+...)

仔细看括号里那一串,是不是觉得眼熟?没错,它正好是 t+1t+1t+1 时刻的回报 Gt+1G_{t+1}Gt+1。

所以:
Gt=Rt+1+γGt+1 G_t = R_{t+1} + \gamma G_{t+1} Gt=Rt+1+γGt+1

第二步:代入价值函数的定义

Vπ(s)=E[Gt∣St=s] V_{\pi}(s) = \mathbb{E} [G_t | S_t = s] Vπ(s)=E[Gt∣St=s]

把刚才的递归式代进去:
Vπ(s)=E[Rt+1+γGt+1∣St=s] V_{\pi}(s) = \mathbb{E} [R_{t+1} + \gamma G_{t+1} | S_t = s] Vπ(s)=E[Rt+1+γGt+1∣St=s]

根据期望的线性性质(E[A+B]=E[A]+E[B]E[A+B] = E[A] + E[B]E[A+B]=E[A]+E[B]),我们可以拆开:
Vπ(s)=E[Rt+1∣St=s]+γE[Gt+1∣St=s] V_{\pi}(s) = \mathbb{E} [R_{t+1} | S_t = s] + \gamma \mathbb{E} [G_{t+1} | S_t = s] Vπ(s)=E[Rt+1∣St=s]+γE[Gt+1∣St=s]

重点来了
E[Gt+1∣St=s]\mathbb{E} [G_{t+1} | S_t = s]E[Gt+1∣St=s] 这一项,其实就是下一状态的价值 。但因为从 StS_tSt 到 St+1S_{t+1}St+1 可能 有随机性,我们不能直接写成 V(St+1)V(S_{t+1})V(St+1),它实际上是对下一时刻价值的期望。

最终,我们可以把它写成半数学、半直觉的形式:
Vπ(s)=E[Rt+1+γVπ(St+1)∣St=s] V_{\pi}(s) = \mathbb{E} [R_{t+1} + \gamma V_{\pi}(S_{t+1}) | S_t = s] Vπ(s)=E[Rt+1+γVπ(St+1)∣St=s]

第三步:把期望 E\mathbb{E}E 展开成求和 ∑\sum∑

上面的公式还停留在"期望"符号上,但在计算机里编程,我们需要具体的概率分布来计算。

这里的随机性来源有两个:

  1. 策略的具体动作 :选哪个动作 aaa?(由 π(a∣s)\pi(a|s)π(a∣s) 决定,针对具体的sss可能得到确定的值或者概率分布)
  2. 环境的物理法则 :选了动作 aaa 后,会跳到哪个新状态 s′s's′?给多少奖励 rrr?(由状态转移概率 p(s′,r∣s,a)p(s', r | s, a)p(s′,r∣s,a) 决定)

像剥洋葱一样,我们把期望剥开:

第一层洋葱(动作):

我们要对自己所有可能采取的动作 aaa 求和。
Vπ(s)=∑aπ(a∣s)⋅qπ(s,a) V_{\pi}(s) = \sum_{a} \pi(a|s) \cdot q_{\pi}(s, a) Vπ(s)=a∑π(a∣s)⋅qπ(s,a)
(注:qπ(s,a)q_{\pi}(s, a)qπ(s,a) 是动作价值函数,代表在状态 s 做动作 a 的价值)

第二层洋葱(环境):

对于每一个动作 aaa,环境会反馈新状态 s′s's′ 和奖励 rrr。我们需要对所有可能的 s′s's′ 和 rrr 求和。
qπ(s,a)=∑s′,rp(s′,r∣s,a)[r+γVπ(s′)] q_{\pi}(s, a) = \sum_{s', r} p(s', r | s, a) [r + \gamma V_{\pi}(s')] qπ(s,a)=s′,r∑p(s′,r∣s,a)[r+γVπ(s′)]

合并起来,就是完整的贝尔曼期望方程:
Vπ(s)=∑aπ(a∣s)∑s′,rp(s′,r∣s,a)[r+γVπ(s′)] V_{\pi}(s) = \sum_{a} \pi(a|s) \sum_{s', r} p(s', r | s, a) \left[ r + \gamma V_{\pi}(s') \right] Vπ(s)=a∑π(a∣s)s′,r∑p(s′,r∣s,a)[r+γVπ(s′)]

解读这个公式:

我当前状态的价值 = ∑\sum∑(我做某个动作的概率 ×\times× ∑\sum∑(环境反馈某个结果的概率 ×\times× (即时奖励 + 打折后的下一状态价值)))

四、 贝尔曼最优方程的推导

明白了期望方程,最优方程(Bellman Optimality Equation) 就很容易理解了。

强化学习的终极目标,不是评估某个烂策略,而是找到最强策略

我们需要求 V∗(s)V_*(s)V∗(s),也就是所有可能策略里,能得到的最大价值。

核心区别:用 max 替代 sum

在期望方程里,我们是按照策略 π\piπ 的概率去平均 动作的收益。

但是在寻找最优路径时,我们假设我们变得非常聪明,每一步都只选那个收益最大的动作

所以,我们不需要对动作 π(a∣s)\pi(a|s)π(a∣s) 求和了,我们直接挑那个让 QQQ 值最大的动作:

V∗(s)=max⁡aQ∗(s,a) V_*(s) = \max_{a} Q_*(s, a) V∗(s)=amaxQ∗(s,a)

接下来,把 Q∗(s,a)Q_*(s, a)Q∗(s,a) 展开(环境的随机性 ppp 依然存在,这个我们控制不了,所以环境这部分还得求期望/求和):

Q∗(s,a)=E[Rt+1+γV∗(St+1)∣St=s,At=a] Q_*(s, a) = \mathbb{E} [R_{t+1} + \gamma V_*(S_{t+1}) | S_t = s, A_t = a] Q∗(s,a)=E[Rt+1+γV∗(St+1)∣St=s,At=a]

写成求和形式:
Q∗(s,a)=∑s′,rp(s′,r∣s,a)[r+γV∗(s′)] Q_*(s, a) = \sum_{s', r} p(s', r | s, a) [r + \gamma V_*(s')] Q∗(s,a)=s′,r∑p(s′,r∣s,a)[r+γV∗(s′)]

合并起来,就是贝尔曼最优方程:

V∗(s)=max⁡a∑s′,rp(s′,r∣s,a)[r+γV∗(s′)] V_*(s) = \max_{a} \sum_{s', r} p(s', r | s, a) \left[ r + \gamma V_*(s') \right] V∗(s)=amaxs′,r∑p(s′,r∣s,a)[r+γV∗(s′)]

解读这个公式:

我当前状态的最优价值 = 我看了一圈所有能做的动作,找出那个能带给我(即时奖励 + 打折后未来最优价值)最大的那个动作,它的值就是我的值。

五、 总结与对比

为了方便记忆,我们把两个方程放在一起看:

  1. 贝尔曼期望方程(用于评估当前策略):
    vπ(s)=∑aπ(a∣s)∑s′,rp(s′,r∣s,a)[r+γvπ(s′)] v_{\pi}(s) = \sum_{a} \pi(a|s) \sum_{s', r} p(s', r | s, a) [r + \gamma v_{\pi}(s')] vπ(s)=a∑π(a∣s)s′,r∑p(s′,r∣s,a)[r+γvπ(s′)]

    • 关键词:平均。我是个普通人,听天由命(策略),计算平均能拿多少分。
    • 数学性质:是一个线性方程组,可以直接解(如果状态少),或者迭代解。
  2. 贝尔曼最优方程(用于寻找最优策略):
    v∗(s)=max⁡a∑s′,rp(s′,r∣s,a)[r+γv∗(s′)] v_{*}(s) = \max_{a} \sum_{s', r} p(s', r | s, a) [r + \gamma v_{*}(s')] v∗(s)=amaxs′,r∑p(s′,r∣s,a)[r+γv∗(s′)]

    • 关键词:挑选。我是个超人,我只选最好的路,计算理论最高分是多少。
    • 数学性质:包含 max⁡\maxmax 操作,是非线性的,通常用 价值迭代(Value Iteration)Q-Learning 来解。

贝尔曼方程之所以伟大,是因为它把一个 "多阶段决策问题" 转化成了一个 "局部最优化问题"

它告诉我们:不需要一口气看到终点。只要你能保证每一步的选择相对于下一步的价值是正确的,通过不断的迭代,你最终就能得到全局的最优解。 这就是动态规划的思想,也是强化学习算法(如DQN, Actor-Critic)的基石。

相关推荐
打码人的日常分享1 小时前
智慧城市一网统管建设方案,新型城市整体建设方案(PPT)
大数据·运维·服务器·人工智能·信息可视化·智慧城市
Sui_Network1 小时前
21shares 在纳斯达克推出 2 倍 SUI 杠杆 ETF(TXXS)
大数据·人工智能·游戏·金融·区块链
龙亘川2 小时前
开箱即用的智慧城市一网统管 AI 平台——功能模块详解(3)
大数据·人工智能·智慧城市·智慧城市一网统管 ai 平台
Michaelwubo2 小时前
tritonserver 推理框架
人工智能
稳石氢能2 小时前
稳石氢能董事长贾力出席2025高工氢电年会,呼吁制氢产业生态建设获广泛赞同。
人工智能
2301_800256112 小时前
8.2 空间查询基本组件 核心知识点总结
数据库·人工智能·算法
Aspect of twilight3 小时前
PyTorch DDP分布式训练Pytorch代码讲解
人工智能·pytorch·python
用户5191495848453 小时前
滥用ESC10:通过注册表配置不当实现权限提升的ADCS攻击分析
人工智能·aigc
黎茗Dawn3 小时前
DDPM-KL 散度与 L2 损失
人工智能·算法·机器学习