位置: IT常识 - 正文
推荐整理分享强化学习——Q-Learning算法原理,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
从决策方式来看,强化学习可以分为基于策略的方法(policy-based)和基于价值的方法(value-based)。基于策略的方法直接对策略进行优化,使制定的的策略能够获得最大的奖励。基于价值的强化学习方法中,智能体不需要制定显式的策略,它维护一个价值表格或价值函数,通过这个价值表格或价值函数来选取价值最大的动作。 Q-Learning 算法就是一种value-based的强化学习算法。
二、算法思想:Q(s,a)是状态价值函数,表示在某一具体初始状态s和动作a的情况下,对未来收益的期望值。 Q-Learning算法维护一个Q-table,Q-table记录了不同状态下s(s∈S),采取不同动作a(a∈A)的所获得的Q值。
Q-tablea1a2a3…s1Q(s1,a1)Q(s1,a2)Q(s1,a3)s2Q(s2,a1)Q(s2,a2)Q(s2,a3)s3Q(s3,a1)Q(s3,a2)Q(s3,a3)…探索环境之前,初始化Q-table,当agent与环境交互的过程中,算法利用贝尔曼方程(ballman equation)来迭代更新Q(s,a),每一轮结束后就生成了一个新的Q-table。agent不断与环境进行交互,不断更新这个表格,使其最终能收敛。最终,agent就能通过表格判断在某个转态s下采取什么动作,才能获得最大的Q值。
三、更新过程更新方法: Q(st,at)←Q(st,at)+α[rt+1+γmaxaQ(st+1,a)−Q(st,at)]Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha [r_{t+1}+ \gamma \max_aQ(s_{t+1},a) - Q(s_t,a_t) ]Q(st,at)←Q(st,at)+α[rt+1+γamaxQ(st+1,a)−Q(st,at)]
Q(st,at){\color{Red} Q(s_t,a_t)}Q(st,at) 是在状态sts_tst下采取动作ata_tat的长期回报,是一个估计Q值
rt+1{\color{Red} r_{t+1}}rt+1 是在状态sts_tst下执行动作ata_tat得到的回报reward
maxaQ(st+1,a){\color{Red} \max_aQ(s_{t+1},a)}maxaQ(st+1,a) 指的是在状态st+1s_{t+1}st+1下所获得的最大Q值,直接看Q-table,取它的最大化的值。γ\gammaγ是折扣因子,含义是看重近期收益,弱化远期收益,同时也保证Q函数收敛。
(rt+1+γmaxaQ(st+1,a){\color{Red} (r_{t+1}+ \gamma \max_aQ(s_{t+1},a)}(rt+1+γmaxaQ(st+1,a) 即为目标值,就是时序差分目标,是Q(st,at)Q(s_t,a_t)Q(st,at) 想要逼近的目标。α\alphaα是学习率,衡量更新的幅度。
当目标值和估计值的差值趋于0的时候,Q(s,a)就不再继续变化,Q 表趋于稳定,说明得到了一个收敛的结果。这就是算法想要达到的效果。
注意:maxaQ(st+1,a){\color{Red} \max_aQ(s_{t+1},a)}maxaQ(st+1,a)所对应的动作不一定是下一步会执行的实际动作! 这里引出ε−greedy{\color{Red} \varepsilon-greedy}ε−greedy,即 ε−\varepsilon-ε−贪心算法。 在智能体探索过程中,执行的动作采用ε−greedy{\color{Red} \varepsilon-greedy}ε−greedy策略,是权衡exploitation-exploration(利用和探索)的超参数。
exploration:探索环境,通过尝试不同的动作来得到最佳策略(带来最大奖励的策略)exploitation:不去尝试新的动作,利用已知的可以带来很大奖励的动作。Q-Learning算法中,就是根据Q-table选择当前状态下能使Q值最大的动作。在刚开始的时候,智能体不知道采取某个动作后会发生什么,所以只能通过试错去探索。利用是指直接采取已知的可以带来很好奖励的动作。这里面临一个权衡问题,即怎么通过牺牲一些短期的奖励来理解动作,从而学习到更好的策略。因此,提出ε−greedy\varepsilon-greedyε−greedy,ε\varepsilonε就是权衡这两方面的超参数。
这篇博客https://blog.csdn.net/zhm2229/article/details/99351831对这部分的理解讲的很好,在此引用一下:
做exploitation和exploration的目的是获得一种长期收益最高的策略,这个过程可能对short-term reward有损失。如果exploitation太多,那么模型比较容易陷入局部最优,但是exploration太多,模型收敛速度太慢。这就是exploitation-exploration权衡。
比如我们设ε\varepsilonε=0.9,随机化一个[0,1]的值,如果它小于ε\varepsilonε,则进行exploration,随机选择动作;如果它大于ε\varepsilonε,则进行exploitation,选择Q value最大的动作。 在训练过程中,ε\varepsilonε在刚开始的时候会被设得比较大,让agent充分探索,然后ε\varepsilonε逐步减少,agent会开始慢慢选择Q value最大的动作
三、伪代码图源于:百度飞桨AlStudio
参考: [1] 王琦.强化学习教程[M] [2] https://blog.csdn.net/zhm2229/article/details/99351831
友情链接: 武汉网站建设