政安晨:【AI认知速成】(一)—— 初步理解Q-learning

慈云数据 2024-03-25 技术支持 57 0

咱们这篇文章将要介绍的AI模型,遍及机器人、自动驾驶汽车、游戏中的NPC等等。

Q-Learning是一种强化学习算法,用于解决动态环境下的决策问题。在Q-Learning中,有一个智能体(agent)和一个环境(environment)。智能体通过与环境的交互来学习最优策略,以最大化累计奖励。

Q-Learning算法的核心是一个Q表(Q-table),它是一个状态-动作对的映射表,用于存储每个状态下每个动作的价值。在开始时,Q表被初始化为0。智能体根据当前状态选择一个动作,并通过与环境交互获取奖励和下一个状态。然后,智能体使用Q表更新当前状态-动作对的Q值,以使其更接近最优值。

更新Q值的公式为:Q(s, a) = Q(s, a) + α * (r + γ * maxQ(s', a') - Q(s, a))

其中,Q(s, a)是当前状态s下选择动作a的Q值,α是学习率,r是当前状态下选择动作a后获得的奖励,γ是折扣因子,s'是下一个状态,a'是下一个状态下的最优动作。

通过反复交互和更新Q表,智能体逐渐学习到最优策略,即选择每个状态下具有最大Q值的动作。最终,Q表中的值收敛到最优值,智能体能够根据Q表选择最优动作,实现最大化累计奖励的目标。

Q-Learning算法是一种无模型强化学习方法,只需要通过与环境的交互来更新Q值,无需事先了解环境的具体模型。这使得Q-Learning算法具有广泛的应用价值,可以解决许多实际问题,如机器人路径规划、游戏策略等。


政安晨的个人主页:政安晨

欢迎 👍点赞✍评论⭐收藏

收录专栏: 政安晨的人工智能笔记

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!



Q学习的要点:

1.Q学习是一种强化学习模型。

2.Q学习将输入的状态转换为输出的行为。

3.Q学习在由状态(输入)、行为(输出)和奖励组成的预定义环境中进行。

4.Q学习是通过马尔可夫决策过程建模的。

5.Q学习也拥有训练模式和推断模式,在训练模式中学得的参数称为Q值。

现在,我们可以再添加两个基础知识,这一次是Q学习所特有的:

1.仅有数量有限的状态(可能的输入情况是有限的)。

2.仅有数量有限的行为(只能执行一定种类的行为)。

就这些!目前记住这么多就够了;现在我们可以真正深入学习Q学习了,你会发现它并不那么困难,反而非常直观易懂。

接下来咱们用一个示例来好好讲一下它。

迷宫

你将要学习Q学习如何在迷宫中大显身手。让我们先把迷宫画出来,如下图所示:

这肯定是你所见过最简单的迷宫。

但这是有意为之的,这样你才能将注意力集中在AI如何施展它的魔力上。

如果你在本章被搞得晕头转向是因为迷宫而不是因为AI公式,就得不偿失了!

因此,定义一个简单明了的迷宫尤其重要,这样你可以直观地看到AI模型从开始探索到找到出路的全过程。

说到开始和出路,请想象在这个迷宫中有一个小机器人,从点E(入口)出发。它的目标是找到通往G(目标)的最短路径。我们人类可以很快解决这个问题,但这仅仅是因为我们的迷宫太过简单。你将要构建的是一个无论迷宫有多复杂,都可以从起点到达终点的AI模型。让我们开始吧!

第一步

先给你出一道题目:我们的第一步应该是什么

下面是三个可能的答案:

1.首先写一些数学方程式。

2.首先构建环境。

3.尝试基于某种AI模型的采样。

正确的答案是——首先构建环境。

这很容易,但我想通过问答的方式让你牢牢记住:这永远是构建AI模型的第一步。

在清楚地理解了这个问题后,我再强调一次,构建AI解决方案的第一步永远是构建环境。

但这就引出了另一个问题:在构建该环境时将采取哪些具体的步骤呢?

·首先,应该定义状态(AI模型的输入)。

·其次,应该定义可以执行的行为(AI模型的输出)。

·最后,应该定义获得的奖励。记住,奖励是AI模型在特定状态下执行行为之后得到的。

既然我们已具备了上述基础知识,就可以着手定义环境了。

构建环境

我们需要定义状态、行为和奖励来构建环境。

状态

让我们先从状态开始。你认为本案例中的状态是什么?别忘了状态是AI模型的输入。

并且它们应该包含足够多的信息,以便AI模型能够采取行动引导小机器人到达最终目标(点E)。

在这个模型中,其实没有太多选择。

AI模型在特定时间或迭代中的状态就是AI模型当时所处的位置。换句话说,状态是在特定时间点上表示AI模型所处位置的从A到L的字母。

你可能已经猜到,环境构建完成后,我们需要定义指导AI模型运行的数学公式。

为了之后能够更便捷地这样做,我们可以将之前代表位置的字母编码成互不相同的数字。

字母和数字的对应关系如下图所示。

(位置对应状态的映射)

这里我们遵循了Q学习的第一个基础法则:状态的种类是有限的。

接下来将我们的目光转移到行为上。

行为

行为就是能让AI模型从一个位置移动到下一个位置的可能动作。

例如,假设AI模型位于位置J,AI模型可能执行的行为是移动到位置I、F或K。就像之前说过的,由于我们之后要和数学方程式打交道,你也可以像前文对状态进行数字编码那样对这些行为进行数字编码。

继续前面的例子,AI模型在特定时间位于位置J,根据下图所示的映射关系,AI模型可执行的潜在行为有5、8和10:根据前文给出的对应关系,5对应位置F,8对应位置I,而10对应位置K。

因此,潜在可执行的行为可以用可到达的不同位置来表示:

潜在行为={0,1,2,3,4,5,6,7,8,9,10,11}

再次注意,我们遵循了Q学习的第二个基础法则:行为的种类有限的。

显然,在特定位置上,AI可能有部分行为无法执行。

同样以之前的案例为例,如果AI模型位于位置J,那么它可执行的行为仅为5、8和10,别的行为都不可能执行。你可以通过对不可执行的行为分配为0的奖励并对可执行的行为分配为1的奖励来确保执行允许的行为。于是我们来到了奖励环节。

奖励

环境的构建就要完成了,但还有最后一件重要的事情要做,即定义一个奖励系统。

更具体地说,你必须定义一个奖励函数R,该函数将状态s和行为a作为输入,并返回AI模型在该状态和行为下所获得的数值奖励r:

那么怎样为我们的案例创建这样的函数呢?对于这个案例而言,这很简单。由于状态(从0到11的数值)和行为(也是从0到11的数值)都是离散的、数量有限的,因此构建奖励函数R的最佳方法就是构造一个矩阵。

奖励函数是由12行和12列组成的矩阵,其中行对应状态,列对应行为。这样,在上述函数中,s是矩阵的行索引,a是矩阵的列索引,r是矩阵中索引为(s,a)的单元的值。

要构建这一奖励矩阵,要做的是对全部12个位置中的每个位置进行以下操作:为机器人无法从该位置执行的行为赋予为0的奖励,为可以执行的行为赋予为1的奖励。对12个位置中的每个位置执行此操作,就会得出奖励矩阵。让我们从第一个位置(位置A)开始逐步构建奖励矩阵吧。

当在位置A时,机器人只能进入位置B。由于位置A的索引为0(矩阵的第一行),位置B的索引为1(矩阵的第二列),因此应该在奖励矩阵第一行第二列的地方填写1,在该行所有其他列的位置填写0,如下图所示。(奖励矩阵:第一步)

(奖励矩阵:第二步)

C(索引2)仅连接到B和G(索引1和6),因此奖励矩阵的第三行如下图所示。

(第三步)

对其他位置也使用这样的方法,最终得到的奖励矩阵如下图所示。

(第四步)

这就是初始化奖励矩阵的全过程。

但是等一下,奖励的设置其实还没结束,你还差至关重要的一步。让我问你另一个问题,一个终极问题,它将检验你的直觉是否已经形成:

你怎样才能让AI模型知道,它必须去那个最重要的终点位置G呢?

这很容易,只需通过奖励机制就可以做到。你得牢记一点,在强化学习中,奖励是所有行为的指挥棒。如果你对位置G赋予很高的奖励(例如1000),那么AI模型就会自动尝试去获取该项奖励,仅仅是因为这一位置比其他位置的奖励大。

简而言之,AI模型总是在寻求最高的奖励,一定要理解并牢记强化学习这一基本特点。正是因为这样,我们才可以仅通过赋予位置G比别处更高的奖励就使AI模型向这一点进发。

现在,人为地将高奖励(1000)放入与位置G对应的单元中,因为位置G是我们希望AI模型到达的目标位置。由于位置G的索引为6,我们在第七行第七列的单元格上设置了1000的奖励。因此,最终的奖励矩阵如下图所示。

(第五步)

奖励的定义终于完成了!这是以奖励矩阵的形式实现的。理解这一点很重要,因为这其实是进行Q学习时定义奖励机制的常用手段。

通过定义状态、行为和奖励,你完成了对环境的构建。这意味着你准备好进入下一步了。接下来,你将构建AI模型本身,即会在刚才所定义的环境中施展魔法的AI。

构建AI模型

既然你已经构建了环境,并且在该环境中明确定义了相关的奖励机制,那么是时候构建AI模型了。我希望你已经做好了学习一点点数学知识的思想准备。

我将这一步细分为几个更小的子步骤,以便引导你循序渐进地学习Q学习模型。为此,我会按照以下顺序介绍Q学习的三个核心概念:

1.Q值

2.时序差分

3.贝尔曼方程

让我们从学习Q值入手。

Q值

在开始学习具体知识之前,我需要先解释一下Q值(Q-value)的概念。

它的运作方式如下:

对于每对状态和行为(s,a),我们将关联一个数值Q(s,a):

Q(s,a)是“在状态s下表现出的行为a的Q值”。

我知道此时此刻你可能在脑海中这样问:这个Q值是什么意思?它代表什么?我又要怎么计算它呢?

这些也是我初学Q学习算法时脑海中浮现的一些问题。

Q值度量的是状态和行为的组合(st,at)对应的“惊喜”或“沮丧”的积累。

在时序差分较高所对应的“惊喜”情况下,AI的能力会被增强,而在时序差分较低所对应的“沮丧”情况下,AI模型的能力会被削弱。

我们想要AI模型学习的是将给它带来最大“惊喜”的Q值,而这正是贝尔曼方程通过每次迭代来更新Q值所实现的。

你已经学到了很多新知识,并且通过梳理它们之间的关联对Q学习建立了直觉认知,但这还不足以真正扎实地掌握Q学习。

接下来我们回过头看这个问题,从头到尾把Q学习的流程梳理一遍,这样你就能彻底搞懂它。

Q学习的完整流程

让我们总结一下整个Q学习流程的不同步骤:

简单地说,整个流程的唯一目的就是通过一定次数的迭代对Q值进行更新,直到它不再被更新为止。最后无法再通过迭代更新Q值的状态称为收敛(convergence)。

迭代次数取决于问题的复杂性。对于当前的问题,1000次就足够了,但是对于更复杂的问题,你可能需要考虑更高的数字,例如10000次。

简而言之,Q学习流程就是AI模型的训练流程,之所以称之为Q学习,是因为Q值是这一流程中的主要学习对象

在训练流程之后,我将讲解推断的部分(只和预测相关)会发生什么。当然,完整的Q学习流程始于训练模式。

训练模式

初始化(第一次迭代)

对于所有状态s和行为a的组合,将其对应的Q值都初始化为0。

后续的迭代

对于t≥1的每次迭代,重复下列步骤一定次数(该次数由开发人员,也就是你来决定)。

1.从可能的状态中随机选择一个状态st。

2.基于状态st,随机执行一个行为at,从而进入下一个可能的状态,并且满足R(st,at)>0。

3.到达下一个状态st+1,并且获得奖励R(st,at)。

4.计算时序差分TDt(st,at):

5.使用贝尔曼方程更新Q值:

当此过程结束时,将获得一个不再更新,即已收敛的Q值。这意味着一件事,即你已准备好进入推断模式来破解迷宫了。

推断模式

训练已完成,现在开始进行推断。在此提醒你一下,推断应该发生在模型完全训练完毕之后,这样你才可以用模型进行预测。在我们的迷宫示例中,模型要预测的是将机器人从起点(位置E)带到终点(位置G)所需执行的行为。

那么问题来了:你要如何使用学得的Q值来执行这些行为呢?

好消息是这对于Q学习而言非常简单。当处于特定状态st时,你只需执行该状态下能将Q值最大化的行为at:

仅此而已——通过在每个位置(每个状态)执行这一行为,你可以沿着最短的路径到达最终目的地。咱们以后有机会实现这些,并且见证它的成果。

结论

在这篇文章中,我们学习了Q学习模型,该模型适用于输入状态数量有限同时潜在发生行为种类有限的环境。

在Q学习中,AI模型通过不断迭代的方式学习Q值,因此(状态,动作)组合对应的Q值越高,AI模型就越接近最高奖励。

在每次迭代中,模型通过贝尔曼方程更新Q值。

贝尔曼方程仅仅是将当前迭代的时序差分乘上折扣因子后与上个迭代的Q值相加罢了。


现在,聪明的您已经初步了解Q学习这个极具前途的算法模型,期待未来。

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon