强化学习数学原理学习(四)
前言
今天是时序差分学习
正文
首先,明确一点,时序差分也是无模型的情况下的强化学习方法,TD学习是蒙特卡洛思想和动态编程(DP)思想的结合。最基础的时序差分学习估计状态值,而后续提出的Sarsa和Q-learning方法则直接对动作值进行估计。
最基础的TD算法(TD(0))
在策略评估中估计给定的策略的状态值,本质还是在求解贝尔曼方程
因为TD(0)的更新部分基于现有的估计,所以我们说它是一个自举方法(bootstrapping method),就像DP一样。
TD(0)算法的步骤
- 初始化值函数 V(s) 对所有状态s(可以初始化为0或随机值)。
- 观察当前状态St。
- 执行动作At,观察即时奖励Rt+1和下一个状态St+1。
- 使用上述更新规则更新V(St)。
- St+1变成新的St,重复步骤2-4。
TD(0)算法的特点
- 样本更新:TD(0)算法不需要完整的回报序列,只需要一步的奖励和下一个状态的预测值。
- Bootstrapping:TD(0)算法在更新时使用了现有的预测值)V(St+1),而不是等到最终结果出现。
- 自举:算法通过自身估计来引导学习过程,而不是依赖于外部信息。
Sarsa (TD for action values)
SARSA(State-Action-Reward-State-Action)是一种基于时序差分(Temporal Difference, TD)的学习算法,用于估计动作值函数(也称为Q函数),即给定状态和动作下的期望回报。SARSA算法是强化学习中的一个重要算法,主要用于求解控制问题,即找到最优策略。
SARSA算法的核心思想是通过观察序列St,At,Rt+1,St+1,At+1来更新动作值函数Q(s,a)。这里的每个字母代表:
- St:在时间步t时的状态。
- At:在时间步t时采取的动作。
- Rt+1:在时间步t+1时收到的奖励。
- St+1:在时间步t+1时的状态。
- At+1:在时间步t+1时采取的动作。
变体1:Expected Sarsa
Expected SARSA 是 SARSA 算法的一种变体,其主要区别在于它如何更新 Q 值。与标准 SARSA 不同的是,Expected SARSA 使用下一步策略下各动作的概率分布来对下一步的 Q 值进行加权平均,而不是选择特定的动作进行更新。这种方式可以减少更新中的方差,从而提供更稳定的学习过程。
核心思想
在Expected SARSA中,我们不是直接使用SARSA中具体的At+1 去更新 Q 值,而是考虑所有可能动作的加权平均。这意味着在计算期望值的时候,需要知道策略 π 下各个动作的概率:
-
降低方差:通过考虑所有可能的动作及其概率,Expected SARSA 可以降低学习过程中的方差,因为它对环境中噪声的敏感性较低。
-
灵活性:由于采用的是期望值计算,它更加依赖策略本身预测的概率,因此对策略选择有更多灵活性和可控性。
-
稳定性:相比于标准的SARSA,Expected SARSA 提供的一种平滑更新方法,也就是使用期望而不是单一可能,使得更新稳定性更好。
变体2:n-step Sarsa
n-step SARSA 是 SARSA 算法的一种变体,旨在结合单步更新与多步更新的优点。它通过在每次更新中考虑多个未来时间步的奖励来提高学习的样本效率和稳定性。与一阶的SARSA不同,n-step SARSA在每次更新时不仅考虑当前步和下一步的奖励,还考虑未来 n−1 步的奖励。
n-step SARSA 的核心思想
- 多步奖励:将多个时间步的累计奖励用于更新 Q 值。
- 平衡偏差和方差:通过选择合适的 n 值,可以在偏差(单步更新)和方差(多步更新)之间找到良好的平衡。
- 灵活性:n 的选择影响到算法的样本效率和学习稳定性。
算法步骤
以下是 n-step SARSA 的基本步骤:
-
初始化:
- 初始化状态动作值函数 Q(s,a) 为任意值。
- 设置初始的策略,通常是 ϵ-贪婪策略。
-
对于每一轮(episode):
- 初始化序列的首状态 S0。
- 从策略中选择初始动作 A0。
-
每个时间步 t 的操作:
- 执行动作 At,观察奖励 Rt+1 和下一个状态 St+1。
- 从状态St+1 根据策略选择下一动作 At+1。
- 计算未来 n 步的累计奖励
- 更新动作值函数
- 更新状态:St←St+1,动作:At←At+1。
-
直到达到终止状态。
选择 n 的影响
- 小的 n: 类似于一阶 SARSA,更新频繁,但使用的信息较少,因此偏差可能更高。
- 大的 n: 利用更多未来奖励信息,可能提供更稳定的策略改进,但方差可能较高,可能需要更多的计算。
Q-learing (TD for optimal action values)
太熟了,不提了,需要注意的是和上面的比起来的主要区别在于,Sarsa属于on-policy算法,而Q-learing属于off-policy算法。
放一张总结图:
尾声
很久没更了,最近有点忙。。。