概述
参考: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的工程化的执行流程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复