【强化学习】Q-Learning
作者:互联网
目录
强化学习笔记,内容来自 刘建平老师的博客
Q-Learning(off-policy)
概述
给定强化学习的5个要素:状态集S, 动作集A, 即时奖励R,衰减因子γ, 探索率ϵ, 求解最优的动作价值函数q∗和最优策略π∗
关键词:时序差分、model-free、off-policy、ϵ-greedy、价值迭代
通过价值函数的更新,来更新策略,通过策略来产生新的状态和即时奖励,进而更新价值函数。一直进行下去,直到价值函数和策略都收敛。
首基于状态S,用ϵ−greedy策略选择到动作A,然后执行动作A,得到奖励R,并进入状态S′,此时如果是Sarsa,会继续基于状态S′,用ϵ−greedy策略选择A′,然后来更新价值函数。但是Q-Learning则不同。对于Q-Learning,它基于状态S′,没有使用ϵ−greedy策略而是使用贪婪策略选择A′,也就是说,选择使Q(S′,a)最大的a作为A′来更新价值函数而不存在探索的可能:
off-policy:
价值函数的更新和新动作的选择使用两个不同的策略policy,Q-learning按照ε-greedy策略选择动作、按照贪婪greedy策略更新 价值函数,即更新价值函数的公式中用的A‘ 是贪婪策略选择的而不是ε-greedy。这是Q-learning与Sarsa的本质区别。
算法流程
输入:迭代轮数T、状态集S、动作集A、步长α、衰减因子γ、探索率ϵ
输出:所有的状态和动作对应的价值Q
1. 随机初始化所有的状态和动作对应的价值Q,终止状态的Q初始化为0
2. for i in [ 1, T ]:
a)初始化S为当前序列的第一个状态
b)用ε-greedy策略在当前状态S选择出动作A
c)执行动作A,由环境得到新状态S’ 和奖励R
d)按公式更新价值函数
e)前进一步:S = S’
f)if S’是终止状态,break;else 跳回步骤b
Q-Learning vs Sarsa
Q-Learning直接学习的是最优策略,而Sarsa在学习最优策略的同时还在做探索。这导致在学习最优策略的时候,如果用Sarsa,为了保证收敛,需要制定一个策略,使ϵ−greedy策略的超参数ϵ在迭代的过程中逐渐变小。Q-Learning没有这个烦恼。
另外一个就是Q-Learning直接学习最优策略,但是最优策略会依赖于训练中产生的一系列数据,所以受样本数据的影响较大,因此受到训练数据方差的影响很大,甚至会影响Q函数的收敛。Q-Learning的深度强化学习版Deep Q-Learning也有这个问题。
在学习过程中,Sarsa在收敛的过程中鼓励探索,这样学习过程会比较平滑,不至于过于激进,导致出现像Q-Learning可能遇到一些特殊的最优“陷阱”。比如经典的强化学习问题"Cliff Walk"。
在实际应用中,如果是在模拟环境中训练强化学习模型,推荐使用Q-Learning,如果是在线生产环境中训练模型,则推荐使用SARSA。
小结
对于Q-Learning和Sarsa这样的时序差分算法,对于小型的强化学习问题是非常灵活有效的,但是在大数据时代,异常复杂的状态和可选动作,使Q-Learning和Sarsa要维护的Q表异常的大,甚至远远超出内存,这限制了时序差分算法的应用场景。在深度学习兴起后,基于深度学习的强化学习开始占主导地位。
标签:状态,策略,greedy,学习,Sarsa,Learning,强化 来源: https://blog.csdn.net/qq_45753394/article/details/118883860