贝尔曼公式

 原视频链接,这里是自学笔记版本。 

第2课-贝尔曼公式(例子说明Return的重要性)_哔哩哔哩_bilibili

第2课-贝尔曼公式(State value的定义)_哔哩哔哩_bilibili

第2课-贝尔曼公式(贝尔曼公式的详细推导)_哔哩哔哩_bilibili

第2课-贝尔曼公式(公式向量形式与求解)_哔哩哔哩_bilibili

第2课-贝尔曼公式(Action value的定义)_哔哩哔哩_bilibili

目录

举例说明

1、为什么 return 是重要的?

2、如何计算 return

State value

1、单步过程:

 2、多步过程

3、return和state value有什么样的区别?

贝尔曼公式: 推导

贝尔曼公式:矩阵-向量形式

贝尔曼公式:求解 state values

Action value


举例说明

1、为什么 return 是重要的?

在下图中,这三个策略它们的环境都是一模一样的,但是不同的是什么呢?不同的是这三个策略在s1的策略是不同的,第一个策略在s1它会向下走,第二个策略在s1会向右走,第三个策略有50%的概率向右 50%的概率向下,在其它状态它们的策略都是相同的。

那么如果从s1出发,哪一个策略是最好的哪一个策略是最差的?

直观上来说呢 其实第一个策略是最好的,第二个策略是最差的,第三个策略是不好也不差。因为第一个策略它不会进到forbidden area,第二个策略它会进到forbidden area,第三个策略它有一定概率会进到里面去。

我们能不能用数学来这样描述这一种直观呢?答案是可以的,我们的数学工具实际上就是这个return。return能够告诉我们哪个策略好哪个策略坏,它能够去评估策略,这个是非常重要的。因为只有这样我们才能知道这个策略不好的话,我们得到下一个策略会更好,这样我们才能不断地去改进策略

策略1 的 trajectory 是 s1 s3 s4 s4 · · ·所得到的 return:

策略2 的 trajectory 是 s1 s2 s4 s4 · · ·所得到的 return:

策略3 有2个 trajectory ,分别是(1)s1 s3 s4 s4 · · ·  (2)s1 s2 s4 s4 · · ·所得到的 return:

严格来说这个return,实际上它已经不再是return的基本概念了,因为return的基本概念是针对一个轨迹定义的,那现在是有两个轨迹,我们实际上是在求平均值,求平均值可以理解为求expectation,所以这个return3严格上来说,就是 state value。

通过比较可知:return1 > return3 > return2,所以return可以用来评估一个策略的好坏。

2、如何计算 return

引入一个符号,用 vi 来表示从 si 出发的这个return。由图可知,s1,s2,s3,s4 它们的 return 分别是:

方法一、

 方法二、

v1等于r1加上后边一堆 reward,后面这个 reward 可以把这个 γ 给提出来,就可以得到,v1是等于r1加上γ加上括号里边这些,括号里面这些是什么呢?是r2加上γr3再加下去,根据方法一可知,这部分加下去最后的结果就是 v2 。所以最后的v1等于 r1 加上 γv2。

这组式子告诉我们什么呢?从不同状态出发的得到return,它依赖于从其它状态出发所得到的return。

上述式子如何求解?首先我们把那一组式子写成矩阵和向量的式子。左边我们写成一个向量v1 v2 v3 v4,右边首先是一个r,整理成一个向量,第二个向量就是这个γ乘以v2 v3 v4 v1,注意这个顺序不是v1 v2 v3 v4。我们通过矩阵整理一下把它这个顺序恢复。

 这个式子我们可以写成一种更简化的形式:

State value

1、单步过程:

St 指的是当前的状态

At 表示当前的状态下采取的动作

Rt+1 是得到的下一个reward

St+1 是跳到的下一个状态

注意字里面所有的S A和R它们全是大写,那它们就代表了random variable。所谓random variable就是我们可以对它们求一系列的操作,比如说像常见的expectation 。

另外在这个过程当中,所有的这些跳跃,它们都是由probability distribution来决定的,比如说我在St我要采取什么样的动作,就是由策略来决定的,在St take action At 要得到什么样的reward ,这个就是由这个reward probability来决定的,在St 采取At 要跳到下一个什么状态,这个就是由state transition probability来决定的。

 2、多步过程

多步 trajectory 可以求 discounted return ,用符号 Gt 表示,它是对这些 immediate reward 的一个相加,但是这里边要考虑这个discounted rate γ,因为这里边Rt+1 Rt+2等等全都是random variable,所以 Gt 也是一个random variable 随机变量。

state value实际上就是 Gt 的expectation,也就是期望值。

1、vπ(s)它是一个对 s 的函数,所以从不同的 s 出发得到的轨迹不同,那显然得到的discounted return也不同,求平均也是不同的。

2、它是一个策略的函数,显然不同的策略会得到不同的轨迹,那不同的轨迹又会得到不同的return,进而会得到不同的state value。

3、state value 这个value不仅仅是一个数值的value,它也代表它的一种价值 ,当一个state value比较大的时候,就代表这个状态是比较有价值的。

3、return和state value有什么样的区别?

Return是针对单个trajectory求的return,而state value是对多个trajectory 得到的return再求平均值,如果从一个状态出发,有可能得到多个trajectory。这时候return和state value显然是有区别的。但是如果从一个状态出发一切都是确定性的,只能够得到一条trajectory,这时候从那个状态出发得到return,和那个状态的state value就是一样的。

贝尔曼公式: 推导

贝尔曼公式描述了不同状态的 state value 之间的关系。

首先,对Gt 进行整理,等式右边提取出 γ,变成第二行的形式。由Gt的公式形式可知,括号内的部分是 Gt+1。进而直接进行替换,得到第三行的形式。

将第一行的 Gt 分成两部分,一个是immediate reward一个是future reward,也就是上述公式所得到的第三行。因为 expectation 中的加号可以分开计算,所以这个我们就得到了两个expectation,也就是第三行的表示形式。

对于第一个E[Rt+1|St = s],其中 A, R 表示集合,π 表示策略,在我的理解中,π(a|s) 表示在状态St = s 时执行 a 行动的概率。同理,E[Rt+1|St=s,At=a],表示在状态 s 时执行a行动所获得的回报Rt+1 的期望,期望是试验中每次可能结果的概率乘以其结果的总和,也就可以改写为∑p(r|s,a)r,在状态 s 时执行a行动所获得的回报Rt+1 的概率 × r 值,也就是期望。

对于第二个式子,p(s'|s)表示从当前状态s出发,有多个选择,可以跳到不同的s',跳到不同s'的概率。前面部分是跳到不同s'的值。根据markov的性质,我没有记忆,我们不需要关心之前究竟是在什么状态,所以第一行公式变换为第二行公式。又因为 state value的公式形式,第二行可以转变为第三行的表示形式。第四行对p(s'|s) 进行了分解,分解为p(s'|s,a)π(a|s),表示为状态s执行a行动后到达s'的概率 × 状态 s 执行 a 行动的概率。

将上述两个式子进行整理,最终得到贝尔曼公式:

贝尔曼公式:矩阵-向量形式

为了要把它写成一个矩阵向量的形式,实际上我们要把所有的状态都写到一起,不同的状态我们给它标上号,所以我们现在标上号从s1 到s2 一直最后到sn。

第一行第一个元素是从s1到s1的概率,第一行第二个元素是从s1到s2的概率,第一行第三个元素s1到s3,第一行第四个元素s1到s4的概率。

例子: 

贝尔曼公式:求解 state values

为什么要求解state value?实际上给定一个policy,然后会列出来它的贝尔曼公式,再进一步求解这个贝尔曼公式得到state value,这样一个过程实际上叫做policy evaluation。policy evaluation是强化学习当中非常关键的一个问题,非常基础的一个工具。因为我们只有能够去评价一个策略到底好还是不好,我们才能够去进一步地去改进它最后再找到最优的策略,所以求解贝尔曼公式进而得到state value。

矩阵-向量形式的贝尔曼公式:

 通过变换,得到:

但是在实际当中我们并不会使用,因为这里要求一个逆,而当状态空间比较大的时候这个矩阵的维数也会比较大,求逆的计算量也会比较大。

通过迭代的方法:

这个式子与刚才的贝尔曼公式其实非常像,中间这几项是一样的,只不过右边vπ变换成了vk,左边的vπ也换成了vk+1。从最开始从第0个 我可以随便猜一个vπ是等于什么,比如说全都是 0 ,然后我通过这个式子,把vk代到右边,左边我就可以计算出来v1,然后我把v1再代到右边,我就可以得到左边的v2 ,我再把v2代到右边,我就可以得到左边的v3 ,这样一直下去,我就会得到这样一个序列{v0,v1,v2....},实际上我们可以证明当k趋向于无穷的时候,vk就收敛到了vπ ,这个vπ就是真实的state value。

Action value

state value和action value 它们有什么样的区别和联系呢?

state value指的是agent从一个状态出发所得到的average return,action value指的是它从一个状态出发并且选择了一个action之后所得到的average return。

我们为什么要关注这个action value呢?就是因为实际上我们一直讨论强化学习当中的策略,策略指的是在一个状态要选择什么样的action,那这时候有一些action 应该选择哪些呢?实际上我就要根据action value来做判断,action value大的意味着我选择那个action能够得到更多的reward。

如果我们知道了action value,对于一个状态所有的action value都知道了,求平均实际上就得到了这个状态的state value。

我们如果知道了所有状态的state value,那我可以求出来所有的action value。

例子:

 

 

  • 40
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值