强化学习——Q-Leaning算法原理
一、什么是Q-leaning?
Q-learning是一种经典的强化学习算法,用于解决马尔可夫决策过程(Markov Decision Process,MDP)中的控制问题。它是基于值迭代(Value Iteration)的思想,通过估计每个状态动作对的价值函数Q值来指导智能体在每个状态下选择最佳的动作。
其算法的基本思想跟主要优势如下:
Q-Learning
是强化学习算法中value-based的算法,Q即为Q(s,a),就是在某一个时刻的state
状态下,采取动作a能够获得收益的期望,环境会根据agent
的动作反馈相应的reward
奖赏,所以算法的主要思想就是将state
和action
构建成一张Q_table
表来存储Q值,然后根据Q值来选取能够获得最大收益的动作。
Q-learning的主要优势就是使用了时间差分法(融合了蒙特卡洛和动态规划)能够进行off-policy的学习,使用贝尔曼方程可以对马尔科夫过程求解最优策略.
二、Q-leaning的具体例子
1、做作业
(这里引用https://zhuanlan.zhihu.com/p/74225549这篇文章的图片)
我们做事情都会有自己的一个行为准则,比如小时候爸妈常说“不写完作业就不准看电视”。所以我们在写作业的状态(state)下,好的行为就是继续写作业,直到写完它,我们还可以得到奖励(reward),不好的行为就是没写完作业就跑去看电视了,被爸妈发现就会被惩罚,这种事情做的多了,也变成了我们不可磨灭的记忆,这其实就是一个Q-learning的决策过程。
首先这张图片我们可以看到s1,a2,s2代表写作业,a1代表看电视,Q表中的值代表着在某一状态下做某一件事能够得到的奖赏reward,我们可以随意设置Q表中的数值,但是我们会发现Q(s1,a1)=-2要小于Q(s1,a2)=1,所以我们判断要选择a2写作业作为我们的下一个行为。现在我们的状态更新成s2,我们还是有两个同样的选择,重复上面的过程,在行为准则Q-table中寻找Q(s2,a1)Q(s2,s2)的值,并比较他们的大小,选取较大的一个。接着根据a2我们到达s3并重复上述的决策过程,Q-learning的方法就是这样抉择的。那我们的Q-table这张行为决策表又是如何决策的呢?我们来看看。
回到之前,根据Q表的估计,因为在s1中,a2的值比较大,通过之前的决策方法我们在s1选择了a2,并到达s2,这时我们开始更新用于决策的Q表,接着我们并没有在实际中采取任何行为,而是在想象自己在s2上采取了a1,a2两个行为,分别看看两种行为哪一个的Q值大,比如说Q(s2,a2)的值比Q(s2,a1)的大,所以我们把大的Q(s2,a2)乘上一个衰减值gamma(eg 0.9)并加上到达s2时所获得的奖励Reward(这里没有获取到我们的棒棒糖,所以奖励为0),因为会获取实实在在的奖励Reward,所以我们将这个作为我们现实中Q(s1,a2)的值,但是我们之前是根据Q表估计Q(s1,a2)的值。所以有了现实值和估计值,我们就可以更新Q(s1,a2)的值,变成新的值。但时刻记住,我们虽然用maxQ(s2)估算了一下s2的状态,但还没有在S2做出任何行为,s2的行为决策要等到更新完了以后再重新另外做,这就是off-policy的Q-learning是如何决策和学习优化决策过程。
参数介绍:
-
Epsilon greedy
:是用在决策上的一个策略,以概率ε选择随机动作,以概率1-ε选择当前最优动作,比如epsilon = 0.9的时候,就说明百分之10的情况我会按照Q表的最优值选择行为,百分之90的时间随机选择行为。 -
alpha
:学习率,决定这次的误差有多少是要被学习的。-
学习率控制着每次更新Q值时所采用的步长。较大的学习率会导致Q值函数的快速更新,可能会使算法更快地收敛,但也可能导致不稳定性和震荡。
-
如果学习率过大,会导致Q值函数不稳定,可能会导致算法无法收敛或者在局部最优解处震荡。
-
如果学习率过小,会导致算法收敛速度变慢,可能需要更多的迭代次数才能达到收敛。
-
-
gamma