900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 强化学习8-时序差分控制离线算法Q-Learning

强化学习8-时序差分控制离线算法Q-Learning

时间:2022-09-26 05:21:51

相关推荐

强化学习8-时序差分控制离线算法Q-Learning

Q-Learning和Sarsa一样是基于时序差分的控制算法,那两者有什么区别呢?

这里已经必须引入新的概念

时序差分控制算法的分类:在线和离线

在线控制算法:一直使用一个策略选择动作和更新价值函数,如Sarsa

离线控制算法:两个策略,一个选择新的动作,一个更新价值函数,如Q-Learning

Q-Learning简介

在S下基于ε-贪心策略选择动作A,执行A,获得奖励R,并进入下一个状态S’,

接下来如果是Sarsa,将继续基于ε-贪心策略选择动作A’,利用Q(S',A')更新价值函数,并在下一轮执行A’,这就是在线算法,学到什么就执行什么

但是Q-Learning则不同,它将基于贪心策略选择动作A’,利用Q(S',A')更新价值函数,但是在下一轮并不执行A',而是又基于ε-贪心策略选择动作,这就是离线算法,学到什么不一定执行什么

价值更新方式Q(S,A)=Q(S,A)+α(R+γmaxaQ(S′,a)−Q(S,A))

对比SarsaQ(S,A)=Q(S,A)+α(R+γQ(S′,A′)−Q(S,A))

对比MCQ(S,A)=Q(S,A)+(1/N)(Gt−Q(S,A))

在选择动作时,选择什么就执行什么,

在更新q值时,sarsa选择什么就执行什么,Q-Learning选择什么不一定执行什么

Q-Learning算法描述

输入:{S A R γ αε},迭代轮数T

输出:所有的状态和动作对应的价值Q

1. 随机初始化所有的状态和动作对应的价值Q. 对于终止状态其Q值初始化为0.

2. for i from 1 to T,进行迭代。

a) 初始化S为当前状态序列的第一个状态。

b)用ε-贪婪法 在当前状态S选择动作A

c)在状态S执行当前动作A,得到新状态S’和奖励R

d) 更新价值函数Q(S,A)=Q(S,A)+α(R+γmaxaQ(S′,a)−Q(S,A))

e)S=S′

f) 如果S'是终止状态,当前轮迭代完毕,否则跳转到步骤b)

Q-Learning解决Windy GridWorld

for i in range(10000):# 10000 轮while True:maxq0, r0, stat_0, action0 = choose(start) # e 贪心if stat_0 == end:start = [3, 0]breakmaxq, r, stat_1, action = choose_max(stat_0) # 贪心q[get_q_x(start), actions.index(action0)] += alpha * (r0 + maxq - q[get_q_x(start), actions.index(action0)])start = stat_0

结果同Sarsa

Sarsa 与Q-Learning 的比较

Sarsa在学习最优策略的同时还在做探索,而Q-Learning直接学习最优策略

这使得

1. Sarsa在训练时,为了保证收敛,需要设定规则,逐渐减小探索率,Q-Learning则不需要

2.Q-Learning直接学习的最优策略,而最优策略是基于当前数据的,这等于放弃了其他更好的机会,可能收敛于局部最优,Q-Learning的强化版Deep Q-Learning也有这个问题

3. Sarsa属于保守型,Q-Learning属于激进派

// 好比传销的洗脑,骗子告诉你今天干得好能挣1000块钱,明天干得好能挣5000块钱,但是如果不好好干,可能只有100块,Sarsa听了,觉得干好了才能多挣钱,万一干不好,哎,慢慢来吧,而Q-Learning听了,一算,我今天挣1000,明天5000,发财了,于是立即成为忠实的传销分子,这就是急于求成,容易出错

// 对应到算法上,就是Sarsa训练的模型比较平滑,而Q-Learning陡峭,可能局部最优

4. 在实际应用中,如果在模拟环境中训练模型,推荐Q-Learning,如果在真实环境中训练模型,推荐Sarsa

总结

Q-Learning和Sarsa一样,很灵活,但是不适合解决大规模问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。