Linxii's Blog
RL的原理-3-贝尔曼最优公式Blur image

1.贝尔曼最优公式#

  贝尔曼最优公式(Bellman Optimality Equations)描述了在最优策略下,状态值函数和动作值函数之间的关系。

  对于状态值函数v(s)v_{*}(s),贝尔曼最优公式表示为:

v(s)=maxπaπ(as)rp(rs,a)r+γsp(ss,a)v(s),sSv_{*}(s) =\max_{\pi} \sum_{a} \pi(a|s) \sum_{r} p(r | s, a)r+ \gamma \sum_{s'} p(s' | s, a) v_{*}(s'), \forall s \in S =maxpiaπ(as)q(s,a),sS=max_{pi} \sum_{a} \pi(a|s) q_{*}(s, a), \forall s \in S

  其向量形式为:

v=maxπ(Rπ+γPπv)\mathbf{v_{*}} = \max_{\pi} \left( \mathbf{R^{\pi}} + \gamma \mathbf{P^{\pi}} \mathbf{v_{*}} \right)

2. 不动点与Contraction Mapping theorem#

2.1 不动点#

  在数学中,不动点(fixed point)是指在某个映射下保持不变的点。具体来说,给定一个映射f:XXf: X \to X,如果存在一个点xXx^* \in X,使得f(x)=xf(x^*) = x^*,那么xx^*就是ff的不动点。

  简单表示就是f(x)=xf(x)=x的解。

2.2 收缩映射#

  收缩映射(contraction mapping)是指在一个度量空间中,将任意两个点之间的距离缩小的映射。具体来说,给定一个度量空间(X,d)(X, d),如果存在一个常数0k<10 \leq k < 1,使得对于任意的x,yXx, y \in X,都有d(f(x),f(y))kd(x,y)d(f(x), f(y)) \leq k \cdot d(x, y),那么ff就是一个收缩映射。

  可以举个例子,比如函数f(x)=12xf(x) = \frac{1}{2}x在实数集上是一个收缩映射,因为对于任意的x,yRx, y \in \mathbb{R},都有:

f(x)f(y)=12x12y=12xy|f(x) - f(y)| = \left|\frac{1}{2}x - \frac{1}{2}y\right| = \frac{1}{2}|x - y|

2.3 Contraction Mapping Theorem#

  收缩映射定理(Contraction Mapping Theorem)指出,在一个完备度量空间中,任何收缩映射都有且只有一个不动点。换句话说,如果f:XXf: X \to X是一个收缩映射,那么存在唯一的xXx^* \in X,使得f(x)=xf(x^*) = x^*

3.贝尔曼最优公式求解#

  由于贝尔曼最优公式是一个收缩映射,根据收缩映射定理,我们可以保证通过反复应用贝尔曼最优公式,最终会收敛到唯一的最优状态值函数v(s)v_{*}(s)

迭代算法

  具体来说,我们可以从一个初始的状态值函数v0(s)v_0(s)开始,反复应用贝尔曼最优公式,得到一系列的状态值函数v1(s),v2(s),...v_1(s), v_2(s), ...。随着迭代次数的增加,这些状态值函数将逐渐逼近最优状态值函数v(s)v_{*}(s)

vk+1(s)=f(vk(s))=maxπ(Rπ+γPπvk)v_{k+1}(s) = f(v_k(s)) = \max_{\pi} \left( \mathbf{R^{\pi}} + \gamma \mathbf{P^{\pi}} \mathbf{v_k} \right)

4.一些性质#

  在公式中什么是已知的呢?

  • Reward : rr
  • System model : p(ss,a),p(rs,a)p(s' | s, a),p(r|s,a)
  • Discount factor : γ\gamma

  我们得到的最优策略与设置的reward、discount factor(即公式中的γ\gamma)等有关。

  当γ1\gamma \to 1时,智能体更加关注长期奖励;当γ0\gamma \to 0时,智能体更加关注短期奖励。而且γ\gamma也会使得智能体选择最短路径。

RL的原理-3-贝尔曼最优公式
https://linxii.top/blog/rl-learning-3-opbellman
Author 林夕夕
Published at January 21, 2026
Comment seems to stuck. Try to refresh?✨