1.3.1 如何计算return
1.3.1.1 return与轨迹质量相关
这里给出了上图3个不同轨迹return的计算表达式, 来说明return与轨迹质量的相关性:
用于第3个情况, 是存在策略分布的, 这里我们求两条轨迹return的平均值:
显然, , 较为简单不再赘述.
1.3.1.2 Bootstrapping
将起始点的状态索引为的轨迹return定义为.
这里举了一个轨迹回到起点的例子, 以4个不同的状态为起点, 每个return分别可以写作如下形式:
从这组式子我们能够看出来, 这里每个return都依赖于下个状态的return. 依赖, 依赖... 换句话说, 从不同状态出发的得到return,它是依赖于从其他状态出发所得到的return。
当这个轨迹是个循环时, 最终会依赖自己. 这反映了Bootstrapping的思想.
1.3.1.3 计算return
我们将上面的式子写成线性方程组:
简洁的表达为下式, 并求解:
实际上, 这就是贝尔曼公式表达, 下一节我们会介绍它的一般形式
1.3.2 State values 状态值
1.3.2.1 基本概念
我们考虑简单的一步:
时间步 时间步的状态 状态采取的动作 状态采取的动作后的奖励 状态采取的动作转台转移之后的状态
都是随机变量. 从时刻开始, 可以得到状态-动作-奖励组成的轨迹:
该轨迹的discounted return定义为 , 它也是随机变量:
这里我们将 的期望定义为State value function, 即状态值函数, 定义如下:
状态值函数依赖于条件状态 状态值函数依赖于策略, 因为轨迹所由策略定义的, 不同的策略对应不同的状态值 状态值函数不依赖于, 因为智能体在状态空间中转移时, 它的策略和状态都与时间步无关
需要声明的是, 状态值函数与return的区别在于:
return是用来计算一条固定轨迹的 状态值函数是计算多条轨迹return的平均值 当策略分布, 奖励值概率分布, 状态转移概率分布: 全部唯一时, 也就是从某个状态出发只存在一条唯一的轨迹, 那么它的状态值和return是相同的
1.3.2.2 例子
仍然以这三个轨迹为例子, 很简单可以计算出他们的状态值:
其中第3条, 计算的是不同轨迹return的期望
1.3.3 动作值
状态值是指从一个状态出发的轨迹的return的期望; 对应的, 动作值是指从一个状态采取某一个动作出发的轨迹的return的期望.
1.3.3.1 定义
动作值定义可以写成:
展开可以写出:
简单的说, 动作值是状态值的一部分, 某一个状态下所有的动作值加权和就是状态值.
1.3.3.2 例子
我们可以很简单的写出来这几个动作值:
不过需要注意的是, 即使在这个策略中, 其他的动作的概率是0, 但是它们依然有动作值:
只不过在计算状态值的时候, 它们的权重 策略概率为0
推荐阅读:
自动驾驶小白说官网: https://www.helloxiaobai.cn