首页 > 教程攻略 > ai资讯 >图解强化学习 — Q-Learning

图解强化学习 — Q-Learning

来源:互联网 时间:2026-08-06 15:32:23

咱们今天来聊一个强化学习里非常核心的算法——Q-Learning。前面几篇文章,已经把基础概念、贝尔曼方程、无模型算法都过了一遍,现在终于要触及这片“深水区”了。本篇内容主要基于 Ketan Doshi 的博客专栏,同时参考了李宏毅老师的讲稿和《动手学强化学习》中的相关章节,后续还会延伸到强化学习在大语言模型中的应用。目标只有一个:用最简单直白的语言,把 Q-Learning 的原理和魅力讲清楚。

图解强化学习 — Q-Learning

一、回顾及引言

这是强化学习系列的第 6 篇文章。前 5 篇分别介绍了基础概念(两篇)、算法分类与贝尔曼方程、以及无模型算法(两篇)。如果你还没看过,建议先回头补一补,因为今天的内容会频繁用到那些知识。不过别担心,我会尽量让本文自成一体。

  • 图解强化学习——基础概念 1
  • 图解强化学习——基础概念 2
  • 图解强化学习-算法分类及贝尔曼方程
  • 图解强化学习——无模型算法 1
  • 图解强化学习——无模型算法 2

二、Q-Learning算法概述

Q-Learning 是查找表方法中最有趣的一个,也是后续 Deep Q Learning(DQN)的基石。它维护一张 Q 表,这张表的行为状态,列为动作,每个单元格存储对应状态-动作对的估计 Q 值。初始时所有 Q 值均为 0,随着智能体与环境互动并收获反馈,算法会反复改进这些值,直到它们收敛到最优。更新的核心工具就是前面提过的贝尔曼方程。

三、如何构建 Q 表?

咱们用一个简单游戏来演示。想象一个 3x3 的网格:玩家从“Start”方格出发,目标是到达“Goal”方格,到达后获得 5 分奖励。有些方格安全(Reward=0),有些危险(Reward=-10)。玩家在每个方格可以选择上下左右四个方向移动。

这样一来,一共有 9 个状态(每个格子一个),4 个动作,所以 Q 表是 9 行 4 列。初始所有 Q 值都是 0。比如单元格 ((2,2), up),它存储的就是在位置 (2,2) 执行“向上”动作的 Q 值。之后就是在互动过程中不断更新这些值。

四、Q-Learning 算法整体流程

智能体通过学习每个状态-动作对的最优 Q 值来找到最优策略。最优 Q 值(也称最优动作价值函数)代表在给定状态和动作下,按照最优策略能够获得的最大期望总回报。换句话说,它假设智能体在后续每一步都能选到最佳动作,是一个理想标杆。

最初智能体瞎选动作,但通过与环境交互,它会根据获得的奖励逐步调整 Q 值。这个流程和之前文章里讲的无模型方法类似,这里不再重复。Q-Learning 独特的地方在于它的更新方式——它用了一个基于贝尔曼方程的变体公式。

五、Q-Learning 在每个时间步中使用两种不同的动作

咱们通过一个具体步骤来感受一下。算法第 2 步,智能体利用 ε-贪婪策略从当前状态(S1)选一个动作(a1),执行它,然后获得奖励(R1)和下一个状态(S2)。接着第 4 步,算法需要用来自下一个状态的 Q 值来更新当前状态-动作对的 Q 值。

这里出现了 Q-Learning 的一个关键特点:下一个状态有很多可选动作,该用哪个?答案是——选下一个状态中 Q 值最高的那个动作(a4)。请注意,

这个“目标动作”只用于更新当前 Q 值,并不意味着智能体下一步真的会执行它。

随后,算法用更新公式,结合奖励和目标 Q 值,算出当前 Q 值的新值,并写回 Q 表。

简言之,每次更新涉及两个动作:

  • 当前动作

    :实际在环境中执行的当前状态的动作,它的 Q 值会被更新。
  • 目标动作

    :来自下一个状态的最高 Q 值对应的动作,它的 Q 值用来辅助更新当前动作的 Q 值。

这种“双重动作”是 Q-Learning 的标签。听起来有点绕,但咱们接着看下一个时间步就明白了:此时下一个状态变成了当前状态,智能体再次用 ε-贪婪策略选动作。如果它偏向探索,选的动作(a2)可能与之前用来更新 Q 值的那个目标动作(a4)完全不同——它选了 a2。这意味着实际执行的动作和学习时用的目标动作不是同一个,所以这叫“离线策略(off-policy)学习”。

行为策略(beha vior policy)是智能体实际与环境互动时遵循的策略(比如 ε-贪婪),目标策略(target policy)是智能体希望学到的、能最大化回报的最优策略。离线策略指行为策略和目标策略不同;在线策略(on-policy)则是指它们相同。Q-Learning 属于前者。

六、Q表是如何从 0 开始被逐渐填充的?

游戏开始时,智能体对哪个动作好毫无头绪,所以 Q 表全是 0。随后它用 ε-贪婪策略选动作,从环境获取反馈,再用更新公式计算新 Q 值。这个新值就带上了实际观测到的奖励信息。

慢慢地,Q 表里的一方寸开始有了数据。但关键是,这些更新是随机的还是在向更准确的方向靠拢?答案显然是后者——这就是 Q-Learning 能收敛到最优值的奥秘。

七、为何估值会随时间提高其准确性?(第一部分)

乍一想,从任意初始估计出发,每次都拿新估计去更新旧估计,居然能得到更准的结果?这有点反直觉。其实原因在于:

每隔一个时间步,估算值都会根据实际观测结果进行更新,从而变得更精确。

更新公式包含三个项,按权重比例计算。其中两个是估计值(起初不准),但第三个项——获得的奖励——是来自环境的真实数据。正是这个“真”分量,让智能体能基于实际经验来修正自己的猜测。

Q 值通过真实 Reward 进行更新

我们盯住 Q 表里某个特定的单元格(比如状态 S3 和动作 a1),看它如何演变。第一次访问时它的值是 0,更新后基于 R1 有了一个初值。第二次访问时,Q 表里其他单元格也有了些填充,而且即使是同一状态-动作对,每次获得的奖励也可能不同——这反映了环境的动态性。

更关键的是,目标动作(图中用紫色表示)在每次访问中可能不同。我们把所有访问叠在一张图上,会发现:随着多次迭代,奖励的波动会逐渐稳定到它们的期望值,于是 Q 值也跟着趋向稳定。回顾定义:状态-动作值表示从特定状态执行特定动作后,按策略一直走到回合结束所能获得的平均总回报。多次重复后,平均值就是 Q 值。

八、为什么估计值会随时间变得更准确?(第二部分)

奖励项会稳定,但更新公式里的另外两个估计项呢?起初它们很不准,但同样会通过实际观测慢慢修正。我们把目光聚焦在一个回合的最后两个时间步。当到达终止状态时,终止状态没有下一个状态,所以更新公式中的“max”项为 0——终止 Q 值的更新完全依赖实际奖励,不依赖任何估计。这样一来,终止 Q 值本身就非常可靠了。

然后,在后续回合中再次访问终止前的状态时,更新公式里的“max”项就得用这个已经较准的终止 Q 值。这就像是把精准度向上一时间步“回流”。如此反复,沿着路径从后往前,每个 Q 值都逐渐被实际数据“浸润”,准确性一路提升。

随着越来越多回合进行,Q表估计变得越来越精确

迭代越多,更精确的 Q 值就越远地传播到路径前方。每个单元格经过越来越多的更新,最终逼近最优。

Q值收敛到最优值

Q 值变得更精确,但我们真正需要的是最优值。怎么知道正在接近它?别忘了,Q-Learning 隐式地使用 ε-贪婪策略来计算 Q 值。这种策略鼓励探索——探索的状态-动作对越多,就越有可能尝试过所有可能选项,从而找到真正的最优 Q 值。这就是 ε-贪婪策略最终能找到最优解的两个理由(虽然这里只是直观解释,但数学上严格证明是成立的)。

每迭代一次,Q 值就改善一点。当你运行足够多次,评估了所有可能性,再也找不到更好的 Q 值了,那就收敛了。

总结:尝试用最简单的语言概括 Q-Learning

自己概括的:

  1. 离线策略:既能保证充分探索,又能收敛到最优 Q 值。
  2. 直观理解收敛:以最后一个时间步和它前一个时间步为例,每次迭代到最后一步,都是完全基于实际奖励更新;前一步在更新时,也逐渐吸收了实际奖励的可靠信息。这种“回流”最终遍布整个路径。

GPT4.0 概括的:

(此处保留 GPT4.0 的概括内容,但原文中没有给出具体文本,只有空段落,所以按原文处理)