Q-learning是一种基于值迭代的强化学习(ReinforcementLearning,RL)算法,主要用于在给定环境中学习一个策略,使得智能体(agent)能够在与环境交互的过程中获得最大累计奖励。它通过学习一个状态-动作值函数(Q函数)来指导智能体的行为选择,适用于各种离散状态和动作的任务环境。Q-learning在各种应用领域中都有显著表现,包括机器人控制、游戏AI、交通系统优化以及金融市场分析等。通过不断改进和扩展,Q-learning在未来将有望在更多复杂的实际任务中发挥重要作用,特别是在结合其他机器学习技术和多智能体系统的研究中。
Q-Learning算法是一种无模型的强化学习技术,用于学习代理在环境中采取动作的最佳策略。在Q-Learning中,我们通常使用两个主要的矩阵来表示和更新信息:奖励矩阵(R)和Q值矩阵(Q)。
Q-learning的核心思想是通过不断地更新状态-动作值(\(Q\)值)来逼近最优Q函数(\(Q^*\)),从而得到最优策略。我们可以构建一个矩阵\(Q\),它用来表示agent已经从经验中学到的知识。矩阵\(Q\)与\(R\)是同阶的,其行表示状态,列表示行为,\(R(s,a)\)表示在状态\(s\)是采取行为\(a\)获得的奖励。由于刚开始时agent对外界环境一无所知,因此矩阵\(Q\)应初始化为零矩阵,对于状态数目未知的情形,我们可以让\(Q\)从一个元素出发,每次发现一个新的状态时就可以在\(Q\)中增加相应的行列。Q-learning算法的转移规则比较简单,如下式所示:
其中\(s,a\)表示当前的状态和行为,\(\widetilde{s},\widetilde{a}\)表示\(s\)的下一个状态及行为,式(1)中的\(\gamma\)称为学习系数,满足\(0\leq\gamma<1\),如果\(\gamma=0\),对立即的奖励更有效;如果接近1,整个系统会更考虑将来的奖励。在没有老师的情况下,我们的agent将通过经验进行学习(也称为无监督学习)。它不断从一个状态转至另一状态进行探索,直到到达目标。我们将agent的每一次探索称为一个episode。在每一个episode中,agent从任意初始状态到达目标状态。当agent达到目标状态后,一个episode即结束,接着进入另一个episode。下面给出整个\(Q\)-learning算法的计算步骤:
Step1给定参数\(\gamma\)和reward矩阵\(R\);Step2今\(Q:=0\);Step3Foreachepisode:3.1随机选择一个初始的状态\(s\);3.2若未达到目标状态,则执行以下几步(1)在当前状态\(s\)的所有可能行为中选取一个行为\(a\);(2)利用选定的行为\(a\),得到下一个状态\(\widetilde{s}\);(3)按照公式(1),计算\(Q(s,a)\);(4)令\(s:=\widetilde{s}\).
Agent利用上述算法从经验中进行学习。每一个episode相当于一个trainingsession,在一个traimingsession中,agent探索外界环境,并接收外界环境的reward,直到达到目标状态。训练的目的是要强化agent的“大脑”(用\(Q\)表示)。训练得越多,则\(Q\)被优化得更好,当矩阵\(Q\)被训练强化后,agent便很容易找到达到目标状态的最快路径了。利用训练好的矩阵\(Q\),我们可以很容易地找出一条从任意状态\(s_0\)出发达到目标状态的行为路径,具体步骤如下:
令当前状态\(s:=s_0\);确定\(a\),它满足\(Q(s,a)=\max_{\tilde{a}}\{Q(s,\widetilde{a})\}\);令当前状态\(s:=\widetilde{s}(\widetilde{s}\)表示\(a\)对应的下一个状态\()\);重复执行步2和步3直到\(s\)成为目标状态.
通过不断迭代更新\(Q(s,a)\)的值,Q-Learning算法可以学习到最优策略\(\pi^*\)下的状态-动作对的价值函数\(Q^*(s,a)\)。这个过程不需要环境的动态模型,因此Q-Learning是一种无模型的强化学习算法。
贝尔曼方程是动态规划中的核心原理,它将一个状态的价值分解为即时奖励和未来价值的总和。对于状态价值函数$V^{\pi}(s)$和动作价值函数\(Q^{\pi}(s,a)\),贝尔曼方程可以表示为:
其中:
Q-Learning算法的目标是找到一个策略\(\pi^*\),使得\(Q(s,a)\)最大化,即:
Q-Learning的更新规则如下:
假设我们有一个策略$\pi$,其对应的Q值函数为$Q^{\pi}$。根据贝尔曼动态规划方程,我们有:
其中\(P(s'|s,a)\)是状态转移概率,由于\(V^{\pi}(s')=\max_{a'}Q^{\pi}(s',a')\),我们可以将$V^{\pi}(s')$替换为$\max_{a'}Q^{\pi}(s',a')$:
如果我们取$\pi$为最优策略$\pi^*$,那么我们得到:
这个方程表明,最优值\(Q^*(s,a)\)可以通过对未来状态的最优Q值的加权和来计算,这就是Q-Learning算法的马尔科夫解。
一只小白鼠在迷宫里面,目的是找到出口,如果他走出了正确的步子,就会给它正反馈(糖),否则给出负反馈(点击),那么,当它走完所有的道路后,无论把它放到哪儿,它都能通过以往的学习找到通往出口最正确的道路。假设迷宫有5间房,如图1所示,这5间房有些房间是想通的,我们分别用0-4进行了标注,其中5代表了出口。
在这个游戏里,我们的目标是能够走出房间,就是到达5的位置,为了能更好的达到这个目标,我们为每一个门设置一个奖励。如果以state为行,action为列,则上图又可转化为如下的reward矩阵:比如如果能立即到达5,那么我们给予100的奖励,5因为也可以到它自己,所以也是给100的奖励;对于其他状态之间如果没法到5的我们不给予奖励,奖励是0了;在Q-learning中,目标是奖励值累加的最大化,所以一旦达到5,它将会一直保持在这儿,如图3所示。
为进一步理解上一节中介绍的Q-learning算法是如何工作的,下面我们一步一步地迭代几个episode。首先取学习系数\(\gamma=0.8\),初始状态为房间1,并将\(Q\)初始化为一个零矩阵。观察矩阵\(R\)的第二行(对应房间1或状态1),它包含两个非负值,即当前状态1的下一步行为有两种可能:转至状态3或转至状态5。随机地,我们选取转至状态5。
想象一下,当我们的agent位于状态5以后,会发生什么事情呢观察矩阵\(R\)的第6行(对应状态5),它对应三个可能的行为:转至状态1,4或5,根据公式(1),我们有
现在状态5变成了当前状态。因为状态5即为目标状态,故一次episode便完成了,至此,小白鼠的“大脑”中的\(Q\)矩阵刷新为
接下来,进行下一次episode的迭代,首先随机地选取一个初始状态,这次我们选取状态3作为初始状态。观察矩阵\(R\)的第四行(对应状态3),它对应三个可能的行为:转至状态1,2或4。随机地,我们选取转至状态1,因此观察矩阵\(R\)的第二行(对应状态1),它对应两个可能的行为:转至状态3或5,根据公式(1),我们有
若我们执行更多的episode迭代,最终将得到一个收敛矩阵(理论上可以证明这个矩阵一定存在),见下图所示。
最终策略:在状态0下,选择动作4作为最优策略;在状态1下,选择动作5作为最优策略;在状态2下,选择动作3作为最优策略;在状态3下,选择动作4作为最优策略;在状态4下,选择动作5作为最优策略;在状态5下,选择动作5作为最优策略。所以从状态2出发的最优路径序列为2-3-4-5。
注意:状态转移矩阵S中的值表示从当前状态(行)执行某个动作(列)后转移到的目标状态。例如,从状态1执行动作1将转移到状态0,执行动作2将转移到状态7,执行动作3将转移到状态1。