其他分享
首页 > 其他分享> > 【强化学习】Q-Learning

【强化学习】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′来更新价值函数而不存在探索的可能:

image-20210716184143826

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