视频链接:
https://www.boyuai.com/elites/course/xVqhU42F5IDky94x/video/ATO7dKrOoc9ep_g4daUEv
马尔可夫决策过程
结果部分随机、部分在决策者的控制下的决策过程建模
基本性质
1.环境完全可预测
这表示未来的状态 X n+1只依赖于当前的状态 X n,而与之前的状态
𝑋1,𝑋2,…,𝑋𝑛−1无关。这就是所谓的马尔可夫性质。
2.当且仅当某时刻的状态只取决于上一时刻的状态,我们称之为马尔可夫性质
3.由五元组来表示:(S,A,{Psa},γ,R)
S是状态的集合
A是动作的集合
P是状态转移概率,在当前状态s∈S下执行某个动作a∈A后,智能体将转移到下一个状态s'在S的概率分布。
γ是对未来奖励的折扣因子
R是奖励函数(有时奖励只和状态有关)
4.过程:
①从状态S_0开始 ②智能体选择action ③智能体得到奖励 ④MDP转移到下一个状态
5.智能体的回报 会呈现一个递增的过程。
蒙特卡洛
是一种基于随机采样的技术,用于估算状态或状态-动作对的价值函数,并通过多次模拟与实验来改进策略。
其中用到了贝尔曼最优方程。
蒙特卡洛方法不需要环境的状态转移概率模型,而是通过与环境的交互来学习。
状态价值函数估计
动作价值函数估计
下面是状态价值函数的步骤:
1.初始化:初始化状态价值函数 V(s) 和访问计数器 N(s)。
2.生成回合:根据策略 π 执行一个完整回合,从初始状态 s0到终止状态 sT,并记录下每个时间步的状态 st和奖励Rt。
3.计算回报:从每个状态 s t开始,计算回报 Gt,即从 st开始,按照策略获得的奖励总和。
4.更新估计值:对每个状态 st,用回报Gt来更新状态价值函数:
动作价值函数同理。
蒙特卡洛方法的特点
- 无模型:蒙特卡洛方法不依赖于环境的转移概率和奖励函数,而是通过从环境中收集实际的经验(轨迹)来估计价值函数和改进策略。
- 基于样本:蒙特卡洛方法是样本基的(或称经验基的),即通过对多次独立的轨迹进行采样来估计期望值。
- 延迟更新:与动态规划方法不同,蒙特卡洛方法通常是在完整的轨迹结束后才进行更新(即等到终止状态时才知道从某个状态开始的回报),这可能导致计算上的延迟和较慢的收敛速度。
动态规划算法
1.适用范围:模型环境被智能体直接知道
2.目标:选择能够最大化积累奖励期望的动作
3.价值函数:
在一个马尔可夫决策过程(MDP)中,假设:
S 是状态空间。
A 是动作空间。
P(s ′∣s,a) 是状态转移概率,即在状态 s 下采取动作 a 转移到状态 𝑠′ 的概率。
γ是折扣因子
R(s,a) 是在状态 s 下采取动作 a 的奖励。γ 是折扣因子,表示未来奖励的重要性。
价值迭代公式推导:
①首先易知,我们价值函数要求得到所有策略中的最优解
②便得出价值函数的函数和最优策略的函数
Vk(s) 是在第 k 次迭代后,状态 s 的价值估计。
V k+1(s) 是通过选择最优动作来更新后的状态 s 的价值。
右侧的求和部分 代表在当前策略下,考虑所有可能的后续状态,并对这些状态的价值进行加权。
4.策略迭代公式推导:
①在策略∏下,从状态s开始的期望累计奖励
②得到最优策略的函数
5.总结.:
价值迭代和策略迭代是两种策略,不能同时进行。
价值迭代是通过不断更新 状态价值函数 来最终逼近最优策略。
策略迭代则是通过交替执行 策略评估 和 策略改善 两个步骤来不断优化策略,直到收敛。
价值迭代适合空间大,数据多的MDP,策略迭代适合空间小,数据少的MDP。
时序差分
时序差分是一种用来估计一个策略的价值函数的方法,它结合了蒙特卡洛和动态规划算法的思想。
时序差分方法和蒙特卡洛的相似之处在于可以从样本数据中学习,不需要事先知道环境;
和动态规划的相似之处在于根据贝尔曼方程的思想,利用后续状态的价值估计来更新当前状态的价值估计。
时序差分和蒙特卡洛区别
根据上文易知,蒙特卡洛是根据下图公式更新的(其中,Gt是从状态 st出发直到回合结束的回报。)
而时序差分是根据下图公式更新的(其中Rt+1是在时间步 t 后获得的即时奖励,γV(st+1) 是对下一个状态的价值函数的估计。)
其中,易知蒙特卡洛用的是以往的的实际回报(必须等待回合结束),然而时序差分可以理解为未来的估计值(当前的奖励和下一状态的估计值)
故
- 样本效率不同,蒙特卡洛需要完整的回合,然而时序差分在每个时间步都可以更新。
- 收敛速度方面也不同,且蒙特卡洛是离线更新,时序差分是在线更新。
- 复杂度不同,蒙特卡洛需要大量数据,计算量大,而时序差分每一步更新一次,相比来说计算量较小。
时序差分和动态规划区别
易知:
动态规划分为价值迭代和策略迭代,根据贝尔曼迭代方程得到最优解
①价值迭代:
②策略迭代:
时序差分也是如此,通过贝尔曼迭代方程得到最优解
总结:
- 时序差分是增量式更新,局部更新,依赖于当前的时间步,只更新局部信息。但是动态规划是全局更新,会遍历所有信息。
- 时序差分不需要知道当前环境,是模型无关型算法,但是动态规划要求对全局信息进行全知,是模型相关性算法。(不适用实际环境)