【强化学习的数学原理-赵世钰】课程笔记(三)贝尔曼最优公式

学习引用

【强化学习的数学原理-赵世钰】课程笔记(三)贝尔曼最优公式
【强化学习的数学原理】课程:从零开始到透彻理解(完结)

内容梗概

1. 第三章主要有两个内容

(1)核心概念:最优状态值(optimal state value)和最优策略(optimal policy)。强化学习的目的就是寻找最优策略。

  • 最优策略定义:我沿着这个策略能得到最大的状态值,沿着其他所有策略得到的状态值都没他大。

(2)基本工具:贝尔曼最优方程/公式(Bellman optimality equation)(BOE):贝尔曼最优公式和最优策略有关系,使用贝尔曼最优公式分析最优策略,贝尔曼最优公式可以求解出最优策略和最优的 state value。

  • 使用不动点原理分析,这个不动点原理告诉我们这个式子两个方面的性质:
  • 第一个方面是我要求解最优策略,最优 state value,那么它们到底是否存在呢,这种存在性非常重要。虽然存在但是最优的策略不一定是唯一的,但是最优的状态值是唯一的,最优的策略可能是确定性的 deterministic,也可能是随机性的 stochastic;
  • 另外一个方面是他能给出一个算法求解贝尔曼最优公式,把这个公式求解出来了自然就得到了最优的策略和最优的 state value,强化学习的目标也就达到了

2. 第二章大纲

(1)激励性实例(Motivating examples)

(2)最优状态值(optimal state value)和最优策略(optimal policy)的定义

(3)贝尔曼最优公式(BOE):简介

(4)贝尔曼最优公式(BOE):右侧最大化

(5)贝尔曼最优公式(BOE):改写为 v = f ( v ) v = f(v) v=f(v)

(6)收缩映射定理(Contraction mapping theorem)

(7)贝尔曼最优公式(BOE):解决方案

(8)贝尔曼最优公式(BOE):解的最优性

(9)分析最优策略(Analyzing optimal policies)

二.激励性实例(Motivating examples)

绿色箭头代表策略 π \pi π

在这里插入图片描述

贝尔曼公式:

在这里插入图片描述

状态值(state value): 设 γ = 0.9 \gamma = 0.9 γ=0.9。那么可以计算出:
v π ( s 4 ) = v π ( s 3 ) = v π ( s 2 ) = 10 v π ( s 1 ) = 8 v_{\pi}(s_4) = v_{\pi}(s_3) = v_{\pi}(s_2)=10 \qquad \qquad v_{\pi}(s_1) = 8 vπ(s4)=vπ(s3)=vπ(s2)=10vπ(s1)=8
动作值(action value)可以通过状态值计算,或者根据第二章公式计算:考虑 s 1 s_1 s1 s 1 s_1 s1共有 5 个 action ,每个 action 都有一个 state value 。

在这里插入图片描述

问题: 当前的策略(policy)不好,因为在 s 1 s_1 s1 的时候往右走了,进入禁区,那么如何改进?

答案: 我们可以根据动作值(action value)改进策略(policy)。

具体来说,当前策略 π ( a ∣ s 1 ) \pi(a|s_1) π(as1) 是:
π ( a ∣ s 1 ) = { 1 a = a 2 0 a ≠ a 2 \pi(a|s_1) = \left\{\begin{matrix} 1& & a=a_2\\ 0& & a\ne a_2 \end{matrix}\right. π(as1)={ 10a=a2a=a2
在这个策略下我们已经计算出来了 action value,观察我们刚才获得的动作值(action value):

在这里插入图片描述

我们发现 a 3 a_3 a3 对应的动作值(action value)最大,那么能不能选择 a 3 a_3 a3​ 作为一个新的策略呢。如果我们选择最大的动作值(action value)呢?那么,新策略(policy)就是:
π n e w ( a ∣ s 1 ) = { 1 a = a ∗ 0 a ≠ a ∗ \pi_{new}(a|s_1) =\left\{\begin{matrix} 1& & a=a^*\\ 0& & a\ne a^* \end{matrix}\right. πnew(as1)={ 10a=aa=a
其中: a ∗ = a r g   m a x a q π ( s 1 , a ) = a 3 a^* = arg \ max_aq_{\pi}(s_1,a) = a_3 a=arg maxaqπ(s1,a)=a3

其中, a ∗ a^* a 对应 action value 最大的那个 action,在这个例子里面是 a 3 a_3 a3

问题: 为什么选择 action value 最大的 action 这样做能改进策略?

  • 直觉:动作值(action value)可用于评估动作,动作值本身就代表了 action 的价值,如果选择一个 action ,他的 action value 很大,意味着之后能得到更多的 reward,相应策略也比较好。
  • 数学:并不复杂,将在本讲座中介绍。

​ 只要我们一遍一遍去做,不断迭代,最后一定会得到一个最优策略。也就是说,首先对每个状态都选择 action value 最大的 action,选择完了一次,然后再来一次迭代得到一个新的策略,再迭代得到一个新的策略,最后那个策略一定会趋向一个最优的策略

三.最优策略(optimal policy)的定义

状态值(state value)可用于评估策略好或者不好:如果有两个策略 π 1 \pi_1 π1 π 2 \pi_2 π2,它们在每个状态都有自己的状态值(state value),如果对所有的状态 s s s π 1 \pi_1 π1 得到的 state value 都大于 π 2 \pi_2 π2 得到的 state value,则 π 1 \pi_1 π1 π 2 \pi_2 π2 “更好”。
v π 1 ( s ) ≥ v π 2 ( s ) f o r    a l l    s ∈ S v_{\pi_1}(s) \ge v_{\pi_2}(s) \qquad for \ \ all \ \ s \in S vπ1(s)vπ2(s)for  all  sS
在这里插入图片描述

定义:如果对于所有状态 s ,策略 π ∗ \pi^∗ π

### 强化学习中的贝尔曼方程 #### 贝尔曼方程概述 在强化学习领域,贝尔曼方程用于描述状态价值函数或动作价值函数如何通过后续的状态和奖励来更新当前的价值估计。该方程提供了一种迭代方法来评估策略的好坏,并寻找最优策略[^1]。 对于给定的一个策略π,贝尔曼期望方程定义了状态s下的预期回报V(s),即从该状态下按照此策略行动所能获得的长期累积折扣奖励: \[ V^\pi (s) = \sum_a \pi(a|s)\left[R_{t+1}+\gamma\sum_{s'}P(s'|s,a)V^\pi(s')\right]\] 这里\(R_{t+1}\)代表即时奖励,而γ是未来奖励的重要性因子(0≤γ<1)[^3]。 当考虑特定的动作a时,则可以得到对应的状态-行为对的价值Q(s,a): \[ Q^\pi (s,a)=E_\pi[R_{t+1}+\gamma\max _{a'}Q^\pi(S',a')]\] 这被称为贝尔曼优化方程,它表达了在一个理想情况下采取某个具体操作之后所能够达到的最大可能收益[^4]。 #### 应用场景 贝尔曼方程广泛应用于各种类型的决策问题中,尤其是在那些具有不确定性和延迟反馈特征的任务里。例如游戏AI设计、机器人路径规划以及资源分配等领域都可以见到它的身影。利用这些方程式可以帮助构建更有效的算法模型来进行自动化的复杂任务处理[^5]。 #### Python 实现示例 下面是一个简单的Python代码片段展示如何使用动态规划的方法解决有限范围内的环境问题并求解状态价值: ```python import numpy as np def bellman_update(V, P, R, gamma=0.9): """ 使用Bellman Expectation Equation 更新状态价值. 参数: V : 当前状态价值向量 P : 状态转移概率矩阵 R : 奖励表 gamma : 折扣率 返回: 新的状态价值向量 """ n_states = len(P) new_V = np.zeros(n_states) for s in range(n_states): # 遍历每一个状态 v_s = sum([p * (r + gamma * V[s_]) for p, r, s_ in zip(P[s], R[s], range(n_states))]) new_V[s] = v_s return new_V if __name__ == "__main__": # 初始化参数 num_states = 5 transition_probabilities = [[0.7, 0.3], [0.8, 0.2]] rewards = [-1., 1.] state_values = np.random.rand(num_states) updated_state_values = bellman_update(state_values, transition_probabilities, rewards) print(updated_state_values) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值