在本系列的强化学习介绍(一)中,我们学习了强化学习的基础知识。
Q-Learning是强化学习中基于价值的学习算法。在本文中,我们将了解Q-Learning的详细信息:
假设机器人必须越过迷宫并到达终点。有地雷,机器人每次只能移动一格。如果机器人踏上地雷,机器人就死了。机器人必须在尽可能短的时间内到达终点。
得分/奖励系统如下:
现在的问题是:我们如何训练机器人以最短的路径到达最终目标且不踩地雷?
那么,我们如何解决这个问题呢?
Q表格(Q-Table)只是一个简单查找表的奇特名称,我们计算每个状态行动的最大预期未来奖励。这个表格将指导我们在每个状态采取最佳行动。
每个非边缘区块将有四个动作。当机器人处于这种状态时,它可以向上或向下移动,也可以向左或向右移动。
让我们用Q-表格中对这个环境进行建模。
在Q表格中,列代表动作,行代表状态。
每个Q表格分数是机器人在该状态下采取该行动时将获得的最大预期未来奖励。这是一个迭代过程,因为我们需要在每次迭代时改进Q表格。
但问题是:
为了学习Q表的每个值,我们使用Q-Learning算法。
Q函数(Q-function)使用贝尔曼方程和采用两个输入:状态(s)和动作(a)。
使用上面的函数,我们得到表中单元格的Q值。
迭代开始时,Q表格中的所有值都是零。
这是个更新值的迭代过程。当我们开始探索环境时, Q函数通过不断更新表中的Q值为我们提供越来越好的近似。
现在,让我们了解这种更新是如何进行的。
每个框都是一个步骤,让我们详细了解每个它们。
我们将首先构建一个Q表格。有n列,n =动作数。有m行,m =状态数。我们将值初始化为0。
在我们的机器人示例中,我们有四个动作(a = 4)和五个状态(s = 5)。因此,我们将构建一个四列和五行的表格(事实上状态应该是格子上的位置)。
这些步骤的组合会不确定的时间内完成。这这意味着这个步骤会一直运行,直到我们停止训练(或者训练循环按照代码中的定义停止)。
我们将根据Q表格在状态(s)中选择一个动作(a)。但是,如前所述,最开始时,每个Q值都为0。
因此,现在探索和开发权衡的概念发挥作用(上一篇文所提到的)。
我们将使用一种叫做ε-贪心策略( epsilon greedy strategy)的东西。
一开始,ε率会较高。机器人将探索环境并随机选择动作。这背后的逻辑是机器人对环境一无所知。
随着机器人探索环境,ε率降低,机器人开始开发环境。
在探索过程中,机器人对q值的估计越来越有信心。
对于机器人这个例子来说,有四种操作可供选择:向上,向下,向左和向右。 我们现在开始训练,机器人现在对环境一无所知。所以机器人随机选择了动作。
我们现在可以使用贝尔曼方程更新从起点向右移动一格的Q值。
现在我们采取了行动并观察到了结果和奖励。我们需要更新函数Q(s,a)。
在机器人游戏的情况下,反复迭代评分/奖励结构是:
我们不断重复这一过程,直到学习停止。通过这种方式,Q-表格将会更新。