我是靠谱客的博主 慈祥身影,最近开发中收集的这篇文章主要介绍强化学习-Q-Learning算法一、Q-Learning的更新Q值的公式二、Q-Learning的存储Q值的Q-Table三、Q-Learning的更新Q值的算法流程四、Q-Learning的工程化的执行流程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

参考:https://blog.csdn.net/qq_41959920/article/details/109222969


一、Q-Learning的更新Q值的公式

        在基础阶段我们已经学习了基于模型的动态规划算法,了解了值迭代的概念。Q-Learning的思想就是根据值迭代得到的。但要前面的值迭代每次都对所有状态和动作的Q值更新一遍,这在现实中可行性并不高。Q-Learning只使用有限的样本进行操作。

那么,怎么处理?Q Learning提出了一种更新Q值(在某个时刻在状态s下采取动作a的长期回报。)的办法:     

 

上面的公式含义就是:

现在的Q值=原来的Q值+学习率*(立即回报+Lambda*后继状态的最大Q值-原来的Q值

我们分析以上公式可知,为了得到最优策略Policy,我们需要估算每一个状态下每一种选择的Q值,而每一个时刻的Q值和当前得到的立即回报Reward以及下一个时刻的Q值有关。那么这种“自举现象”怎么实现呢?

二、Q-Learning的存储Q值的Q-Table

对于Q-Learning,首先就是要确定如何存储Q值,最简单的想法就是用矩阵(Q-Table),我们使用一个很大的表格,横列代表s,纵列代表a,里面的数字代表Q值,如下表示:

Q-Learning的目的是学习方法就是建立一个以State为行、Action为列的Q-Table,通过每个动作带来的奖赏不断更新Q-Table中的Q值,从而获得特定State下、特定Action的Q值。

Q-Learning是off-policy的,因为它的行动策略评估策略不是一个策略。

Q-Learning中每次采取Action的行动策略是ε-greedy策略,即要保持探索和利用的微妙平衡;

而在学习更新Q表的时候使用的评估策略是贪婪策略,即永远将最好的动作记录在Q-Table中。

三、Q-Learning的更新Q值的算法流程

Q-Learning的更新Q值得算法流程为:

在上述算法中我们可以看出选择动作的时候使用的是ε-greedy策略,在更新Q值的公式中我们使用的是maxQ值,所以它是off-policy的,在上述过程中我们引入了如下两个概念:

Q现实:采取该动作获得的立即回报以及和下一个状态动作的Q值的加权和(Agent的经历中实际采取该动作后得到的Q值)

Q估计:从Q-Table中获得的当前状态和动作下的Q值(Agent学得的Q-Table中记录的Q值)

我们分析算法流程具体如下:

四、Q-Learning的工程化的执行流程

1、初始化阶段:

该阶段是每个程序都必备的阶段,在该阶段Q-Learning会建立并且初始化一个Q-Table,其中的Q值全部初始化为0:

2、训练学习阶段:

训练学习阶段是程序进入一个双重循环中,开启多个回合的训练中,在每个回合的训练中,有会进行很多步的学习。

以下列举一个步骤:

假设此时处于s1,先根据当前的Q-Table以及ε-greedy策略选取一个动作,此时每一个Q值都是0,随机选择即可。

假设选择a2,得到reward为1,后继状态s3。

利用Q值更新公式更新Q值,计算出新的Q值为1,则表格变为了:

此时状态变为了s3。

如此重复上述step,直到Q值不断收敛到一个稳定值即可。

理解:

Q(s,a)表示的是一个二维的Q表,s代表状态,a代表决策,每组(s,a)有一个对应的价值,算是猜测的s状态下执行a的收益。Q表一开始是随机的,肯定是不符合实际的,而Q学习的过程就是让Q表变得符合实际的过程。

学习时,每次决策都会根据当前的状态s,选择一个决策a(怎么决策有另外的说法,可以直接选最大的,或者依概率选,或者其它的什么算法,比如根据epsilon-greedy算法等);


在决策之后,我们才会得到一个真实的收益r,并且,决策可能会改变我们的状态,从s变成s'(可能s'==s,还有这里应该需要补充一个说明,r应该是一个在一定范围浮动的值,但不是每次都会是同一个值);得到r和s'后,就要尝试修改Q表,但是由于r是随机浮动的,你也不能就直接对r马首是瞻,就认为新的出来的东西更好,认为状态s执行决策a就得到收益r,就认为Q(s,a)=r,毕竟r是浮动的,不一定这个r刚好就是期望值。所以Q学习又加了一个系数α,表示r的权重。α=1表示完全根据新得到的r更新Q表,对过去完全不参考。

此外还有一种情况也比较常见,我虽然s状态决策a的收益不咋地,但是这个决策a能够到达状态s',而状态s'下的最好决策却有很高的收益。(比如说爬山,爬山的过程你一直在消耗体力,可以算是负收益,但是爬到山顶,你却能饱览大片风景,获得巨额收益;再比如高考,学习过程基本就是一直在付出的状态,只有高考被心仪学校录取,你才会新满足,获得巨额收益;扯远了)虽然a不咋地,但是状态s'很顶,所以这种情况我们也要考虑进来。要给状态s'下的最大决策收益加一个权重,把状态s'的收益考虑进来,这个权重就是γ。从这个意义上来看,只要γ不为0,价值和收益就是完全不同的东西了。价值会考虑决策后的直接收益,和未来收益。

这样不断学习,还原了真实的Q表,自然下一次我们就知道根据当前状态s,该做出什么样的决策a了

最后

以上就是慈祥身影为你收集整理的强化学习-Q-Learning算法一、Q-Learning的更新Q值的公式二、Q-Learning的存储Q值的Q-Table三、Q-Learning的更新Q值的算法流程四、Q-Learning的工程化的执行流程的全部内容,希望文章能够帮你解决强化学习-Q-Learning算法一、Q-Learning的更新Q值的公式二、Q-Learning的存储Q值的Q-Table三、Q-Learning的更新Q值的算法流程四、Q-Learning的工程化的执行流程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部