强化学习算法---马尔可夫,蒙特卡洛,动态规划,时序差分

视频链接:
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. 延迟更新:与动态规划方法不同,蒙特卡洛方法通常是在完整的轨迹结束后才进行更新(即等到终止状态时才知道从某个状态开始的回报),这可能导致计算上的延迟和较慢的收敛速度。

动态规划算法

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) 是对下一个状态的价值函数的估计。)
在这里插入图片描述
其中,易知蒙特卡洛用的是以往的的实际回报(必须等待回合结束),然而时序差分可以理解为未来的估计值(当前的奖励和下一状态的估计值)

  1. 样本效率不同,蒙特卡洛需要完整的回合,然而时序差分在每个时间步都可以更新。
  2. 收敛速度方面也不同,且蒙特卡洛是离线更新,时序差分是在线更新。
  3. 复杂度不同,蒙特卡洛需要大量数据,计算量大,而时序差分每一步更新一次,相比来说计算量较小。

时序差分和动态规划区别

易知:
动态规划分为价值迭代和策略迭代,根据贝尔曼迭代方程得到最优解
①价值迭代:
在这里插入图片描述
②策略迭代:
在这里插入图片描述
在这里插入图片描述
时序差分也是如此,通过贝尔曼迭代方程得到最优解

在这里插入图片描述

总结:

  1. 时序差分是增量式更新,局部更新,依赖于当前的时间步,只更新局部信息。但是动态规划是全局更新,会遍历所有信息。
  2. 时序差分不需要知道当前环境,是模型无关型算法,但是动态规划要求对全局信息进行全知,是模型相关性算法。(不适用实际环境)
### 使用时序差分算法解决马尔可夫决策过程 #### 什么是时序差分学习? 时序差分(TD)学习是一种结合了动态规划(DP)和蒙特卡洛(MC)方法的学习方式[^1]。TD学习通过在线更新的方式逐步逼近最优价值函数,而不需要等到整个序列结束。 #### TD(0) 更新规则 对于给定的状态 \( s \),当采取行动 \( a \) 后进入新状态 \( s' \),并获得即时奖励 \( r \),TD(0) 的更新公式为: \[ V(s) \leftarrow V(s) + \alpha [r + \gamma V(s') - V(s)] \] 其中: - \( V(s) \) 是当前估计的价值; - \( \alpha \) 是步长参数(也称为学习率); - \( \gamma \) 是折扣因子; - \( r + \gamma V(s') \) 称为目标值; 此公式的直观解释是在每次访问某个状态之后立即调整其价值评估,基于所观察到的结果以及对未来回报的最佳猜测。 #### 示例:迷宫游戏中的应用 假设有一个简单的网格世界作为环境,在这个环境中存在一个智能体试图找到通往目标位置的路径。每个格子代表不同的状态,移动方向构成可能的动作集合。为了简化说明,假设有四个基本动作——上、下、左、右,并且每一步都会带来固定的负向奖励来鼓励快速到达终点。 ```python import numpy as np def td_learning(env, num_episodes=500, alpha=0.1, gamma=0.99): # 初始化价值表V[s]=0 对于所有的s属于S+ value_table = {state: 0 for state in env.all_states()} for episode in range(num_episodes): state = env.reset() # 开始新的回合 while not env.is_terminal(state): action = choose_action(state) # 根据某些策略选择行为 next_state, reward, done = env.step(action) if done: target = reward else: target = reward + gamma * value_table[next_state] delta = target - value_table[state] value_table[state] += alpha * delta state = next_state return value_table # 假设这里定义了一个env类用于模拟具体的环境交互逻辑... ``` 这段代码展示了如何利用TD(0) 方法迭代地改善对各个状态下预期累积奖励的理解。随着训练次数增加,`value_table` 将逐渐收敛至真实值附近。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值