Reinforcement Learning——RL系列目录
引言: 最近在研究强化学习,所以打算写一系列关于强化学习的文章(实时更新),包括Q-learning、DQN、MCTS、PPO、DPO、RLHF、GPRO等,这里是一些基础知识和后续文章的目录,可以在这里直接跳转你感兴趣的内容。
📖 RL系列文章目录
以后有关于强化学习的算法与文章都会在这里更新,目录如下:
1.Q-Learning——一种基于值迭代的强化学习算法
2.DQN——Deep Q-Learning算法
3.AlphaGomoku——MCTS算法与五子棋
4.PPO——近端策略优化算法
5.DPO——直接偏好优化算法
6.GPRO——组相对策略优化算法
7.DAPO——动态采样策略优化算法
8.GSPO——序列级策略优化算法
9.SAPO——软自适应策略优化算法
10.GDPO——分组奖励解耦归一化策略优化算法
📕 强化学习的基本知识
强化学习的分类
根据不同的分类方式,可以将强化学习分为不同的类别,下面是几种常见的分类方式:
是否显式地学习一个策略进行分类
这种分类方式关注的是智能体(Agent)最终是直接学习“该怎么做”,还是通过学习“哪个动作更好”来间接决定。
- 基于价值(Value-based)
- 原理:不直接学习策略,而是学习一个价值函数(如 Q 函数)。它主要预测在某个状态下采取某个动作的未来预期回报。决策时,通常选择价值最大的动作(贪婪策略)。
- 特点:通常是确定性的。
- 代表算法:Q-Learning, DQN, Sarsa。
- 基于策略(Policy-based)
- 原理:直接学习一个策略函数(Policy Function),输入状态,输出动作的概率分布。
- 特点:可以处理连续动作空间,通常是随机性的(输出概率)。
- 代表算法:REINFORCE (Policy Gradient)。
- Actor-Critic(两者结合)
- 原理:同时学习策略(Actor)和价值(Critic)。Actor 负责根据概率做出动作,Critic 负责根据价值函数对 Actor 的动作进行打分。
- 代表算法:A3C, PPO, SAC。
环境交互采集数据的策略与用以学习更新的策略是否一致进行分类
这种分类方式关注的是“干活的”和“学习的”是不是同一个策略。
- 同轨策略(On-policy)
- 原理:行为策略(用于采集数据)和目标策略(通过学习被更新的策略)是同一个。即“我学我刚才做的事情”。一旦策略更新了,之前的历史数据就失效了。
- 特点:数据利用率较低,但稳定性通常较好。
- 代表算法:Sarsa, PPO, TRPO。
- 离轨策略(Off-policy)
- 原理:行为策略和目标策略是不同的。智能体可以将过去的经验存储在经验回放池(Experience Replay)中,从别人的经验或自己的历史经验中学习。
- 特点:样本效率高(Sample Efficient),但收敛较难。
- 代表算法:Q-Learning, DQN, SAC。
是否学习环境的模型进行分类
这种分类方式关注智能体是否试图在脑海中构建一个“世界模型”来模拟环境的运作。
- 无模型(Model-free)
- 原理:不尝试理解环境的物理规律(即状态转移概率 P(s′|s, a)),直接通过大量的试错(Trial-and-Error)来学习策略或价值。
- 特点:目前主流的 RL 方法,计算量相对较小,容易实现,但需要大量数据。
- 代表算法:DQN, PPO。
- 有模型(Model-based)
- 原理:智能体尝试学习一个环境模型(Model),预测采取动作后状态会如何变化以及奖励是多少。有了模型,智能体可以在脑海中进行“规划”(Planning)。
- 特点:样本效率极高,但如果模型学得不准,会产生误差累积。
- 代表算法:Dyna-Q, AlphaZero (利用 MCTS 进行规划), World Models。
是否和环境进行交互进行分类
这种分类方式关注数据来源是实时的还是历史固定的。
- 在线强化学习(Online RL)
- 原理:智能体一边与环境交互,一边获取数据并更新模型。这是最经典的强化学习模式。
- 特点:探索与利用的循环。
- 离线强化学习(Offline RL / Batch RL)
- 原理:智能体不能与环境交互,只能从一个固定的、已经收集好的数据集(Dataset)中学习策略。这非常适用于医疗、自动驾驶等不能随意试错的领域。
- 特点:主要挑战是分布偏移(Distribution Shift)问题。
- 代表算法:CQL, BCQ。
强化学习中的智能体和环境
强化学习的核心,在于智能体(Agent)与环境(Environment)之间持续不断的交互。这种交互是一个闭环过程,我们可以将其形象地比喻为“玩游戏”的过程。
核心角色
- 智能体 (Agent)
- 它是强化学习的主角,是感知环境并做出决策的实体。
- 功能:它观察当前的状态,根据内部的策略(Policy)选择一个动作,并试图通过这些动作来最大化未来的累积奖励。
- 例子:在超级马里奥游戏中,控制马里奥移动和跳跃的程序就是智能体。
- 环境 (Environment)
- 它是智能体所处的外部世界,受自然规律或游戏规则支配。
- 功能:它接收智能体的动作,更新自身的状态,并反馈给智能体一个奖励信号。
- 例子:超级马里奥的游戏程序本身,包括地图、敌人、物理碰撞逻辑等。
交互过程 (The Interaction Loop)
智能体与环境的交互遵循一个离散的时间序列(t = 0, 1, 2, ...),每一步交互包含以下三个关键要素:
- 状态 (State, St)
- 环境在 t 时刻呈现给智能体的样子。它可以是完全可观测的(如棋盘),也可以是部分可观测的(如迷宫视野)。
- 动作 (Action, At)
- 智能体基于当前状态 St 选择的具体行为。动作空间可以是离散的(如“上下左右”),也可以是连续的(如“方向盘转动角度”)。
- 奖励 (Reward, Rt + 1)
- 智能体执行动作后,环境反馈的一个标量数值。
- 本质:它是对动作好坏的即时评价。
- 注意:奖励虽然是即时的,但智能体的目标是最大化长期累积奖励(Return),而不仅仅是眼前的利益。
形式化描述
这一过程通常可以用数学公式表示为:
$$ S_t \xrightarrow{\text{Agent chooses } A_t} A_t \xrightarrow{\text{Environment returns}} (R_{t+1}, S_{t+1}) $$
其中:
- 在时刻 t,智能体观察到状态 St。
- 智能体采取动作 At。
- 环境根据物理规则发生变化,转移到新的状态 St + 1,并给予智能体奖励 Rt + 1。
这个循环不断进行,直到环境达到一个终止状态(Terminal State),例如游戏通关或游戏结束。
强化学习中的回报和策略
在了解了智能体和环境的交互后,我们需要定义智能体到底在追求什么(回报),以及它是如何做决定的(策略)。
回报 (Return)
智能体的目标不是仅仅最大化当前的那个奖励 Rt,而是最大化长期累积奖励。我们将这个累积的奖励总和称为回报 (Return),通常用 Gt 表示。
如果一个任务有明确的终点(Episodic Task),回报就是所有步数奖励的简单相加。但对于没有终点的持续性任务(Continuing Task),或者为了反映“现在的奖励比未来的奖励更值钱”这一概念,我们引入了折扣因子 (Discount Factor) γ。
- 折扣回报公式:
$$ G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \dots = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} $$
- 折扣因子 (γ):
- 取值范围是 [0, 1]。
- γ = 0:智能体是“目光短浅”的,只在这个时刻关心即时奖励 Rt + 1。
- γ → 1:智能体是“高瞻远瞩”的,未来的奖励和当前的奖励几乎一样重要。
- 作用:它不仅在数学上保证了无限步数下回报的收敛,也符合人类“落袋为安”的直觉。
策略 (Policy)
策略是智能体的“大脑”或“行动指南”。它定义了智能体在特定状态下应该采取什么动作。策略通常用符号 π 表示。
根据表现形式,策略主要分为两种:
- 确定性策略 (Deterministic Policy)
- 定义:在某个状态 s 下,策略直接给出一个确定的动作 a。
- 公式: a = π(s)
- 场景:适用于最优解唯一且环境稳定的情况。比如在简单的迷宫中,看到墙壁(状态)就向右转(动作)。
- 随机性策略 (Stochastic Policy)
- 定义:在某个状态 s 下,策略给出的是所有可能动作的概率分布。智能体根据这个概率采样来决定执行哪个动作。
- 公式: π(a|s) = P(At = a|St = s)
- 场景:
- 探索 (Exploration):通过引入随机性,让智能体尝试不同的动作,避免陷入局部最优。
- 博弈:在石头剪刀布游戏中,最好的策略是随机出拳,防止被对手预测。
强化学习中的价值函数
有了回报(Return)的概念后,我们面临一个实际问题:回报是在游戏结束或很长一段时间后才能统计出来的。但在做决策的当下,我们需要一个“预测器”来告诉我们:现在的局势有多好? 或者 这一步棋有多妙?
这就是价值函数 (Value Function) 的作用。它是对未来累积回报的期望 (Expectation)。
状态价值函数 (State-Value Function, V)
状态价值函数用于评估在特定策略 π 下,处于某个状态 s 到底有多好。
定义:从状态 s 开始,遵循策略 π 一直走下去,预期能得到的平均回报。
数学公式: Vπ(s) = 𝔼π[Gt|St = s]
直观理解:
- 就像下围棋时,你要判断当前的“盘面”是优势还是劣势。即使还没走下一步,看着棋盘(状态 s),大师就能通过经验(价值函数)判断出胜率(价值 V)。
动作价值函数 (Action-Value Function, Q)
动作价值函数不仅看状态,还看动作。它用于评估在特定策略 π 下,在状态 s 采取动作 a 到底有多好。这就是著名的 Q值 (Q-value)。
定义:从状态 s 开始,强制执行动作 a,之后继续遵循策略 π 走下去,预期能得到的平均回报。
数学公式: Qπ(s, a) = 𝔼π[Gt|St = s, At = a]
直观理解:
- 这就好比在刚才的围棋盘面(状态 s)下,你正在考虑“落子天元”(动作 a)。Q函数会告诉你,这一步落下后,最终获胜的概率是多少。
重要性:在无模型 (Model-free) 强化学习中,Q函数尤为重要。因为如果我们知道每个动作的 Q值,我们只需要选择 Q值最大的那个动作(arg maxaQ(s, a)),就是当前的最优决策,而不需要知道环境的具体物理规律。
两者的关系与贝尔曼方程 (Bellman Equation)
价值函数不是静态的,它具有递归的性质。当前的价值,等于即时奖励加上打折后的未来状态价值。这就是著名的贝尔曼方程,它是强化学习进行迭代更新的核心。
V 与 Q 的关系: 状态 s 的价值,其实就是该状态下所有可能动作的 Q值,按照策略 π 的概率进行加权平均: Vπ(s) = ∑aπ(a|s)Qπ(s, a)
贝尔曼方程的形态: Vπ(s) = 𝔼π[Rt + 1 + γVπ(St + 1) ∣ St = s]
这意味着:今天的价值 = 今天的奖励 + 明天的价值(打个折)。这种递归结构使得我们可以利用动态规划或时序差分(TD Learning)来一步步估算价值。