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

目录

  • 学习引用
    • 内容梗概
      • 1. 第三章主要有两个内容
      • 2. 第二章大纲
    • 二.激励性实例(Motivating examples)
    • 三.最优策略(optimal policy)的定义
    • 四.贝尔曼最优公式(BOE):简介
    • 五.贝尔曼最优公式(BOE):公式右侧求最大化的最优问题
    • 六.贝尔曼最优公式(BOE):改写为 v = f(v)
    • 七.收缩映射定理(Contraction mapping theorem)
    • 八.贝尔曼最优公式(BOE):解决方案
      • 1.介绍
      • 2.例子
    • 九.贝尔曼最优公式(BOE):解的最优性
    • 十.分析最优策略(Analyzing optimal policies)
    • 十一.总结

学习引用

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

内容梗概

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^∗ π 得到的状态值(state value)相比任何其他策略 π \pi π 得到的状态值(state value)都要大,即 v π ∗ ( s ) ≥ v π ( s ) v_{\pi^∗} (s) ≥ v_{\pi}(s) vπ(s)vπ(s),则策略 π ∗ \pi^∗ π 是最优的。

这个定义引出了许多问题:

  • 最优策略是否存在?因为定义里的最优策略非常理想,它比其他所有策略都要好,并且在所有状态上都能打败其它策略,那么是否存在这样的情况,最优策略在某些状态上能打败其它的策略,但是在某些状态上没法打败。
  • 最优策略是唯一的吗?
  • 最优策略是随机的(stochastic)还是确定的(deterministic)?
  • 如何获得最优策略?

为了回答这些问题,我们研究了贝尔曼最优方程。

  • 策略是对应很多不同状态的,如果一个策略只对应一个状态,那么如果想到达target就需要很多策略,这对算力要求非常大

  • 策略是智能体在每个状态做不同动作的概率所组成的集合

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

贝尔曼公式: π ( a ∣ s ) \pi(a|s) π(as) 是给定已知的,依赖于一个给定的 π \pi π

在这里插入图片描述

贝尔曼最优方程(元素形式):Bellman optimality equation (elementwise form):

在贝尔曼公式前面加上了 max ⁡ π \max \limits_{\pi} πmax,这时候 π \pi π 就不再是给定的了,因为这里面嵌套了一个优化问题,需要先解决这个优化问题求解出这个 π \pi π,再把这个 π \pi π 带到这个式子里面去,求解出状态值。

在这里插入图片描述

方程中已知与未知的值: p ( r ∣ s , a ) , p ( s ′ ∣ s , a ) , r , γ p(r|s, a), p(s' |s, a), r,\gamma p(rs,a),p(ss,a),r,γ 已知; v ( s ) , v ( s ′ ) v(s), v(s') v(s),v(s) 未知; π ( s ) \pi(s) π(s) 未知(贝尔曼公式依赖于一个给定的 π \pi π,而贝尔曼最优公式的 π \pi π 没有给定,需要求解)

在这里插入图片描述

贝尔曼最优方程(矩阵向量形式)Bellman optimality equation (matrix-vector form): 也是在上一章(第二章)讲的贝尔曼方程的矩阵向量形式前面加上了 max ⁡ π \max \limits_{\pi} πmax。状态值越大说明策略越好
v = max ⁡ π ( r π + γ P π v ) {\color{red}v=\max \limits_{\pi}(r_{\pi}+\gamma P_{\pi}v)} v=πmax(rπ+γPπv)
在这里插入图片描述

其中与 s 或 s’ 对应的元素是

在这里插入图片描述

这里的 max ⁡ π \max \limits_{\pi} πmax 是以元素为单位进行的。

贝尔曼最优方程(BOE)既棘手又优雅!

  • 为什么优雅?它以一种优雅的方式描述了最优策略(optimal policy)和最优状态值(optimal state value)。
  • 为什么棘手?因为公式右侧有一个求最大化的最优问题,而如何计算这个最大化可能并不简单。

本课程将回答以下所有问题:

  • 算法:如何求解这个方程?
  • 存在性:这个方程有解吗?
  • 唯一性:这个方程的解是否唯一?
  • 最优性(Optimality):它与最优策略(optimal policy)有何关系?

五.贝尔曼最优公式(BOE):公式右侧求最大化的最优问题

在这里插入图片描述

在贝尔曼最优公式(BOE)中,有一个式子,却有两个未知量(状态值 v v v 和策略 π \pi π,对任意一个状态都要求出来最优的一个 π \pi π),如何求解呢?看如下例子:

在这里插入图片描述

  • Regardless the value of x:无论 x 的值是多少。这里的意思是 ( 2 x − 1 − a 2 ) (2x-1-a^2) (2x1a2) 整体最大,所以(-a) 就得取最小。因为a的平方一定大于等于0,因此减去a的平方的那个数想要最大,必须要让a最小,a=0。
  • m a x a ( f ( x , a ) ) max_a(f(x,a)) maxa(f(x,a)) 就是找到一个 a 使 f 最大

根据上面的例子得到启发,可以求解贝尔曼最优公式:

  • 最初的方程中已知与未知的值: p ( r ∣ s , a ) , p ( s ′ ∣ s , a ) , r , γ p(r|s, a), p(s'|s, a), r, \gamma p(rs,a),p(ss,a),r,γ 已知; v ( s ) , v ( s ′ ) v(s), v(s') v(s),v(s) 未知; π ( s ) \pi(s) π(s) 未知
  • 固定 v ( s ′ ) v(s') v(s) 并求解 π \pi π,即给出 v ( s ′ ) v(s') v(s) 的一个初始值,把初始值给定后, v ( s ′ ) v(s') v(s) 变成已知的,第一行的大括号内部写成 q ( s , a ) q(s,a) q(s,a),是已知的。下面要做的是把 π ( a ∣ s ) π(a|s) π(as)确定下来。
  • 这里其实有多个 a,在网格世界中有 5 个 a , q ( s , a 1 ) , q ( s , a 2 ) , q ( s , a 3 ) , q ( s , a 4 ) , q ( s , a 5 ) a,q(s,a_1),q(s,a_2),q(s,a_3),q(s,a_4),q(s,a_5) a,q(s,a1),q(s,a2),q(s,a3),q(s,a4),q(s,a5)

在这里插入图片描述

  • 为了求解上述问题,再给出一个例子,假如已知三个 q q q 值,要解决的问题是求解三个系数或者叫三个权重,使得下面的目标函数(object function)达到最大
  • 系数和权重应该满足和为 1 ,并且每个值都大于等于 0,之所以有这样的约束,是因为这个例子里面的系数对应上面的概率 π ( a ∣ s ) \pi(a|s) π(as) ,概率 π \pi π 满足这样的性质
  • 假设 q 3 q_3 q3 是最大的,最优解是 c 3 ∗ = 1 , c 1 ∗ = c 2 ∗ = 0 c_3^* = 1,c_1^*=c_2^*=0 c3=1c1=c2=0

下面这个例子的思路可以用在求解贝尔曼最优公式当中

在这里插入图片描述

  • 通过上面的例子,我们就知道了如果右边的 q ( s , a ) q(s,a) q(s,a) 确定了,如何求解最优的 π ( a ∣ s ) \pi(a|s) π(as),最后的结果就是右边这一项的最优值等于最大的 q ( s , a ) q(s,a) q(s,a) 值,这里 π ( a ∣ s ) \pi(a|s) π(as)的选取应该是对于 a ∗ a^* a 等于 1,不是 a ∗ a^* a 等于 0,这里 a ∗ a^* a 对应最大的 q 值的 action,即 q ( s , a ∗ ) q(s,a^*) q(sa) 是所有 v v v 的取值里最大的

在这里插入图片描述

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

可以把等式右侧写成一个函数 f ( v ) f(v) f(v),之所以这样是因为求解等式右侧最大值 m a x π max_π maxπ 的方法是先固定 v ,就可以求出一个 π π π,至于这个 π π π 是什么样子,最后得到的最优值是什么我们不用太关心,我们知道右侧肯定是 v v v 的一个函数。本来右侧是 π π π v v v 的函数,现在把 π π π 确定下来了,右侧就变成了 v v v 的函数(与上面第一个例子一样)

弹幕理解

  • 对每一个 v v v,都能求出一个max,这个max是和v有关的式子。那么把 v v v看成变量,max就是 v v v的函数了,把这个函数定义成 f ( v ) f(v) f(v)
  • π π π v v v 的函数,老师说了,所以右边整体都是 v v v 的函数
  • 冒号等号代表定义的意思
  • 其实就是分两步,第一步求max, 消掉pi; 第二步求出v
  • 其实就是 π \pi π已知了,要开始求最大的state value
  • 贝尔曼方程实际上是一组方程,对每一个状态都有一个贝尔曼方程
  • 和选取的动作的概率无关,因为取最大值适合概率是1,所以只需要考虑 v v v的值
  • 参考前面向量形式的展开,这里 f ( v ) f(v) f(v) s s s 个元素对应的是 s s s下的最大 v ( s ) v(s) v(s)

这样的话贝尔曼最优公式就化成了:

在这里插入图片描述

这里面的 f(v) 是一个向量,在这个向量中对应状态 s 的元素是
[ f ( v ) ] s = max ⁡ π ∑ a π ( a ∣ s ) q ( s , a ) , s ∈ S [f(v)]_s = \max \limits_{\pi} \sum_a \pi(a|s)q(s,a), \qquad \qquad s\in S [f(v)]s=πmaxaπ(as)q(s,a),sS
下面我们求解贝尔曼最优公式就求解 v = f ( v ) v = f(v) v=f(v) 即可

七.收缩映射定理(Contraction mapping theorem)

在求解 v = f ( v ) v = f(v) v=f(v) 之前,先介绍一个 Contraction mapping theorem,

一些概念:

  • 不动点(Fixed point): x x x 属于集合 X X X f f f 是一个映射(或者叫函数),如果满足 f ( x ) = x f(x) = x f(x)=x,则 x x x 就被称为一个不动点

在这里插入图片描述

  • 收缩映射Contraction mapping(或收缩函数contractive function)(mapping 和 function其实是一回事): f f f 是收缩映射(contraction mapping),如果满足:(伽马可以自由选择的,只要在0到1之间)

在这里插入图片描述

考虑一个一维的例子:

在这里插入图片描述

给一些例子解释上面的概念( γ \gamma γ 取值要求是0到1,但是这个contraction mapping成立是要求能够在0-1之间找到一个适合的伽马,因此在0.5-1之间的伽马当然符合定义)

img


Contraction mapping theorem定理:

对于任何形式为 x = f(x) 的方程,如果 f 是收缩映射,那么满足

  • 存在性:存在一个满足 f ( x ∗ ) = x ∗ f(x^*) = x^* f(x)=x 的不动点(fixed point) x。我们不太关心 f 的表达式究竟是什么,只只要它是一个 Contraction mapping,就一定存在一个不动点 x ∗ x^* x(fixed point)满足 f ( x ∗ ) = x ∗ f(x^*) = x^* f(x)=x
  • 唯一性:不动点(fixed point) x ∗ x^* x 是唯一存在的
  • 算法(求解这样的一个不动点(fixed point)的算法): 考虑一个序列 x k {x_k} xk,其中 x k + 1 = f ( x k ) x_{k+1} = f(x_k) xk+1=f(xk)(迭代算法),则当 k → ∞ k \rightarrow \infty k 时, x k → x ∗ x_k \rightarrow x^* xkx(即 x k x_k xk 会收敛到 x ∗ x^* x) 。此外,收敛速度是指数级的,非常快。(先给一个 x 0 x_0 x0 x 1 = f ( x 0 ) x_1=f(x_0) x1=f(x0) 求出 x 1 x_1 x1;再用 x 2 = f ( x 1 ) x_2=f(x_1) x2=f(x1)求出 x 2 x_2 x2,以此类推,求出的 x k x_k xk 会收敛到 x ∗ x^* x

例子:

在这里插入图片描述

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

1.介绍

让我们再回到贝尔曼最优方程: v = f ( v ) v = f(v) v=f(v),这个就是 Contraction mapping 要解决的那一类问题
v = f ( v ) = max ⁡ π ( r π + γ P π v ) v = f(v) = \max \limits_{\pi}(r_{\pi} + \gamma P_{\pi}v) v=f(v)=πmax(rπ+γPπv)
为了应用 Contraction mapping theorem ,我们首先要证明贝尔曼最优公式里面的 f(v) 是一个 Contraction mapping:(下面定理的证明可以看赵老师写的书,这里不再详细介绍)

在这里插入图片描述

我们知道了 f ( v ) f(v) f(v) 是一个 Contraction mapping,那么贝尔曼最优公式就可以立刻用收缩映射定理(Contraction mapping theorem)来求解出来,可以得到以下结果:

img

重要:(1)中的算法称为值迭代算法。我们将在下一讲对其进行分析!本讲座更侧重于基本性质。

下面详细解析一下由 Contraction mapping theorem 给出的迭代算法:

迭代算法矩阵向量形式(Matrix-vector form):
v k + 1 = f ( v k ) = max ⁡ π ( r π + γ P π v ) v_{k+1} = f(v_k) = \max \limits_{\pi}(r_{\pi} + \gamma P_{\pi}v) vk+1=f(vk)=πmax(rπ+γPπv)
化成元素形式(Elementwise form):即对于某一个具体的 s 状态这个算法是怎么运行的

在这里插入图片描述

下面再详细总结一下这个过程(Procedure summary):

  • 对任意状态 s,即当前我们对解 v ∗ ( s ) v^*(s) v(s) 有一个估计,这个估计是 v k ( s ) v_k(s) vk(s),最开始可以是 v 0 ( s ) v_0(s) v0(s),这个可以是任意的一个值
  • 对任意状态 s s s 下的每一个 action,求解 q k ( s , a ) q_k(s,a) qk(s,a) v k ( s ′ ) v_k(s') vk(s) 是刚才第一步给定的( s ′ s' s 是用来遍历的变量??)
  • 计算 s s s 的贪婪策略 π k + 1 \pi_{k+1} πk+1 如下:基于 q k ( s , a ) q_k(s,a) qk(s,a) 我们得到一个新的策略,这个策略是 π k + 1 ( a ∣ s ) \pi_{k+1}(a|s) πk+1(as)会选择最大的 q k ( s , a ) q_k(s,a) qk(s,a)对应的 a k ∗ a_k^* ak(与第五部分思想一样)
  • 计算 $v_k+1(s) = max_a q_k(s, a) $

在这里插入图片描述

上述算法实际上就是下一讲中讨论的值迭代算法(value iteration algorithm),这个算法其实计算由 Contraction mapping theorem 给出来的算法,只不过在下节课中我们会把它放到强化学习的一个上下文情境中去

2.例子

在这里插入图片描述

举例说明: 手动解决 BOE 问题。

  • 为什么要手动?可以更好地理解。
  • 为什么例子这么简单?可以手动计算,方便大家更好理解。

动作: a l a_l al a 0 a_0 a0 a r a_r ar 代表向左走、保持不变、向右走。
奖励:进入目标区域: +1;尝试走出边界:-1;其他:0

q ( s , a ) q(s, a) q(s,a) 的值(建立 q-value 的一个表 table)(这里的 q q q 是第五部分那个非常长的一串可以缩写成这样的一个 q)

q-value 其实可以理解为state value的一个action下的值,这里的 q-value 就是 action value

在这里插入图片描述

考虑 γ = 0.9 \gamma = 0.9 γ=0.9

我们的目标是找到 v ∗ ( s i ) v^*(s_i) v(si) π ∗ \pi^* π (此时我们还没有讲 v ∗ v^* v π ∗ \pi^* π究竟是什么,我们只知道它是能够求解出贝尔曼最优公式对应的值和策略,之后我们会知道它们就是最优的状态值 state value 和最优的策略)

初始化 v v v 空间 → \rightarrow 找到各 s s s 处使 v v v 最大的 a a a(得到policy) → \rightarrow 更新 v v v,重复

img

这个策略已经不错了,画出图后发现可以到达目标状态,已经达到了最优策略,但是 v v v 还没有达到贝尔曼最优公式的最优的解,所以还要继续迭代算下去,在考虑下一个 interation

img

可以无限迭代下去,如果要编程实现,可以写一个迭代终止条件,两者之差若小于一个很小的数字,我们任务再去迭代也没什么太大变化了,可以停下,认为 v k v_k vk 达到了贝尔曼最优公式的解
∣ ∣ v k − v k − 1 ∣ ∣ < ε ||v_k - v_{k-1}|| < \varepsilon ∣∣vkvk1∣∣<ε

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

假设 v ∗ v^* v 是贝尔曼最优方程(BOE)的解,可以用刚才介绍的算法求解出来。它满足:
v ∗ = max ⁡ π ( r π + γ P π v ∗ ) v^* = \max \limits_{\pi}(r_{\pi} + \gamma P_{\pi}v^*) v=πmax(rπ+γPπv)
假设:
π ∗ = a r g max ⁡ π ( r π + γ P π v ∗ ) \pi^* = arg \ \max \limits_{\pi}(r_{\pi} + \gamma P_{\pi}v^*) π=arg πmax(rπ+γPπv)
则:
v ∗ = r π ∗ + γ P π ∗ v ∗ v^* = r_{\pi^*} + \gamma P_{\pi^*}v^* v=rπ+γPπv
π ∗ \pi^* π 是对应 v ∗ v^* v 的一个最优的策略,也就是把 v ∗ v^* v 固定住,可以求解出来一个 π \pi π ,这个 π \pi π我们用 π ∗ \pi^* π 来表示,那么把公式 2 代入公式 1,公式 1 可以化成下面的式子,也就是把前面的 m a x π max_π maxπ 去掉了,把它改成了 π ∗ \pi^* π

上面的公式 3 其实就是一个贝尔曼公式,因为贝尔曼公式一定是对应一个策略,那么上式就是对应 π* 的一个贝尔曼公式,这里的 v ∗ = v π ∗ v^* = v_{\pi^*} v=vπ,也就是 π ∗ π^* π 对应的 state value,所以贝尔曼最优公式是一个特殊的贝尔曼公式,贝尔曼最优公式中对应的策略比较特殊,是一个最优的策略

那么这个策略究竟是不是最优的,这个 state value v ∗ = v π ∗ v^*= v_{\pi^*} v=vπ 是不是最大的,下面的结论可以来证明:

对于贝尔曼最优公式的解 v ∗ v^* v,它是最大的 state value,对于任何一个其他的策略(policy) π \pi π,所得到的状态值(state value) v π v_{\pi} vπ 都没有 v ∗ v^* v 大。那么相应的 π ∗ \pi^* π 肯定是一个最优的策略,因为 π ∗ \pi^* π 所对应的 v ∗ v^* v 就是 v π ∗ v_{\pi^*} vπ,它对应的 state value 达到最大。

在这里插入图片描述

现在我们明白为什么要研究贝尔曼最优公式(BOE)了。这是因为它描述了最优状态值(optimal state value)和最优策略(optimal policy)。

那么 π ∗ \pi^* π 长什么样子?

之前讲过,我们应该不陌生,也就是在状态 s s s 的时候 π ∗ \pi^* π 会选择 a ∗ a^* a,也就是在状态 s s s 对应的 action value 最大的那个 action,对这个 action 概率是 1,对其他 action 概率是 0。

所以它是确定性 deterministic 的,也是贪婪 greedy 的,就是不论什么,反正就选择最大的。

在这里插入图片描述

十.分析最优策略(Analyzing optimal policies)

哪些因素决定了最优策略(optimal policy)?

从下面的贝尔曼最优公式(BOE)可以清晰地看到:

在这里插入图片描述

f我们要做的是求出黑色字体的变量,它们分别对应了最优的策略和最优的 state value ;

我们已知的是这些红色字体的变量,它们分别对应了概率,这个概率就代表了系统的模型

r r r 是我们设计的奖励(reward); γ \gamma γ 是折扣因子。

求解贝尔曼最优公式就是在已知红色的量的时候求出黑色的量,那么显然最优的策略和最优的 state value 就是由这些红色的量来决定:他们分别是怎么设计 r r r,怎么选择 γ \gamma γ,还有系统模型是什么样的

在这里插入图片描述

接下来,我们用实例来说明当我们改变 r r r γ \gamma γ 的时候,最优策略会发生什么样的改变(因为系统模型一般很难改变,所以我们不考虑这个)

举例:

通过求解贝尔曼最优公式(BOE),可以得到最优策略(左图绿色箭头)和相应的最优状态值(state value)(右图格子上的数字)。

在这里插入图片描述

观察最优策略可以看出,最优策略没有绕开禁区(forbidden area),因为它发现进入禁区虽然暂时得到一个负数的惩罚,但是从长远来看我进入禁区到达目标所得到的回报(return)比绕一大圈再到达目标获得的回报(return)更大。最优策略敢于冒险:进入禁区!!

如果我们将 γ = 0.9 \gamma = 0.9 γ=0.9 改为 γ = 0.5 \gamma = 0.5 γ=0.5(其他参数不变,即设计的奖励 r r r 不变)

在这里插入图片描述

由左图绿色箭头可以看出,最优策略已经发生改变,(a) 的最优策略是进入禁区到达目标,而 (b) 的最优策略是绕一大圈到达目标,因为它衡量发现绕一大圈再到达目标获得的回报(return)比进入禁区到达目标所得到的回报(return)更大。最优策略变得目光短浅!避开所有禁区!

之所以这样是因为:

  • γ \gamma γ 比较大的时候,智能体比较远视,它会比较重视未来的 reward;
  • γ \gamma γ 比较小的时候,智能体比较近视,return 里所得到的值的大小主要由近期所得到的 reward 来决定, γ \gamma γ 比较小它的幂次方就小,未来的 reward 会被打折的很厉害

如果我们将 γ \gamma γ 改为 0

在这里插入图片描述

最优策略变得极其短视!同时,只选择即时奖励(immediate reward)最大的动作!从很多状态出发根本无法达到目标!

在这里插入图片描述

如果我们在进入禁区时加大惩罚力度 γ = 0.9 \gamma = 0.9 γ=0.9, r f o r b i d d e n = − 1 t o r f o r b i d d e n = 10 r_{forbidden} = -1 \ to \ r_{forbidden} = 10 rforbidden=1 to rforbidden=10

在这里插入图片描述

最优策略也绕开了禁区

如果我们改变 r → a r + b r \rightarrow a_r + b rar+b,最优策略(optimal policy)会怎样呢?

例如:(给所有 r 全部 +1)

在这里插入图片描述

最优策略保持不变!因为重要的不是奖励(reward)的绝对值(absolute reward values)!而是它们的相对值(relative values)!

证明:(各位同学:应该满足a>0,否则最优对应求最小)

img

举例:

毫无意义的绕行?

通过求解贝尔曼最优公式可以得到图 (a) 左图的最优策略(绿色箭头)和右图的最优状态值(optimal state value)

在这里插入图片描述

(a) 中的策略是最优的,(b) 中的策略不是。

问题: 为什么最优策略不是(b)?为什么最优策略不走毫无意义的弯路?我们定义从一个白色格子到另一个白色格子的 r = 0 r=0 r=0,即走弯路不会受到惩罚。那么为什么最优策略不走毫无意义的弯路?

答案: 因为折扣因子 γ \gamma γ

  • 自己的理解就是随着这一次没有惩罚,但是随着尝试次数变多,discount rate < 1,后边获得相应的奖励就会变少。

在这里插入图片描述

由上面的例子得到的启发:在设计 reward 的时候,很多人可能会觉得每走一步应该给一个惩罚 r = − 1 r=-1 r=1 r = − 1 r=-1 r=1 代表能量的消耗,这样它就不会绕远路,就会尽可能走最短的路径到达目标。

如果 r = 0 r=0 r=0,没有 r = − 1 r=-1 r=1 好像就会绕远路,其实不是这样的,因为除了 r r r 来约束它不要绕远路之外,还有 γ \gamma γ,因为越绕远路我们得到到达目标的奖励越晚,越晚那时候对应的 γ \gamma γ 的次方越小,奖励打折会很厉害,所有它自然会找一个最短的路径过去

十一.总结

在这里插入图片描述

有关贝尔曼最优方程的问题:

  • 存在性:这个方程有解吗?
    • 有,根据收缩映射定理
  • 唯一性:这个方程的解是否唯一?
    • 是,根据收缩映射定理(最优状态值 optimal state value 这个解是唯一的,但是对应 optimal state value 的最优策略 π 不一定是唯一的)
  • 算法:如何求解这个方程,如何求解最优策略和最优解?
    • 根据收缩映射定理提出的迭代算法
  • 最优性:我们为什么要研究这个方程
    • 因为贝尔曼最优公式的解对应于最优状态值(state value)和最优策略(opyimal policy)

最后,我们明白了研究BOE的重要性!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/840675.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专为汽车内容打造的智能剪辑解决方案

汽车内容创作已成为越来越多车主和汽车爱好者热衷的活动。然而&#xff0c;如何高效、便捷地将行车途中的精彩瞬间转化为高质量的视频作品&#xff0c;一直是困扰着广大用户的一大难题。美摄科技凭借其深厚的视频处理技术和智能分析能力&#xff0c;推出了专为汽车内容记录而生…

C语言数据结构栈的概念及结构、栈的实现、栈的初始化、销毁栈、入栈、出栈、检查是否为空、获取栈顶元素、获取有效元素个数等的介绍

文章目录 前言栈的概念及结构栈的实现一、 栈结构创建二、 初始化结构三、销毁栈四、入栈五、出栈六、检查是否为空七、获取栈顶元素八、获取有效元素的个数九、测试 1十、测试 2总结 前言 C语言数据结构栈的概念及结构、栈的实现、栈的初始化、销毁栈、入栈、出栈、检查是否为…

意外发现openGauss兼容Oracle的几个条件表达式

意外发现openGauss兼容Oracle的几个条件表达式 最近工作中发现openGauss在兼容oracle模式下&#xff0c;可以兼容常用的两个表达式&#xff0c;因此就随手测试了一下。 查看数据库版本 [ommopenGauss ~]$ gsql -r gsql ((openGauss 6.0.0-RC1 build ed7f8e37) compiled at 2…

数据结构----堆的实现(附代码)

当大家看了鄙人的上一篇博客栈后&#xff0c;稍微猜一下应该知道鄙人下一篇想写的博客就是堆了吧。毕竟堆栈在C语言中常常是一起出现的。那么堆是什么&#xff0c;是如何实现的嘞。接下来我就带大家去尝试实现一下堆。 堆的含义 首先我们要写出一个堆&#xff0c;那么我们就需…

kubernetes之prometheus kube-controller-manager。 scheduler报错问题

项目场景&#xff1a; prometheus scheduler及kube-controller-manager监控报错 问题描述 kubeadm搭建完kube-prometheus 会有这个报错 原因分析&#xff1a; rootmaster2:~# kubectl describe servicemonitor -n kube-system kube-controller-manager通过以上图片我们发现 k…

php TP8 阿里云短信服务SDKV 2.0

安装&#xff1a;composer require alibabacloud/dysmsapi-20170525 2.0.24 官方文档&#xff1a;短信服务_SDK中心-阿里云OpenAPI开发者门户 (aliyun.com) 特别注意&#xff1a;传入参数获得值形式 正确&#xff1a; $PhoneNumbers $postData[PhoneNumbers];$signName $po…

单片机设计注意事项

1.电源线可以30mil走线&#xff0c;信号线可以6mil走线 2.LDO推荐 SGM2019-3.3,RT9013,RT9193,1117-3.3V。 3.单片机VCC要充分滤波后再供电&#xff0c;可以接0.1uf的电容 4.晶振附件不要走其他元件&#xff0c;且放置完单片机后就放置晶振&#xff0c;晶振靠近X1,X2。

【全网最全】2024电工杯数学建模A题前三题完整解答matlab+21页初步参考论文+py代码等(后续会更新成品论文)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片链接&#xff0c;那是获取资料的入口&#xff01; 【全网最全】2024电工杯数学建模A题前三题完整解答matlab21页初步参考论文py代码等&#xff08;后续会更新成品论文&#xff09;「首先来看看目前已有的…

二叉树—先后序线索化和先后序线索遍历

有了上篇文章的基础&#xff0c;先序和后序的线索化逻辑一样。 代码如下&#xff1a; void preOrderThreadTree(TreeNode* T,TreeNode** pre) {if (T NULL) {;}else {//printf("%c ", T->val);if (T->lchild NULL) {T->ltag 1;T->lchild *pre;}if …

7款好用到离谱的神级App推荐!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 转眼间&#xff0c;2024年已经是下个月。最近有很多小伙伴的咨询&#xff0c;我也赶紧整理了7款好用的软件&#xff0c;希望对大家有所帮助。 …

Git简介以及下载安装和配置

Git介绍 什么是版本控制?什么是Git?什么是集中式版本控制(了解)分布式版本控制工作流程 Git的安装与配置注册邮箱以及用户名(方便远程使用)初始化项目Git在ideal上的使用(本地) 什么是版本控制? ​ 版本控制是指对软件开发过程中各种程序代码,控制文件及说明文档等文件变更…

清理mysql binglog文件

mysql随着使用时间的推移&#xff0c;binglog文件会越来越大&#xff0c;比如我们的oa系统&#xff0c;上线4年多了&#xff0c;最近总有磁盘空间满影响系统正常使用的情况出现。检查后发现binglog是罪归祸首。 binglog文件最好不要采用应删除的方式清理&#xff0c;如下方式可…

spring cache(三)demo

一、入门demo 1、pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.o…

ACL组网实验(华为)

思科设备参考&#xff1a;ACL组网实验&#xff08;思科&#xff09; 更多内容参考&#xff1a;华为ACL配置&#xff08;基本ACL高级ACL综合应用&#xff09; 技术简介 ACL&#xff08;Access Control List&#xff09;技术是一种基于包过滤的流控制技术&#xff0c;主要用于…

ML307R OpenCPU UART使用

一、串口使用流程图 二、串口相关函数介绍 三、实现串口收发 一、串口使用流程图 OneMO ML307R模组提供了2路UART给开发者用于通讯开发&#xff0c;以及1路DBG UART用于log的打印。UART Demo示例可以在SDK&#xff1a;examples\uart\src\cm_demo_uart.c中查看。 串口使用流…

Vue3实战笔记(42)—Vue + ECharts:流量数据可视化的强大组合

文章目录 前言vue3使用echarts标准demo&#xff1a;总结 前言 在前端开发中&#xff0c;数据可视化已经成为了一个不可或缺的部分。Vue.js作为一个轻量级且易于上手的渐进式JavaScript框架&#xff0c;与ECharts这个强大的数据可视化库的结合&#xff0c;使得在Vue应用中构建交…

java继承(构造器)使用细节3

那么我们怎么来选择用父类的 有参构造器 和无参构造器泥&#xff1f; 就可以不写 或只写super() 并且如像爸爸的爸爸还有爸爸&#xff0c;还有构造。所以会一直调用到爷爷的构造。 细节2 直接继承指的是儿子和爸爸&#xff0c;爸爸和爷爷

Python 渗透测试:Redis 数据库 弱密码测试.(6379端口)

什么是 Redis 数据库 Redis (Remote Dictionary Server) 是一个开源的、内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等&#xff0…

View function mapping is overwriting an existing endpoint function: home_page

这个错误是因为在你的 Flask 应用中,你定义了两个或多个视图函数,它们使用了相同的 endpoint 名称。Flask 不允许多个视图函数使用相同的 endpoint 名称,因为这会导致冲突。 通常,这个错误会出现在以下几种情况下: 你在不同的路由装饰器中使用了相同的 endpoint 名称。你…