强化学习(RL)

1 介绍

强化学习是机器学习的一个核心分支领域。它关注的是智能体如何在一系列决策中,通过与环境进行交互并根据获得的奖励(或惩罚)信号来学习最优的行为策略,从而实现长期累积回报的最大化

强化学习是一种让智能体通过与环境的试错交互,根据获得的奖励信号学习如何做出最优决策的机器学习范式。其核心在于交互、奖励驱动、探索与利用的权衡以及优化长期累积回报。虽然面临奖励设计、探索效率、样本效率等挑战,但它在游戏、机器人、自动驾驶等需要复杂顺序决策的领域展现了巨大的潜力,是当前人工智能研究最活跃和最具前景的方向之一。Actor-Critic类方法代表了当前的主流技术路线。理解强化学习的框架和核心概念是掌握现代人工智能技术的重要组成部分。

2 相关概念

智能体:学习者和决策者。它感知环境,执行动作,并接收奖励。

环境:智能体所处的外部世界,对智能体的动作做出响应,改变状态,并产生奖励信号。环境可以是真实的(如机器人、股市),也可以是模拟的(如游戏、仿真器)。

状态:描述环境在特定时刻的情况。状态应包含足够的信息供智能体做出决策。状态空间可以是离散的(有限个状态)或连续的(无限个状态)。

动作:智能体在某个状态下可以执行的操作。动作空间也可以是离散的(如上下左右移动)或连续的(如方向盘转动角度、油门力度)。

奖励:环境在智能体执行一个动作后,提供给智能体的即时标量反馈信号。它告诉智能体当前动作的“好坏”。奖励是强化学习的核心驱动力和唯一的学习信号

策略:智能体的行为准则。它是一个映射函数,告诉智能体在某个状态下应该选择哪个(或哪些)动作。策略可以是确定性的(状态->具体动作),也可以是随机性的(状态->动作的概率分布)。

值函数

    状态值函数V(s):衡量从状态s开始,遵循特定策略π所能获得的期望累积未来奖励。它评估一个状态的长期价值。

    动作值函数Q(s,a):衡量在状态s下执行动作a后,再遵循特定策略π所能获得的期望累积未来奖励。它评估在特定状态下执行某个特定动作的长期价值。

模型:智能体对环境动态规律的理解。包括:

状态转移概率:在状态s执行动作a后,环境转移到状态s' 的概率。

奖励函数:在状态s执行动作a并转移到状态s'后,预期获得的即时奖励。

3 交互循环

环境会给智能体施加影响(输入),智能体会做出动作(输出),环境更新状态发出新的影响,同时给出奖励信号。我们的目标是获得奖励的总和最大,学习一个最优策略,使得从初始状态开始,智能体获得的期望累积折扣奖励最大化

交互循环

智能体在离散的时间步 t 与环境交互:

感知当前状态 s_t。

根据当前策略π选择一个动作a_t。

执行动作a_t。

环境接收到动作,转移到新状态:s_{t+1}。

环境给出一个奖励信号r_{t+1}。

智能体接收新状态s_{t+1}和奖励r_{t+1} 。

循环继续。

4 例子(Spaceinvader)

在这个小游戏中,我们要杀死敌人获得分数,目标是获得最高分。当我们失败或杀死所有敌人后游戏结束。

这里智能体将会代替我们去玩游戏,去获取最高分。

5 强化学习的步骤

5.1 有未知数的function(function with unknown)

需要设计一个policy network(策略网络)来作为智能体(actor),策略网络的本质是一个神经网络(如MLP,CNN)。

它的输入:我们的游戏。(机器观测结果以向量或矩阵形式表示)

它的输出:每一个可以采取的行为。(每个动作对应输出层中的一个神经元)

这样的事情和CNN的分类问题没什么区别(Classification Task),输出每个行为的概率, 这里用的是(sample based on scores)基于分数采样而不是直接取最高概率作为实际操作,在面对同一个environment要保证一定的随机性,不过具体选择哪种方式还是根据实际情况。

5.2 Loss

比如智能体做出右移的动作得到0分,再开火杀死敌人得到5分。之后根据更新后的环境采取新的行为,反复执行下去,直到执行某个行为(某个条件)以后游戏结束。

整场游戏叫做“episode”;每个行动的得分叫做“reward”;总分为“Total reward”,有时我们也称为“return”;Loss就是负的return

“return”是我们想要最大化的部分,所以Loss越小,“return”越大

5.3 Opotimization

注:“Env”指环境;“S1”是指环境的输入;“Actor”指智能体;“a”指行动。

环境的输入和智能体的行为构成轨迹“Trajectory”。

训练过程中,reward受环境和行为影响,并且由于环境和智能体行为的随机性,reward每次不一定相同,是随机的。我们的训练主要是训练网络中的参数,所有我们不能使用常规的方法去训练参数。

6 如何操控智能体的输出

就像这里,当环境是s时,我们让智能体优先做出特定的行为。

如图:当智能体输入是环境s时,智能体优先做出向左的行为。

6.1 定义动作空间(Action Space)

智能体的可选动作(如示例中的 左、右、开火)需明确定义。

目标:让智能体在特定状态(Observation S)下选择期望动作 a,或避免选择 a。

6.2 通过奖励函数引导行为

正向激励(执行 a^)
当智能体在状态 S 下执行目标动作 a^ 时,给予正奖励

L=+e(e>0)

例如:执行 a^ 后奖励 +1,鼓励该行为。

负向惩罚(禁止a^)
若需禁止智能体执行a^,则在其选择a^ 时给予负奖励

L=−e(e>0)

例如:执行 a^ 后惩罚 −1,抑制该行为。

6.3 优化策略参数 θ

使用交叉熵损失(Cross-Entropy) 优化策略网络参数 θ:

θ∗=argθminL

原理:

最小化损失 L → 最大化累计奖励。

智能体通过梯度下降调整 θ,逐渐学习到:

若 L=+e,则倾向在状态S 选择 a^

若L=−e,则避免在状态S 选择a^

原理:

最小化损失 L → 最大化累计奖励。

智能体通过梯度下降调整 θ,逐渐学习到:

若 L=+e,则倾向在状态S 选择 a^

若L=−e,则避免在状态S 选择a^

6.4 关键技巧

奖励函数设计

正/负奖励的强度 e 需平衡:过大导致训练不稳定,过小则学习缓慢。

可结合稀疏奖励(仅关键动作给奖励)或稠密奖励(每一步细粒度反馈)。

策略探索(Exploration)

初始阶段让智能体随机尝试动作(如 ε-greedy 策略),避免陷入局部最优。

状态识别

确保状态 S 包含足够信息,使智能体明确“何时应执行/避免 a^”。
例如:在自动驾驶中,若 S 包含“前方有行人”,则动作“刹车”应获得正奖励。

6.5 符号解释

交叉熵损失的标准形式:e = -∑ â log p(a)

这里p(a)指的是智能体预测概率,就是原先network预测的概率。p(a)因为是一个0~1之间的数,所以p(a)=1的时候log p(a) = 0,当p(a)趋向于0的时候log p(a)趋向负无穷大,这样就会导致e变成正无穷大,当需要执行行为的时候L=e,所以智能体会调整参数来保证在此时的损失小,当不执行行为的时候,L=-e,这样actor会朝着最小化的L的方向调整,然后就会抑制操作。

6.6 总结

对于一个智能体,我们可以禁止它倾向于某个行为,或者倾向于某个行为

6.7 训练数据

如果要训练智能体,我们有收集一些训练资料,有些行为是被采取的,有些是不被采取的。

除此之外,还可以编辑分数,表示重要性和我们的期望。

7 如何解决An

注:对于一个环境的输入,什么都没做也是一个行为。

7.1 第一个版本(不正确的)

还是先收集数据,需要先设置一个(随机的)智能体(actor),让它与环境做互动收集数据。

这里的问题是:你的智能体哪里来的?

通常我们通过进行多轮的episodes尽可能全面收集训练数据(training data),接下来要评价每一个部分是好还是不好,评价完之后就可以用结果训练智能体。这样的评价的问题是只是根据当前的reward进行评价,就会出现(短视近利)short-sighted version。没有长远视野,因为可能我先左右移动躲避外星人的攻击再开火会获得更高的分数,但左右移动并不会得到分数,所以这种方式训练出来的只会看到这次开火我得到了高分,所以它训练出的智能体(actor)会疯狂的开火追求一时的高分,所以有时候我们需要牺牲短时利益来实现长远目标。(有点类似与算法中的全局视野和局部视野)

注:每个行为不是独立的,每个行为都会影响之后的行为

7.2 第二个版本

这里的An的好坏参考本身和之后所有发生的事情。使用了cumulated reward(积累奖励)Gt的概念可以解决短视的问题,但是这样又有了新的问题:如果游戏非常的长,最后的rn可能和开始时靠前的an没有多大的关系,这会影响我们对an的判断。

7.3 第三个版本

使用一个小于一的变量,降低长度对an的影响

7.4 第四个版本

对reward进行标准化,因为得分的高低是相对的,所有设定一个分水岭(b),低于b的为负数,高于b的为正数。一个智能体不能只加分不扣分,如果每一个行为都得分的话,可以把任何加分的行为都算作好的。这样训练的智能体可能会得分,但不一定可以得到最高峰,所有需要b。问题是b如何设置

8 策略梯度三分的训练流程(Policy Gradient)

8.1 随机初始化或者使用特殊的策略初始化控制智能体行为的神经网络的参数

8.2 训练执行的轮数

8.3 在第i从迭代中使用上一次更新的策略网络参数去控制智能体执行行为。

8.4 收集到一组新的数据

8.5 评价数据,计算A

8.6 根据数据和得分计算出损失函数L

8.7 反向传播更新网络参数。

智能体每一次循环,都会使用上一次训练的参数进行训练,用来得到新的参数,以此往复,不断的更新参数,不断变强。这样智能体的策略就会不断更新。

注:这是On-Policy算法,用于训练的(智能体)策略(学习策略)与和环境交互采样的策略是同一个策略的算法。

Off-policy:用于训练的目标策略 (Target Policy) 和与环境交互采样的行为策略 (Behavior Policy) 是两种不同的策略。

9 智能体的随机性

智能体的随机性很重要,在数据收集中如果没有随机性,智能体就不会做出某些操作,最优的方法可能无法得到

9.1 增加随机性的方法:

Enlarge output entropy(增大输出熵):熵在这里是用来衡量行为选择的随机性,熵值越高,证明选择每个行为的概率越相似,增大输出熵能让智能体在学习初期尽可能得多的尝试不同工作,避免过早陷入局部最优。

Add noises onto parameters(在模型参数上添加噪声):添加噪声通过扰动参数,间接影响输出的行为,比如让原本倾向于A的模型有概率选择B和C。同时,这样的训练有助于训练模型在参数有一定波动的时候仍能保持一定性能,提高鲁棒性(稳定性)。

10 Critic(评论家)

作用:评估智能体在某个环境中可能得到多少分

10.1 状态价值函数(State Value Function)

当critic看到当前环境的输入s,它会根据智能体现在的策略进行决策,评估智能体在某个环境中可能得到多少分。

但是由于策略的不同和智能体的随机性,同一个环境评估出来的得分可能有很大的不同。

10.2 如何训练出critic

10.2.1 第一个方法:Monte-Carlo (MC) based approach基于蒙特卡洛的方法

通过使智能体和环境互动得到游戏记录,这样当看到某个环境就知道分数。

总之,蒙特卡洛方法是一个直觉的方法,核心思想就是用经验平均估计期望值,他的训练方式就是通过大量的游戏得分训练,使得在看到某张图的时候能够预测出合理的得分

特点:

无偏性: G′是 Vθ(s)=E[Gt∣St=s]Vθ(s)=E[Gt∣St=s] 的一个无偏估计。平均来看,预测值会收敛到真实期望值。

基于实际经验:直接利用Agent与环境交互产生的真实经验数据,不依赖于环境模型。

简单直:概念清晰,直接使用回报作为学习目标。

高方差:由于G′依赖于从状态s开始到结束的整条随机轨迹(包含后续所有状态转移和奖励),其方差通常很高。同一个状态s的不同次访问,得到的G′值可能差异很大。这是MC方法的主要缺点。

必须等待回合结束:MC方法的核心要求是必须在一个完整的回合结束后才能计算回报G′并进行学习,无法进行在线学习或部分学习。

特点分析:

MC无偏性特点会使最后训练目标非常接近于真实期望值,但高方差的特性会是每一次的值可能偏离平均值很高,所以需要大量的数据去进行训练,抵消高方差带来的数据的偏移,但最后训练出来的值是非常好的

MC基于实际经验的特性可以帮助它更好的去探索未知,因为现实中很多问题(如游戏或者机器人的控制)往往是未知的,你没有办法得到一个准确的环境模型。就好比去计算往返两地之间需要时间,MC像是一个实干家,通过一遍一遍的自己的时间得出结论,依赖环境模型的的方法就好比一个理论家,他需要知道这条路有多远,有多少个红绿灯,通过一份详细的地图信息得到结论。

MC基于实际经验的特性使得他非常简单直接,学习过程相对直观,同时他会学习真实动态,即Agent实际策略θ作用下的真实表现,包含了所有随机性和复杂性的综合效果。

但MC非常典型的缺点就是效率低下,因为需要大量的数据,并且高度依赖探索,如果agent没有探索到某些位置,critic就无法学到这些地方的价值。

MC必须等回合结束才能获得数据,但在某些时候,一个游戏可能是很长甚至是永远不会结束的,这会很影响critic的学习。

10.2.2 第二个方法:Temporal-difference(TD)approach基于时序差分的方法

时序差分方法(Temporal-Difference,TD)是强化学习中结合动态规划(DP)与蒙特卡洛(MC)思想的核心算法,通过增量式更新实现高效学习

S:时刻t的状态(State)

a:在状态S执行的行为

r:执行动作后得到的即时奖励(Reward)

St+1:转移到的下一个状态

Vθ 是一个参数化的状态值函数

TD先当前预测出当前状态的得分,再预测出下一个状态的得分,根据下一个状态的得分更新上一个状态的得分,再和实际值比较,得到损失,通过损失再去调整参数θ。

当前状态价值=即时奖励+折扣后的下一个状态得分

TD方法通过不断比较当前模型预测的得分和实际观察到的即时奖励之间的误差来逐步更新价值函数(智能体V)的参数,让其更加准确。

优点:

在线学习:不需要一轮游戏结束就可以更新参数;

使用场景广:适合持续交互的环境,无需等待任务结束。

低方差:依赖单步奖励,更新仅依赖当前奖励rt和下一状态估值V(St+1),而非整个轨迹的积累奖励;收敛更加稳定,在随机环境中表现的鲁棒性更好,尤其当奖励噪声大或规矩较长时。

计算高效:增量更新,参数更新简单,计算复杂度低;内存友好,只需要存储最新经验,无需缓存整个轨迹。

利用马尔可夫性:自举,通过V(S_{t + 1})估计未来回报,充分利用状态转移的马尔可夫性(未来只取决于现在,跟过去无关),它更新S t的价值时,只看这一步发生了什么R_t和下一步要去哪儿(S_{t + 1}) ,然后直接用S_{t + 1}的价值代表未来。它不在乎“我是怎么来到S_t的”;模型无关(Model-Free):无需环境动力学模型(P(s'|s,a)和R(s,a),直接从经验中学习(类似MC模型,在上文有详细解释)。

缺点:

有偏估计:TD目标rt+rV(St+1)中的V(St+1)本身初始是不准确的估计。

对初始值敏感:初始误差传播,若初始V(s)远离真实值,偏差需多步迭代才能消除;影响收敛点,最终收敛值可能因初始化不同而略有差异(但理论证明会收敛到真值附近)。

探索-利用困境:非充分探索时失效:若策略未充分探索状态空间,V(s)可能收敛到次优解(需配合ε-贪婪等策略);与策略耦合,同策略算法 (如SARSA)对探索更敏感。

函数逼近下的不稳定性:致命三要素(Deadly Triad),当同时使用函数逼近(如神经网络)、自举和离线策略时,可能导致发散;根源:价值估计、策略改进和环境反馈形成复杂反馈环,易引发震荡。

10.3 MC和TD

这里有一个游戏,运行结果共8次。

假设γ=1。

这里我们对Sb预测,他的得分为3/4。

但是如果使用不同的训练方式,Sa的预测就会不同:

当采用M的时候,S就出现了一次,我们按照MC的方式可以把他当作是0。

当采用TD的时候,根据公式Sb的值是四分之三,当前的r是0,所以可以算出Sa是4/3。

结果都是正确的,只是样本过少,结果出现不同,这两种算的可能都不是最终值。

11 评论家如何用在智能体上

11.1(第3.5个版本)

回到我们在前文的遗留的问题 (基准值baseline)的选择,一个比较合理的方法就是选择Vθ(s)。

因为St有很多的可能,具有随机性,所以会产生多个G,根据MC或是TD求出Vθ(s),Vθ(s)预测这个画面出现的最后的得分

接下来根据St这个画面我们去做at,得到At,当At大于0,那么那就要比平均的操作好,反之则不好

11.2 第四个版本

这里使用了自举的思想,把这次的预测值和下一次的预测值求出来结果,跟我们的基准值比较判断好坏

12 训练技巧

在强化学习的搭建中,智能体和评价家的网络有的是共用的,可以将这一部分单独拿出来

13 Reward shaping 奖励塑形

有时候我们的行为的得分大部分是0(如下围棋),我们就不知道它的好坏,这时我们可以自己额外添加一个人工设计的辅助的奖励信号,来让我们的智能体更快和有效的学习期望中的最优策略。

定义额外的奖励去帮助我们的智能体学习叫做reward shaping。

(sparse reward)奖励稀疏:大部分reward都是0。

Reward Shaping:靠我们对特定的环境的理解来主动设计一些奖励或惩罚的规则。

优点:

加快学习:特别在系数奖励问题中,能极大地提高样本效率,减少训练时间。

引导探索:帮助智能体更快地找到期望区域。

相对简单直观:容易理解。

利用领域知识:提供了一种将人类对任务的理解融入学习过程的有效途径。

缺点和挑战:

需要正确的设计:如果设计有问题,可能起到反效果。

需要考虑过拟合。

人工设计成本。

需要对任务充分理解。

14 Reward Shaping - Curiosity 奖励塑性与好奇心机制

思想:

重点是让智能体去探索未知的领域,新的东西(要有意义)

传统的Reward Shaping依赖于人工设计的领域知识(如势能函数φ(s))来提供密集的引导奖励。

而Curiosity-Driven Reward Shaping(好奇心驱动的奖励塑形)则旨在自动生成内在奖励,这种奖励源于智能体对环境的“好奇”,鼓励它去探索那些模型预测不准的、新颖的、或信息量大的状态或状态转换

原因:

超越人工设计:在极其复杂或人类难以完全理解的环境中,手工设计有效的φ(s)非常困难甚至不可能。

解决“死胡同”探索:纯稀疏奖励下,智能体可能永远无法偶然发现通往高回报区域的路径。好奇心提供了一种持续的内在驱动力。

应对视觉等复杂输入:在基于像素的游戏或机器人视觉任务中,状态空间巨大且连续,好奇心机制尤其有效。

这里我们需要解决的是对于新事物的判断(有意义),有些事物对训练是无意义的,不仅不会加快训练还会减慢。

15 No Reward:Learning fromDemonstration(无奖励演示学习)

“ No Reward: Learning from Demonstration (LfD)”指的是模仿学习的一种核心思想:让智能体(Agent)通过观察和模仿专家(人或另一个智能体)的示范行为来学习完成任务,而无需依赖人工设计的奖励函数(Reward Function)

在之前的学习中智能体可能学习出来人们意想不到的或不想要的策略,除此之外定义一个合适的奖励函数是困难的,所以需要模仿人们心中所想的进行学习。

Imitation Learning 模仿学习  Behavioral Cloning(BC)行为克隆

这就是模仿学习,机器复杂人类行为叫做行为克隆

但是如果只让机器去复制人类的行为会出现几个问题:

人类和机器观察到的环境是不同的:人类的技术很高超,他在转弯时没有失败过,这样机器就不知道转弯失败的状态(如撞墙),他的训练资料中就没有这种情况,它就不知道如何处理。

人类的有些行为不需要模仿,机器会完全复制人类的行为(如人类自己的性格习惯),它不知道什么东西该学,什么都行不该学。

机器的能力是有限的,无效的人类行为会浪费它的能力;有害的行为会不利于机器。

原理:

将模仿学习视为监督学习任务,直接学习状态 (State)到动作(Action)的映射。通过“观察-模仿”专家行为,解决无奖励或奖励难以定义的任务(如人类复杂操作)。与强化学习不同的是他并没有reward,而是只通过模仿专家训练

数据集:

蓝色圆柱体存储专家轨迹,每个T^是专家的状态-动作序列(如s1→a1→s 2→a2→……).

优点:

实现简单、训练高效。

缺点:

    1.分布偏移( Distribution Shift):测试时遇到训练未覆盖的状态,错误累积导致失控。通俗的来说就是只会背答案,盲目跟从专家的操作,没有真正理解“为什么这么做”,也没有机会在新/错误的情况下练习如何调整和恢复。

    2.无法学习长期策略:缺乏环境交互反馈。就像一个只看棋谱但不跟人对弈的棋手,无法理解动作目的、评估后果、自我优化。

    3.机器能力有限:机器可能无法完全模仿专家操作,部分模仿可能导致更坏的后果,比如让机器学习一个科学家,他可能总结了几个专家身上的特点,比如想象力丰富,不修边幅等有好有坏的特点,如果机器无法全部学习,而是选择部分学习,正好选择了假如说是不修边幅,那对整个智能体来说,这样的训练无意义。

16 Inverse Reinforcement Learning(IRL)逆强化学习

16.1 介绍

我们不知道reward,让机器去从示例中推算reward,使用推算出的reward去学习。

流程:

通过输入专家操作和环境模型来让IRL自己定义一个reward function, 再用这个reward function去跟正常强化学习一样训练actor.这个流程得到的reward function可能是很简单的,但简单的reward function不意味着训练不出来复杂的actor。

注:一个简单的示例推算出的reward不一定简单,简单的例子并不代表reward简单

16.2 核心原则

含义:IRL的核心假设是专家(老师)的演示行为代表了任务的最优解。他们的决策序列(轨迹)是在某个未知的、真实的奖励函数下能够获得最高累积奖励的策略

重要性:整个IRL算法的目标就是通过分析专家的行为,反推出这个隐藏的奖励函数,并让学习者的策略 (Actor)最终达到或接近专家的水平。

16.3 IRL基本思路

1从初始Actor开始。

2用当前Actor跑环境,得到一些(表现较差的)轨迹。

3IRL步骤:根据专家轨迹和当前Actor轨迹,反推/更新奖励函数。新奖励函数的核心属性是:专家轨迹在该函数下的得分高于Actor轨迹的得分。

4RL步骤:用这个新奖励函数作为目标,训练Actor策略,使其在该奖励函数下表现得更好。

5回到步骤2,用更新后的Actor生成新的轨迹(应该会比上次好)。

6重复步骤2-5,,直到Actor的性能足够好(接近专家),或者奖励函数趋于稳定。

专家生成的蓝色圆柱内的轨迹,actor生成绿色圆柱内的轨迹,本质上就是通过这两个轨迹去生成reward函数(保证老师得分大于actor),再根据这个重新训练actor,类似gan的训练方式

核心思想(对抗逆强化学习,AIRL):

生成器(Actor):生成轨迹 τ,模仿专家行为。

判别器(Reward Function):区分 τ^(真,专家)与 τ(假,智能体),通过奖励函数 R 赋予 τ^ 更高奖励,迫使智能体优化轨迹以 “骗过” 判别器(类似 GAN 的对抗训练)。

gan:让生成器不断的改进,生成接近真实的图片。

注:学习来自李宏毅老师。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐