核心目标: 教会一个智能体(比如机器人、游戏AI、推荐系统)通过试错和奖励,学会在某个环境中完成特定任务的最佳策略。
核心角色:
- 智能体 (Agent): 学习者,比如玩游戏的小人、控制温度的空调系统。
- 环境 (Environment): 智能体所处的世界,比如游戏关卡、房间、股票市场。
- 状态 (State): 环境在某个时刻的快照,比如游戏画面、房间的温度湿度、股票的价格成交量。
- 动作 (Action): 智能体能做的事情,比如上下左右移动、调高温度、买入卖出股票。
- 奖励 (Reward): 环境给智能体动作的即时反馈,比如吃到金币+1分、撞到墙-1分、房间达到舒适温度+0.1、亏钱-10。
目标: 智能体要找到一个策略 (Policy),这个策略告诉它在每个状态下该做什么动作,使得长期累积的奖励总和最大化。就像玩游戏要通关得分最高,投资要长期收益最大。
强化学习三大分类:
当你在教一只狗狗学新动作(比如坐下)。
基于值的方法 (Value-Based Methods) - “算盘派”
- 核心思想: 不直接学“做什么动作”,而是学每个状态或者每个“状态-动作对”值多少钱(值)。值越高,说明这个状态(或在这个状态做这个动作)未来能拿到的总奖励越多。
- 状态值函数 V(s): 在这个状态s下,按当前策略走下去,预期能拿到多少总奖励。比如在游戏某个位置,V值高说明这是个好位置。
- 动作值函数 Q(s, a): 在状态s下,做了动作a,然后按当前策略走下去,预期能拿到多少总奖励。比如在游戏某个位置,Q(跳跃)值高说明这时跳起来很划算。
- 怎么学?
- 智能体不断尝试(探索),观察奖励和状态变化。
- 用观察到的结果(实际奖励 + 下一个状态的价值估计)来更新当前状态/动作的价值估计。这个更新规则基于贝尔曼方程,本质是说“当前位置的价值 ≈ 当前奖励 + 打折后的下一个位置价值”。
- 最终策略: 学好了Q值表,最优策略就很简单了:在状态s下,选Q值最大的那个动作a! (贪婪策略)。
- 经典算法:
- Q-Learning: 最基础也最重要!学Q表。特点是“离线学习”:更新Q值时,用“假设下一步选最优动作”的价值 (max Q),而不管自己实际下一步会做什么(可能探索时做了随机动作)。
- SARSA: 也是学Q表。特点是“在线学习”:更新Q值时,用实际采取的下一步动作对应的Q值。更保守,跟着当前策略走。
- DQN (Deep Q-Network): 革命性算法! 当状态太复杂(比如游戏画面像素)无法用表格存Q值时,用一个神经网络代替Q表!输入状态(如图像),输出每个动作的Q值。解决了高维状态问题。关键技巧:经验回放(记住过去的经验随机抽着学,打破相关性)、目标网络(稳定学习目标)。
- DQN变种:
- Double DQN: 解决DQN容易高估Q值的问题(觉得啥动作都值钱),让动作选择(用主网络)和价值评估(用目标网络)分开。
- Dueling DQN: 把Q值拆成状态值V(s)(这位置好不好)和动作优势A(s,a)(在这个位置做这动作比平均水平好多少)。让网络更聚焦学状态的好坏。
- 适合场景: 动作空间是离散的、有限的(比如游戏手柄的按键)。像下棋(动作有限)、经典游戏(上下左右开火)。
- 优点: 相对稳定。
- 缺点: 只能处理离散动作;找到最优策略依赖于价值函数估计得准不准。
基于策略的方法 (Policy-Based Methods) - “直觉派”
- 核心思想: 绕开“值”,直接学习策略本身! 用一个函数(比如神经网络)表示策略,输入状态s,直接输出动作a(确定性策略)或者输出每个动作的概率(随机性策略)。
- 怎么学?
- 目标就是让策略函数输出的动作序列能最大化长期累积奖励的期望。
- 核心是策略梯度定理:它告诉你怎么调整策略函数的参数,才能让期望累积奖励增加。简单说就是:如果某个动作(或动作方向)带来了好结果(高奖励),就增加以后选这个动作(或类似动作)的概率;反之减少。
- 经典算法:
- REINFORCE: 最基础的策略梯度算法。跑完一整局游戏(一条完整轨迹),计算总奖励,然后根据这个总奖励来调整策略。缺点: 奖励波动大(方差高),学得慢。
- Actor-Critic (演员-评论家): 结合了值和策略! 是主流方法。
- Actor (演员): 负责执行策略,输出动作。
- Critic (评论家): 负责评价状态或动作的价值(学一个值函数V(s)或Q(s,a))。
- 怎么协作? Critic 给 Actor 反馈:在状态s下,Actor选择的动作a到底有多好?这个反馈通常用优势函数 A(s, a) = Q(s, a) - V(s) 表示(动作a比在s状态下的平均动作好多少)。Actor就用这个优势值来更新策略(增大带来正优势的动作概率,减小带来负优势的动作概率)。Critic则通过TD误差等方法来学习更准的价值估计。
- A3C (Asynchronous Advantage Actor-Critic): 利用多线程异步更新,效率高。
- PPO (Proximal Policy Optimization): 目前最流行最实用的策略优化算法之一! 核心思想:更新策略时,步子别迈太大,避免新策略一下子变得和旧策略差太多导致性能崩盘。通过一个“裁剪”机制限制更新的幅度。优点: 稳定、效果好、相对容易调参。
- DDPG (Deep Deterministic Policy Gradient): 针对连续动作空间(比如方向盘转多少度、电机输出多少扭矩)设计的Actor-Critic算法。Actor输出一个确定的连续动作值(不是概率)。需要加一些噪声来探索。
- SAC (Soft Actor-Critic): 也是处理连续动作的先进算法。特色是引入了最大熵目标,不仅追求高奖励,还鼓励策略有一定的随机性(熵高),这样探索更充分,更容易找到全局最优解,也更鲁棒。
- 适合场景: 动作空间是连续的(机器人控制、自动驾驶)或者即使是离散但策略本身很复杂需要直接建模。也常与Actor-Critic结合处理各种场景。
- 优点: 能直接处理连续动作;可以学习随机策略(有时随机探索很重要,比如石头剪刀布)。
- 缺点: 训练可能不太稳定;样本效率有时相对较低(需要更多试错);容易陷入局部最优。
基于模型的方法 (Model-Based Methods) - “预言家派”
- 核心思想: 智能体不光学怎么动,还要学环境是怎么运作的! 它试图建立一个环境模型,这个模型能预测:在状态s做动作a后,下一个状态s’会是什么?能拿到多少奖励r?
- 怎么用?
- 有了这个“世界模拟器”,智能体就可以在脑子里做计划(Planning)!不用每次都去真实环境里撞墙试错,可以在模型里模拟各种动作序列,看哪个序列预测的累积奖励最高,然后去执行第一个动作。执行完,用真实结果更新模型,再继续计划。大大减少真实交互次数!
- 经典思路/算法:
- 动态规划 (DP): 最理想情况,环境模型(状态转移和奖励函数)完全已知且精确。直接用数学方法(迭代贝尔曼方程)就能算出最优策略和最优价值。现实问题很少这么完美。
- Dyna: 结合模型和无模型学习(如Q-Learning)。 智能体一边在真实环境交互学习(更新Q值),一边用这些交互数据学习环境模型。然后用学到的模型生成大量模拟数据,也用这些模拟数据来更新Q值。提高了样本效率。
- MBPO (Model-Based Policy Optimization): 先用数据学环境模型,然后在学到的模型上跑基于策略的方法(如PPO) 来优化策略。模型会不断用新数据更新。
- MPC (Model Predictive Control): 工业界常用! 每一步都做:
- 观察当前状态。
- 用模型预测未来有限几步内不同动作序列的结果。
- 选择预测累积奖励最高的动作序列。
- 只执行这个序列的第一个动作。
- 下一步重复1-4。边走边看,灵活调整。
- 适合场景: 真实环境交互代价高昂、危险或缓慢(比如操控真实机器人、化学实验、金融交易);或者环境本身是可精确建模/仿真的(比如一些棋类游戏、物理仿真器)。
- 优点: 样本效率极高(省试错次数);能进行前瞻性规划;在仿真中训练安全。
- 缺点: 模型很难学得准! 模型预测有误差,基于错误模型学的策略在真实环境会失效(“基于幻觉做决策”);构建和利用模型本身有计算开销。
对比:
特点 | 基于值 (Value-Based) | 基于策略 (Policy-Based) | 基于模型 (Model-Based) |
---|---|---|---|
核心 | 学值 (V/Q值) | 直接学策略 (Policy) | 学环境模型 (预测 s’ 和 r) |
输出策略 | 间接 (选值最大的动作) | 直接 (输出动作或概率) | 直接或间接 (在模型上规划) |
动作空间 | 适合离散动作 | 离散和连续动作都行 | 离散和连续动作都行 |
稳定性 | 相对稳定 | 可能不稳定 (策略梯度) | 依赖模型精度 (模型不准策略就崩) |
样本效率 | 中等 | 通常较低 (尤其REINFORCE) | 非常高 (能用模型模拟) |
规划能力 | 无显式规划 | 无显式规划 | 有显式规划 (在模型里模拟未来) |
经典算法 | Q-Learning, SARSA, DQN及其变种 | REINFORCE, Actor-Critic, PPO, DDPG, SAC | Dyna, MBPO, MPC |
比喻 | 算盘派 (精打细算每个位置/动作值不值钱) | 直觉派 (凭感觉和经验直接出招) | 预言家派 (先搞懂世界规则,再推演最优解) |
简单选择指南:
- 如果你的问题动作是离散的(按键选择),状态不太复杂,试试Q-Learning/DQN。
- 如果你的问题动作是连续的(控制机械臂、开车),或者需要随机策略,首选PPO、SAC这类策略梯度/Actor-Critic方法。
- 如果你有精确的环境模型或者交互代价极高(真机器人、高风险),或者能在好的仿真器里训练,基于模型的方法 (MBPO, MPC) 是首选,效率极高。
- Actor-Critic (PPO, SAC) 是当前非常通用和强大的主流选择。