一文读懂,on-policy和off-policy
我来谈一下我的理解,不一定对。本文以 Sarsa 和 Q-learning 为例
Sarsa
:on-policyQ-learning
:off-policy
1. 什么是on-policy和off-policy?
我们有两个策略:行动策略和目标策略
on-policy
: 行动策略和目标策略是同一个策略off-policy
: 行动策略和目标策略不是同一个策略
2. 什么是行动策略和目标策略?
- 行动策略:就是每一步怎么选动作的方法,它产生经验样本
- 目标策略:我们选什么样更新方式,去寻找最好的Q表
3. 以 Sarsa 和 Q-learning 为例
3.1 算法讲解
目标:更新S环境下,做出a动作后的Q(s,a)
① Q-learning算法和Sarsa算法都是从状态s开始,根据当前的Q表使用一定的策略(** Epsilon gready)选择一个动作a**。
② 然后观测到下一个状态s’,此时这个状态下有个奖励r。
③ 并再次根据Q表选择动作a’。只不过两者选取a’的方法不同:
Q-learning
: 使用贪心策略(gready),即选取值最大的a’,此时只是计算出哪个a‘可以使Q(s,a)取到最大值,并没有真正采用这个动作a‘;Sarsa
: 仍使用策略策略(Epsilon gready),并真正采用了这个动作a‘ 。
④ 然后带入式子进行更新
3.2 总结
Q-learning
: 行动策略是E-gready,但是目标策略,是gready,所以是off-policySarsa
: 行动策略是E-gready,但是目标策略,是E-gready,所以是on-policy
4 一些问题的个人理解
不一定对
4.1 为什么行动策略是产生经验样本
行动策略就是,用这个策略来指挥向哪里走。
比如 :
读书-读书-读书-奖励
读书-读书-电视-批评
…
行动策略决定怎么走,每个环境不同的动作,都是一条更新Q表的路径,也都是一个经验样本
4.2 off-policy,on-policy各自优缺点
off-policy学习的优点是:
- 它可以从任何来源的数据中学习,不需要每次都使用最新的策略来收集数据,这样可以提高数据利用率和学习效率。
- 它可以同时探索和利用,因为它有两个策略:一个用于探索,一个用于利用。这样可以避免陷入局部最优解。
- 它可以更容易地实现函数逼近和经验回放,因为它不依赖于当前执行的策略。
Off-policy学习的缺点是:
- 它可能需要更多的计算资源和内存空间,因为它需要维护一个数据缓冲区和两个策略。
- 它可能需要使用重要性采样或其他技术来纠正不同策略之间的偏差,这可能增加了复杂度和方差。
- 它可能难以保证收敛性和稳定性,特别是在非静态环境中。
On-policy学习的优点是:
- 它比较简单和直观,因为它只有一个策略,并且只从当前执行的策略中学习。
- 它可以保证收敛到最优策略或接近最优策略的结果,如果满足一定的条件(如足够多的探索)。
- 它可以适应动态变化的环境,因为它总是使用最新的数据来更新策略。
On-policy学习的缺点是:
- 它可能浪费了很多有价值的数据,因为它只从当前执行的策略中学习,并且每次都需要使用最新的策略来收集数据。
- 它可能难以平衡探索和利用之间的权衡,因为它只有一个策略,并且需要在每个状态下都进行一定程度的探索。
- 它可能容易陷入局部最优解,特别是当初始状态或动作选择不合理时。
4.3 Off-policy 如何拿别人经验学习
Off-policy学习如何拿别人学习经验去学习的原理是,它可以从一个数据缓冲区中随机抽取一些之前收集的经验,这些经验可能来自于不同的策略。然后,它可以用这些经验来更新当前的策略,使其更接近最优策略。这样,它就不需要每次都使用最新的策略来收集数据,而是可以利用已有的数据来提高学习效率
我理解是的
【别人经验】
读书-读书-读书-奖励100
r[读书-读书-奖励100]=0+0+0.9 * 0.9 * 100=81
【现在】
看电视(-100)-读书-读书-奖励100
我后面就不用算了,因为如果走这条路,别人经验已经有81,直接更新就行