资讯动态

强化学习入门:智能体、环境与核心概念全解析

发布时间:2026/10/13 12:31:55 来源:尧图企业网站定制
1. 从“试错”说起为什么强化学习值得你花时间搞懂如果你之前接触过监督学习脑子里可能已经形成了一套固定套路准备标注数据、设计损失函数、反向传播调参、在验证集上看准确率。这套流程跑通之后你会觉得机器学习好像也就那么回事。但当你第一次翻开强化学习的资料看到“智能体”“环境”“奖励”“策略”“价值函数”这一堆术语扑面而来的时候大概率会跟我当初一样脑子里只有一个想法这些东西到底在说什么我刚开始学强化学习那会儿最大的困惑不是数学公式看不懂而是根本不明白它跟监督学习到底差在哪里。后来踩了不少坑才慢慢想通监督学习是有人告诉你正确答案你照着学就行而强化学习更像是一个婴儿在学走路没人告诉你先迈左脚还是右脚你只能自己试摔了知道疼走稳了得到夸奖慢慢就学会了。这个“试错”的过程就是强化学习最核心的思想。这篇内容是我自己对强化学习基本概念的一次系统梳理。我会把智能体、环境、状态、动作、奖励、策略、价值函数、模型这几个核心概念一个一个拆开讲清楚不光告诉你它们是什么还会解释它们之间怎么配合、为什么这样设计、初学者最容易在哪些地方产生误解。如果你刚开始接触强化学习或者学了一段时间但总觉得概念之间串不起来那这篇内容应该能帮你把地基打牢。2. 强化学习的核心框架智能体与环境的交互循环2.1 智能体和环境到底是什么关系强化学习最基础的图景就是两个角色在互动智能体和环境。你可以把智能体想象成一个在玩游戏的玩家环境就是游戏本身。玩家看到屏幕上的画面决定按哪个键游戏根据按键更新画面并给出分数。这个循环不断重复就是强化学习的全部故事。但这里有个很容易被忽略的细节智能体和环境的边界到底在哪里很多初学者会觉得“我不就是智能体吗”但在实际建模的时候这个边界划在哪里会直接影响问题的难度。举个例子如果你要训练一个机械臂抓取物体智能体是控制机械臂关节电机的那个程序环境则包括机械臂的物理结构、被抓的物体、重力、摩擦力等一切外部因素。智能体只能通过发送动作指令来影响环境它无法直接改变环境内部的物理规律。这个边界划分有一个很实用的判断标准智能体能控制的归智能体智能体不能控制的归环境。这个标准看起来简单但在实际项目中非常管用。我见过不少初学者把环境的一部分错误地划到了智能体这边结果导致状态空间设计混乱训练怎么都收敛不了。2.2 交互循环的时间步拆解智能体和环境的交互是按时间步来推进的。在每一个时间步 t会发生这样一串事情智能体观察到当前的状态 S_t智能体根据某个策略选择一个动作 A_t环境接收到动作 A_t 后转移到新的状态 S_{t1}环境同时给出一个奖励信号 R_{t1}智能体根据新的状态和奖励更新自己的策略或价值估计进入下一个时间步重复以上过程这个循环看起来简单但里面藏着强化学习最本质的困难延迟奖励。你在第 1 步做的动作可能要到第 100 步才知道到底对不对。这就像下围棋开局第一手棋的好坏可能要等到整盘棋下完才能评判。监督学习里每个样本都有即时标签但强化学习里奖励往往是稀疏的、延迟的这就是为什么强化学习比监督学习难得多。注意时间步的编号方式在不同教材里可能不一样。有的把奖励记为 R_t 而不是 R_{t1}这只是记号习惯问题不影响理解。关键是搞清楚“动作导致状态转移和奖励”这个因果关系。2.3 回合制任务与连续任务的区分强化学习的任务可以分成两类回合制任务和连续任务。回合制任务有一个明确的终止状态比如一局棋下完、一个机器人走到终点、一局游戏分出胜负。一个回合从初始状态开始到终止状态结束然后环境重置开始下一个回合。连续任务则没有终止状态会一直运行下去比如持续控制一个化工过程的温度、维持一个服务器的负载均衡。这个区分为什么重要因为它影响你如何定义回报。回合制任务里回报就是从当前时刻到回合结束的累计奖励连续任务里没有“结束”这个概念所以需要引入折扣因子来让远处的奖励权重逐渐衰减否则回报可能无穷大。初学者经常在这里犯迷糊把回合制的公式直接套到连续任务上结果怎么算都不对。3. 状态、动作与奖励建模时最容易踩坑的三个概念3.1 状态设计什么该放进状态里状态是智能体做决策的依据。状态设计得好不好直接决定了学习能不能成功。我踩过最大的坑就是状态信息给少了智能体根本没法做出正确决策。比如做一个简单的倒立摆控制如果你只给智能体角度信息不给角速度信息它就不知道摆是在往左倒还是往右倒自然学不会平衡。但状态也不是越多越好。状态维度太高会带来两个问题一是计算量爆炸二是维度灾难导致泛化困难。一个实用的原则是状态应该包含做决策所需的所有信息但不包含冗余信息。更严格地说状态应该满足马尔可夫性质即当前状态包含了预测未来所需的所有历史信息。如果状态不满足马尔可夫性质智能体就会“失忆”学出来的策略时好时坏。在实际项目中我通常会用这样一个检查清单来判断状态设计是否合理当前状态是否足以决定下一步动作如果不够缺了什么状态里有没有跟决策无关的噪声有的话能不能去掉状态是否满足马尔可夫性质如果不满足能不能通过堆叠历史帧来近似3.2 动作空间离散与连续的抉择动作空间分为离散和连续两种。离散动作空间就像选择题智能体从有限个选项里挑一个比如上下左右四个方向。连续动作空间就像填空题智能体要输出一个实数向量比如机械臂每个关节的力矩值。这个选择会直接影响你后续能用什么算法。离散动作空间可以用基于价值的方法比如 Q-learning 及其各种变体因为你可以对每个动作算一个 Q 值然后取最大的。但连续动作空间没法直接对所有动作取最大因为动作是无限多的这时候就得用基于策略的方法比如策略梯度或者用 Actor-Critic 架构。我刚开始学的时候没在意这个区别拿着 Q-learning 的代码去跑连续控制的实验结果卡了很久才发现根本跑不通。后来才明白算法和动作空间类型是绑定的选算法之前先看清楚动作空间是离散还是连续。3.3 奖励函数最容易被低估的设计环节奖励函数是强化学习里最像“艺术”的部分。它告诉智能体什么是好的、什么是坏的但怎么设计这个信号里面门道很多。一个常见的误区是奖励给得太稀疏智能体要探索很久才能偶然得到一次奖励学习效率极低。另一个极端是奖励给得太密集智能体可能学会一些投机取巧的行为拿到高分但并没有完成你真正想要的任务。举个经典的例子训练一个机器人走路如果你只给“到达终点”的奖励机器人可能学会在地上打滚过去因为打滚比走路更容易到达终点。这就是所谓的奖励黑客问题。解决办法通常是在奖励函数里加入一些形状项比如鼓励保持直立、鼓励迈步但这些形状项的设计需要非常小心加多了会限制智能体的探索加少了又起不到引导作用。提示设计奖励函数时先问自己一个问题——如果智能体找到了最大化这个奖励的极端策略这个策略是不是我真正想要的如果不是说明奖励函数有漏洞。4. 策略与价值函数智能体的“大脑”如何运作4.1 策略从状态到动作的映射策略是智能体的决策规则它定义了在每个状态下应该选择什么动作。策略可以是确定性的即在状态 s 下永远选择同一个动作也可以是随机性的即在状态 s 下按照某个概率分布选择动作。随机策略在探索阶段非常重要因为如果策略是确定性的智能体就永远只会走同一条路没法发现更好的选择。策略的表示方式也有两种一种是表格形式每个状态存一个动作另一种是函数形式用一个神经网络来拟合状态到动作的映射。表格形式只适合状态和动作都很少的场景一旦状态空间变大表格就存不下了必须用函数近似。现在深度强化学习里基本都用神经网络来表示策略这也是“深度”二字的由来。4.2 价值函数评估状态和动作的好坏价值函数是强化学习里最核心的数学工具之一。它回答的问题是在当前策略下从某个状态出发未来能拿到多少累计奖励这个“累计奖励”通常用回报来表示就是从当前时刻开始往后所有奖励的加权和越远的奖励权重越小这个权重就是折扣因子。状态价值函数 V(s) 衡量的是状态 s 的好坏动作价值函数 Q(s,a) 衡量的是在状态 s 下选择动作 a 的好坏。两者之间的关系是V(s) 等于在状态 s 下按照策略选择动作时Q(s,a) 的期望值。这个关系看起来简单但它是很多强化学习算法的基石。我学这部分的时候最大的困惑是既然有了策略为什么还要价值函数后来想明白了价值函数是用来改进策略的。如果你知道每个动作的 Q 值你就可以把策略改成“永远选 Q 值最大的动作”这样策略就变好了。这就是策略迭代的基本思路先评估当前策略的价值然后根据价值改进策略反复迭代直到收敛。4.3 贝尔曼方程把长期问题拆成短期问题贝尔曼方程是强化学习里最重要的数学工具没有之一。它的核心思想是递归一个状态的价值等于即时奖励加上下一个状态价值的折扣。用公式写出来就是V(s) E[R γV(S)]这个公式看起来简单但它把“从当前时刻到无穷远的累计奖励”这个看似无法计算的问题转化成了一个可以迭代求解的递归问题。你可以把它理解成“今天的价值等于今天的收益加上明天的价值打折”这样一层一层往后推就能把长期回报算出来。贝尔曼方程有两种形式贝尔曼期望方程和贝尔曼最优方程。前者用于策略评估即在给定策略下计算价值后者用于策略改进即找到最优价值函数。这两个方程是理解价值迭代和策略迭代算法的关键也是后面学 Q-learning、DQN 等算法的基础。5. 模型、预测与控制强化学习问题的分类方式5.1 有模型与无模型知不知道环境规则强化学习算法可以分成有模型和无模型两大类。有模型的方法假设智能体知道环境的转移概率和奖励函数也就是说它知道“在状态 s 下做动作 a有多大概率转到状态 s能拿到多少奖励”。有了这个模型智能体就可以在“脑子里”模拟各种可能的未来然后选择最好的动作不需要真的在环境里试。无模型的方法则假设智能体不知道环境规则只能通过实际交互来学习。它又分成两种一种是学习价值函数比如 Q-learning另一种是直接学习策略比如策略梯度。无模型方法更通用因为很多实际问题的环境规则根本写不出来但它的样本效率通常更低需要更多的交互数据。我个人的经验是如果你能拿到环境的精确模型那用有模型的方法通常更高效但大多数情况下你拿不到所以无模型方法是主流。不过现在也有一些工作尝试从数据中学习一个环境模型然后用这个模型来加速无模型方法的学习这属于模型基强化学习的范畴。5.2 预测与控制两个不同层次的任务预测和控制是强化学习里两个不同层次的任务。预测任务是给定一个策略评估这个策略有多好也就是计算状态价值函数或动作价值函数。控制任务则是找到最优策略也就是在所有可能的策略里挑一个最好的。这两个任务的关系是递进的你先能评估一个策略的好坏才能去改进它最终找到最优策略。策略迭代算法就是交替做这两件事先做策略评估再做策略改进反复迭代直到策略不再变化。理解这个递进关系对后面学各种算法非常有帮助因为你会发现很多算法本质上都是在预测和控制之间做权衡。5.3 探索与利用强化学习永恒的矛盾探索与利用的权衡是强化学习里最核心的难题之一。利用是指选择当前已知最好的动作探索是指尝试一些不确定的动作可能会发现更好的选择。如果你一直利用可能会卡在局部最优如果你一直探索又可能浪费大量时间在明显不好的动作上。这个问题没有完美的解法只有各种权衡策略。最常见的是 ε-贪婪策略以 ε 的概率随机探索以 1-ε 的概率选择当前最优动作。ε 通常从一个较大的值开始随着学习过程逐渐减小这样前期多探索后期多利用。还有玻尔兹曼探索、上置信界等方法各有各的适用场景。我在实际项目里的体会是探索策略的选择对最终效果影响巨大。同样的算法换一个探索策略可能一个能收敛一个完全跑不起来。所以不要小看这个环节它值得你花时间调。6. 折扣因子与回报那些公式背后的直觉6.1 回报的定义与计算回报是从当前时刻开始往后所有奖励的加权和。如果任务有终止状态回报就是从当前时刻到终止时刻的奖励总和如果没有终止状态就需要引入折扣因子来保证回报有限。折扣因子 γ 通常取 0 到 1 之间的一个数越接近 1 表示智能体越有远见越接近 0 表示智能体越短视。这个折扣因子不只是数学上的需要它也有实际意义。在金融领域今天的 100 块钱比明年的 100 块钱更值钱因为你可以拿今天的钱去投资。在强化学习里折扣因子反映了我们对未来奖励的不确定性——未来的事情谁也说不准所以打个折更合理。6.2 折扣因子的选择对策略的影响折扣因子的选择会直接影响智能体学到的策略。如果 γ 设得太小智能体只看眼前利益可能会学会一些短视的行为。如果 γ 设得太大智能体过于看重长远利益学习过程可能会不稳定因为远处的奖励信号经过多次折扣后变得非常微弱梯度传播容易出问题。我通常的做法是如果任务有明显的回合结构γ 可以设得大一些比如 0.99如果任务需要快速响应γ 可以设得小一些比如 0.9。当然这只是一个经验值具体还要看任务的奖励结构和时间尺度。有一个实用的技巧是先观察一下一个回合大概有多少步如果步数很多γ 就要设得接近 1否则回报根本传不到前面的状态。6.3 回报与价值函数的关系回报是实际观测到的累计奖励价值函数是回报的期望值。这个区别很重要回报是一个随机变量每次试验可能都不一样价值函数是一个确定性的数值表示平均意义上的好坏。强化学习算法通常通过采样回报来估计价值函数然后用价值函数来改进策略。这个“采样-估计-改进”的循环是几乎所有强化学习算法的共同结构。理解了这个结构你再看 Q-learning、SARSA、策略梯度这些算法就会发现它们只是在“怎么估计”和“怎么改进”这两个环节上有所不同。7. 初学强化学习时我踩过的几个坑7.1 把强化学习当监督学习来学我刚开始学的时候习惯性地想找“标准答案”看到 Q 值更新公式就想背下来看到策略梯度推导就想记住每一步。后来发现这样学根本学不透因为强化学习的公式背后都有很强的直觉不理解直觉只背公式换个场景就不会用了。正确的学法应该是先理解每个概念解决什么问题再去看数学形式。比如贝尔曼方程你先理解“今天的价值等于今天的收益加明天的价值打折”这个直觉公式自然就记住了。反过来先背公式再找直觉效率会低很多。7.2 忽略环境建模的重要性我有一段时间特别迷恋算法本身觉得只要算法够先进什么问题都能解决。后来做了一个项目才发现环境建模的质量对最终效果的影响可能比算法选择还大。状态设计不合理、奖励函数有漏洞、动作空间定义不清晰这些问题不是换个算法就能解决的。所以我现在做强化学习项目第一步永远是花时间把环境建模搞清楚而不是急着选算法。环境建模对了简单的算法也能跑出好结果环境建模错了再先进的算法也是白搭。7.3 低估探索策略的难度探索与利用的权衡说起来简单做起来非常难。我在一个稀疏奖励的任务上卡了很久智能体怎么都找不到奖励后来调整了探索策略才解决。这件事给我的教训是不要以为探索就是加个随机噪声那么简单在复杂任务里如何高效探索本身就是一个核心研究问题。一个实用的建议是如果你的任务奖励很稀疏可以考虑用内在激励的方法比如给智能体一些探索奖励鼓励它去访问新的状态。或者用课程学习的方法先从简单的任务开始逐步增加难度让智能体在探索过程中不断获得正反馈。7.4 忽视算法的样本效率深度强化学习算法通常需要大量的交互数据才能收敛有些任务需要几百万甚至上亿步。如果你在真实环境里训练这个成本可能高得无法接受。所以做项目之前一定要评估样本效率如果样本效率不够就要考虑用模拟环境、并行采样、经验回放等技巧来加速。我见过不少初学者在真实机器人上直接跑强化学习算法结果机器人磨损严重数据还没收够。正确的做法是先在模拟环境里把算法调好再迁移到真实环境并且用一些迁移学习的技巧来减少真实环境的数据需求。8. 把这些概念串起来一个完整的思考框架学完这些基本概念之后我建议你试着用它们来分析一个具体的强化学习问题。比如你要训练一个智能体玩一个简单的游戏你可以这样思考首先智能体是什么环境是什么边界划在哪里然后状态怎么设计动作空间是离散还是连续奖励函数怎么定义接着用什么策略来表示智能体的决策价值函数怎么估计用不用折扣因子折扣因子取多少最后用有模型还是无模型的方法怎么平衡探索和利用这个思考框架看起来简单但它能帮你把零散的概念串成一个整体。我每次开始一个新项目都会按这个框架过一遍确保每个环节都想清楚了再动手写代码。这样做的好处是出了问题你知道该从哪里排查而不是盲目地调参。强化学习的基本概念就梳理到这里。这些概念是后面所有算法的基础值得反复琢磨。我在学习过程中最大的体会是不要急着往前赶把基本概念吃透了后面的算法学起来会快很多。反过来如果基本概念没搞清楚后面学再多算法也只是囫囵吞枣遇到实际问题还是不知道从何下手。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑