公式中有个折合因子γ,其取值范围为[0,1],当其为0时,表示只考虑当前动作对当前的影响,不考虑对后续步骤的影响,当其为1时,表示当前动作对后续每步都有均等的影响。当然,实际情况通常是当前动作对后续得分有一定的影响,但随着步数增加,其影响减小。
从公式中可以看出,状态值函数可以通过迭代的方式来求解。增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略。
策略就是如何根据环境选取动作来执行的依据。策略分为稳定的策略和不稳定的策略,稳定的策略在相同的环境下,总是会给出相同的动作,不稳定的策略则反之,这里我们主要讨论稳定的策略。
求解上述状态函数需要采用动态规划的方法,而具体到公式,不得不提:
其中,π代表上述提到的策略,Q π (s, a)相比于V π (s),引入了动作,被称作动作值函数。对贝尔曼方程求最优解,就得到了贝尔曼最优性方程。
求解该方程有两种方法:策略迭代和值迭代。
策略迭代分为两个步骤:策略评估和策略改进,即首先评估策略,得到状态值函数,其次,改进策略,如果新的策略比之前好,就替代老的策略。
从上面我们可以看到,策略迭代算法包含了一个策略估计的过程,而策略估计则需要扫描(sweep)所有的状态若干次,其中巨大的计算量直接影响了策略迭代算法的效率。而值迭代每次只扫描一次,更新过程如下:
即在值迭代的第k+1次迭代时,直接将能获得的最大的Vπ(s)值赋给Vk+1。
Q-Learning是根据值迭代的思路来进行学习的。该算法中,Q值更新的方法如下:
虽然根据值迭代计算出目标Q值,但是这里并没有直接将这个Q值(是估计值)直接赋予新的Q,而是采用渐进的方式类似梯度下降,朝目标迈近一小步,取决于α,这就能够减少估计误差造成的影响。类似随机梯度下降,最后可以收敛到最优的Q值。具体算法如下:
如果没有接触过动态规划的童鞋看上述公式可能有点头大,下面通过表格来演示下Q值更新的过程,大家就明白了。
状态 a1 a2 a3 a4
s1 Q(1, 1) Q(1, 2) Q(1, 3) Q(1, 4)
s2 Q(2, 1) Q(2, 2) Q(2, 3) Q(2, 4)
s3 Q(3, 1) Q(3, 2) Q(3, 3) Q(3, 4)
s4 Q(4, 1) Q(4, 2) Q(4, 3) Q(4, 4)
Q-Learning算法的过程就是存储Q值的过程。上表中,横列为状态s,纵列为Action a,s和a决定了表中的Q值。
来更新Q值,这里我们假设α是1,λ也等于1,也就是每一次都把目标Q值赋给Q。那么这里公式变成:
所以在这里,就是
那么对应的s3状态,最大值是0,所以
Q表格就变成:
状态 a1 a2 a3 a4
s1 0 1 0 0
s2 0 0 0 0
s3 0 0 0 0
s4 0 0 0 0
然后置位当前状态s为s3。
所以Q的表格就变成:
状态 a1 a2 a3 a4
s1 0 1 0 0
s2 0 0 0 0
s3 0 0 3 0
s4 0 0 0 0