强化学习的数学原理-02章 贝尔曼公式

前情回顾

在引言与01章,我们介绍了强化学习所解决的问题,以及针对强化学习的一些基本概念及其含义,具体内容可以参考强化学习的数学原理-入门篇。在本章节,我们会深入理解状态值,策略评估,贝尔曼公式等概念。

状态值(State Value)

在强化学习中,状态值(又称状态价值,State Value)是指衡量一个状态好坏的标量值。我们之前提到,强化学习是在找最优解,这个最优解本身也是一个状态,一般称为目标状态(Target State)。状态值则可以辅助我们评估当前状态的相对优劣。
状态值是如何由来的呢?
这可能是强化学习中最最重要,最最需要理解清楚的问题。它是整个强化学习的根基。
一般来说,一个状态的state value等于该状态下的折扣回报期望值,具体而言,假设一个状态s的状态值用v表示,则可以写成:

v π ( s ) = E ( G t ∣ S t = s ) v_\pi(s) = E(G_t| S_t = s) vπ(s)=E(GtSt=s)

其中 π \pi π表示一个策略, G t G_t Gt表示 t 时刻下的折扣回报(本质上是一个概率分布)。
这里我们来解释一下,策略是指我们设置的一种方法,它指导我们在一个State 如何选择Action ,本质上是一个条件概率分布,这一点在第一章已经提及。一般来说,一个状态的State Value一定与策略相关,不针对策略的State Value是毫无意义的。比如,在股市投资中,一个人手上持有 100 万现金,市场行情稳定,在这个状态下,他选择激进投资,追逐高风险高回报所带来的收益期望与选择保守投资,优先现金和低风险债券所带来的收益期望是不一样的,同一个状态在不同的策略下可以有不同的回报,所以状态值的计算一定与策略有关,具体的关联我们稍后在数学推导中可以更加直观地看到。
其次,为什么State Value使用的是折扣回报而不是Action奖励(Reward)或者回报(Return)来估计一个状态?
我们需要解释一下Action Reward的概念以及回报(Return)的概念。
Action Reward表示环境对Agent在一个状态下采取的Action给予的反馈。一般而言,这种Reward源自于一个条件概率分布模型,它基于我们的问题建模。数学上可以写成如下形式:

r t ∼ P ( R ∣ S t = s , A t = a t ) r_t \sim P(R | S_t = s, A_t = a_t) rtP(RSt=s,At=at)

Return则代表了对于当前的Reward以及未来的Reward进行求和。数学上可以写成如下形式:

Q t = r t + r t + 1 + r t + 2    . . . Q_t = r_t + r_{t+1} + r_{t+2} \;... Qt=rt+rt+1+rt+2...

注意到,Return在当前时刻以及未来时刻的权重系数是相等的。我们之所以使用折扣回报G,是因为首先我们希望Agent不光关注眼下的利益,也要注意到未来的收益,否则算法会变成贪心的算法。但未来的收益又没有眼下的收益重要。
我们将用01章提到的机器人与网格世界的例子来说明我们提到的一些概念以及结论:
图2.1
图2.1 网格世界的实际案例,图(a)表示网格世界中的States(坐标)集合,图(b)表示一个Agent在网格世界中能采取的Actions集合,其中a5代表停止不动。

在图2.1中,环境Reward由我们所研究的问题而建模。比如说如果我们希望Agent找到一条路径通往Target( s 9 s_9 s9),且不经过任何的禁区( s 6 , s 7 s_6,s_7 s6,s7),则我们可以设置当Agent进入禁区时,环境给予 -1 作为reward表示给予惩罚,当Agent进入Target的时候,环境给予1作为reward表示给予奖励,此时我们可以直接写出Reward的条件概率分布,比如:

P ( R ∣ S t = s 5 , A t = a 2 ) = { − 1 p = 1 o t h e r s p = 0 P(R|S_t = s_5,A_t = a_2) = \{ \begin{array}{ll} -1 & p = 1 \\ others & p = 0 \end{array} P(RSt=s5,At=a2)={ 1othersp=1p=0

那么在某个状态下,Action Reward指的就是Agent在该状态下执行某个动作时,环境即时反馈的奖励值。但如果我们仅仅依赖Action Reward来评估状态的优劣,就会产生偏差,因为它没有考虑到后续可能的长期收益。比如:

  • 如果Agent在 s 8 s_8 s8 向右移动进入 s 9 s_9 s9,它会得到 Reward = 1;
  • 但如果Agent在 s 5 s_5 s5 向下移动进入 s 8 s_8 s8,它此时的Reward = 0,但实际上这是一个非常有价值的选择,因为它有可能在下一步进入目标状态 s 9 s_9 s9

这就是为什么Return(回报)和Discounted Return(折扣回报)很重要。
Return Q t Q_t Qt 直接把所有未来Reward累加,能够反映长期价值;但如果我们不对未来收益进行折扣,可能会导致算法过于看重远期的收益,从而失去对当下最优路径的控制。于是我们引入折扣因子 γ ∈ [ 0 , 1 ] \gamma \in [0,1] γ[0,1],得到折扣回报:

G t = r t + γ r t + 1 + γ 2 r t + 2 + ⋯ G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots Gt=rt+γrt+1+γ2rt+2+

折扣因子的意义在于:

  • 保证未来收益对当前决策的影响逐步衰减;
  • 从而使得Agent在“关注未来”和“立足当下”之间取得平衡。

在我们的网格世界例子里,如果没有折扣,Agent可能会探索无意义的远期路径(只要最后有奖励),而忽视最短路径。折扣回报则有效地让Agent更倾向于选择既能尽快到达目标、又能规避惩罚区的路径。
所以,状态价值函数 V π ( s ) V_\pi(s) Vπ(s) 使用折扣回报来估计状态的好坏,它不仅仅依赖当前一步的Reward,而是综合考虑未来可能的收益,并且通过折扣确保收益的合理权重分配。

贝尔曼公式(代数形式与矩阵形式)

图2.2
图2.2 网格世界中的策略,图(a)表示一个策略,即在每一个状态下的action是确定性的概率分布;图(b)表示在该策略下采样出来的样本轨迹

状态值最大的作用就是评估策略的优劣。它指导我们将策略调优。同一个状态下,状态值更高的那个策略相对来说更优,状态值最大的策略我们称之为最优策略(Optimal Policy)。所以,我们针对一个策略需要知道这个策略下的状态值如何计算。这里Remind一下,策略 π \pi π本身也是一个条件概率,它是给定状态s下采取Action的条件概率分布。在图2.2中列出来的例子,每个状态s的Action是决定性的,我们也可以写出它的条件概率分布,比如:

P ( A t ∣ S t = s 5 ) = { a 3 p = 1 o t h e r    a c t i o n s p = 0 P(A_t|S_t = s_5) = \{ \begin{array}{ll} a_3 & p = 1 \\ other\;actions & p = 0 \end{array} P(AtSt=s5)={ a3otheractionsp=1p=0

我们现在将根据状态值的定义,慢慢推导出状态值的最终计算公式,也叫贝尔曼公式。实际计算状态值的时候,我们不是基于 r t r_t rt来计算的,而是基于 r t r_t rt的分布 R R R来计算的,因为 r t r_t rt只有在采样了之后才能得出具体的值。故我们的公式可以写成如下形式:

V π ( s t ) = E ( G t ∣ S t = s t ) = E ( R t + γ R t + 1 + γ 2 R t + 2 ⋯ ∣ S t = s t ) V_\pi(s_t) = E(G_t| S_t = s_t) = E(R_t + \gamma R_{t+1} + \gamma^2 R_{t+2} \cdots | S_t = s_t) Vπ(st)=E(GtSt=st)=E(Rt+γRt+1+γ2Rt+2St=st)

这里的每一个 R R R 都是基于State的概率分布,而我们对多个概率分布加权求和的结果还是一个概率分布,所以 G t G_t Gt也是概率分布 , G t G_t Gt的数学期望就是其概率分布值的概率加权平均数,是一个标量。我们可以将 R t + 1 R_{t+1} Rt+1以及后面项的 γ \gamma γ提取出来,我们会发现后面是 t+1 时刻的折扣回报,即 G t + 1 G_{t+1} Gt+1,所以有:

V π ( s t ) = E [ R t + γ ( R t + 1 + γ R t + 2 ⋯   ) ∣ S t = s t ] = E ( R t + γ G t + 1 ∣ S t = s t ) V_\pi(s_t) = E[R_t + \gamma (R_{t+1} + \gamma R_{t+2} \cdots) | S_t = s_t ] = E(R_t + \gamma G_{t+1} | S_t = s_t) Vπ(st)=E[Rt+γ(Rt+1+γRt+2)St=st]=E(Rt+γGt+1St=st)

继而有:

V π ( s t ) = E ( R t + γ G t + 1 ∣ S t = s t ) = E ( R t ∣ S t = s t ) + γ E ( G t + 1 ∣ S t = s t ) = E ( R t ∣ S t = s t ) + γ E [ V π ( S t + 1 ) ∣ S t = s t ] \begin{align} V_\pi(s_t) &= E(R_t + \gamma G_{t+1} \mid S_t = s_t)\notag \\ &= E(R_t \mid S_t = s_t) + \gamma E(G_{t+1} \mid S_t = s_t)\notag \\ &= E(R_t \mid S_t = s_t) + \gamma E[V_\pi(S_{t+1})\mid S_t = s_t]\notag \end{align} Vπ(st)=E(Rt+γGt+1St=st</

强化学习数学原理涉及多个方面。《深入浅出强化学习:原理入门》将强化学习问题纳入严谨的数学框架,从最基本的马尔科夫决策过程入手,这是强化学习的基础,为后续方法提供了理论支撑 [^1]。 解决强化学习问题的基本思路是交互迭代策略评估和策略改善,基于此有不同的强化学习方法。其中,动态规划方法是解决此类问题最基本的方法 [^1]。 蒙特卡洛方法是一种无模型的强化学习算法,它直接与环境交互采样轨迹来估计状态或动作的价值函数,无需依赖环境动态模型的显式知识,不像一些策略通过公式推导,蒙特卡洛可直接通过数据量推出相关结果 [^2]。 贝尔曼最优公式强化学习中也很重要,其数学表示是把 $q(s,a_i)$ 最大的那个动作对应的概率 $\pi(a_i|s)$ 设置为 1,其余动作的概率设置为 0,以此使等式右边的值最大化 [^3]。 ```python # 简单示例,蒙特卡洛方法估计价值函数 import numpy as np # 定义环境状态数和动作数 num_states = 5 num_actions = 2 # 初始化价值函数估计 value_function = np.zeros(num_states) # 模拟采样轨迹 num_episodes = 1000 for _ in range(num_episodes): # 随机初始化状态 state = np.random.randint(num_states) episode = [] # 模拟一个轨迹 while True: action = np.random.randint(num_actions) # 这里简单假设奖励和下一个状态 reward = np.random.randn() next_state = np.random.randint(num_states) episode.append((state, action, reward)) state = next_state # 简单终止条件 if np.random.rand() < 0.1: break # 反向遍历轨迹更新价值函数 G = 0 for state, action, reward in reversed(episode): G = reward + 0.9 * G # 折扣因子 0.9 value_function[state] = (value_function[state] + G) / 2 print("蒙特卡洛方法估计的价值函数:", value_function) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值