进阶阶段(一)——Q-Learning算法

提示:转载清楚出处,若本文无意侵犯到您的合法权益,请及时与作者联系。

一、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值不断收敛到一个稳定值即可。

详细的工程化细节,可以参考我的博客:莫烦Python代码实践(一)——Q-Learning算法工程化解析

参考资料:

DQN从入门到放弃5 深度解读DQN算法

猜你喜欢

转载自blog.csdn.net/qq_41959920/article/details/109222969
今日推荐