强化学习—— A 基于值函数vs基于策略方法

强化学习—— A 基于值函数vs基于策略方法
可爱可倾1. 基于值函数 vs 基于策略方法
强化学习解决决策问题的思路可以分为两大类:一类是”评估价值后决策”,另一类是”直接优化决策”。这就是我们常说的基于值函数的方法和基于策略的方法。
1.1 基于值函数的方法:先评估,再决策
想象你是一个下棋的新手,如何提高棋艺?一个直观的想法是:学会评估每个局面的好坏,然后选择能达到最好局面的走法。这就是基于值函数方法的核心思想。
核心理念
基于值函数的方法通过学习价值评估函数来指导决策:
- 值函数评估:基于值函数的方法主要通过估计状态值函数 ( V(s) ) 或动作价值函数 ( Q(s, a) ) 来评估每个状态或状态-动作对的优劣。这里,( V(s) ) 表示在状态 ( s ) 下能获得的期望累计奖励,而 ( Q(s, a) ) 则表示在状态 ( s ) 采取动作 ( a ) 后的期望累计奖励。
- 策略间接导出:这些方法通常不直接表示策略,而是通过优化值函数,然后从中推导出最优策略。例如,在给定 ( Q(s, a) ) 的情况下,可以通过选择使 ( Q(s, a) ) 最大的动作来获得最优策略。
- 状态价值函数 \(V(s)\):评估”在状态s下,按照当前策略能获得多少长期奖励”
- 动作价值函数 \(Q(s,a)\):评估”在状态s下采取动作a,能获得多少长期奖励”
有了这些价值评估,策略就水到渠成了——总是选择价值最高的动作。
典型算法
Q学习(Q-Learning):最经典的值函数方法
- 直接学习最优动作价值函数 \(Q^*(s,a)\)
- 采用”时间差分”的思想逐步改进Q值估计
- 属于off-policy算法,可以从任意行为策略中学习
深度Q网络(DQN):Q学习的深度学习版本
- 用神经网络近似Q函数,处理高维状态空间
- 引入经验回放和目标网络等技巧提高稳定性
1.2 基于策略的方法:直接优化决策
如果说值函数方法是”三思而后行”,那么策略方法就是”熟能生巧”——直接练习决策过程本身,通过不断试错来改进策略。
核心理念
基于策略的方法将策略参数化为 \(\pi_\theta(a|s)\),直接优化策略参数 \(\theta\):
- 目标明确:最大化期望累积奖励 \(J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}[R(\tau)]\)
- 梯度上升:利用策略梯度定理计算参数更新方向
- 自然探索:随机策略天然具备探索能力
策略梯度定理
策略优化的数学基础来自于著名的策略梯度定理:
\[\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}[\nabla_\theta \log \pi_\theta(a|s) \cdot Q^{\pi_\theta}(s,a)]\]
这个公式告诉我们:如果某个动作的价值高,就增加选择它的概率;反之则降低概率。
典型算法
REINFORCE算法:最基础的策略梯度方法
- 使用蒙特卡洛方法估计回报
- 简单直接,但方差较大
PPO(Proximal Policy Optimization):现代策略优化的代表
- 通过”信任区域”思想控制策略更新幅度
- 在样本效率和稳定性间取得良好平衡
1.3 两种方法的深度对比
| 维度 | 基于值函数 | 基于策略 |
|---|---|---|
| 动作空间 | 适合离散动作 | 天然支持连续动作 |
| 策略复杂度 | 简单确定性策略 | 支持复杂随机策略 |
| 样本效率 | 通常较高 | 相对较低 |
| 探索机制 | 需要额外设计(如ε-贪心) | 策略本身包含探索 |
值函数方法的特点
- 样本效率高,能从有限经验中高效学习
- 理论基础扎实,基于贝尔曼方程
- 在离散动作空间中表现优异
- 难以处理连续或高维动作空间
- 需要额外机制平衡探索与利用
- 函数近似可能导致不稳定
策略方法的特点
- 自然处理连续动作空间
- 策略表达能力强,可学习复杂行为
- 收敛性保证较好(在合适条件下)
- 样本需求量大
- 梯度估计方差高,需要降方差技巧
- 容易陷入局部最优
1.4 融合之道:Actor-Critic方法
既然两种方法各有所长,自然有人想到将它们结合起来。这就是Actor-Critic方法的核心思想:
- Actor(演员):基于策略的组件,负责选择动作
- Critic(评论家):基于值函数的组件,负责评估动作价值
这种结合带来了显著优势:
- Critic帮助Actor减少梯度方差
- Actor为Critic提供更好的探索策略
- 两者相互促进,加速收敛
2. 动态规划中的经典对决:策略迭代 vs 价值迭代
在基于值函数的方法中,动态规划提供了两种经典的求解思路。需要注意的是,策略迭代和价值迭代都属于基于值函数的方法,它们的区别在于如何利用值函数来优化策略。
2.1 策略迭代
策略迭代是一种通过不断交替执行策略评估和策略改进来找到最优策略的方法。
- 策略评估:固定当前策略,计算该策略下所有状态的值函数 (V^(s)),即评估在当前策略下,每个状态的长期奖励。
- 策略改进:利用评估出的值函数,改进当前策略,即在每个状态下选择使值函数最大的动作。
策略迭代的步骤是:
- 初始化策略 (_0)。
- 对策略 (_i) 进行策略评估,计算对应的值函数 (V^{_i}(s))。
- 基于 (V^{i}(s)) 改进策略,得到新的策略 ({i+1})。
- 重复步骤 2 和 3,直到策略收敛到最优策略 (^*)。
2.2 价值迭代
价值迭代通过直接更新值函数的方式来迭代逼近最优值函数 (V^*(s)),然后通过值函数导出策略。
- 每一步都会对每个状态 (s) 更新其值函数为最大化预期奖励的值
- 通过不断更新值函数,逐步逼近最优值函数。当值函数收敛时,可以通过选择最大化值函数的动作来获得最优策略。
价值迭代的步骤是:
- 初始化值函数 (V_0(s))。
- 对每个状态 (s),更新值函数 (V_{i+1}(s)),使其最大化预期回报。
- 重复上述过程,直到值函数收敛。
- 当值函数收敛后,通过选择使 (V(s)) 最大的动作 (a),导出最优策略。
2.3 策略迭代 vs 价值迭代
- 策略迭代:交替执行完整的策略评估和策略改进,计算较精确的策略更新,通常收敛较快,但每次评估需要花费较多时间。
- 价值迭代:在更新值函数的同时隐式优化策略,每次更新的粒度较小,虽然更新速度快,但可能需要更多迭代次数才能达到收敛。
| 特性 | 策略迭代 | 价值迭代 |
|---|---|---|
| 迭代步骤 | 策略评估 + 策略改进 | 值函数更新 |
| 每次迭代成本 | 高 | 低 |
| 迭代次数 | 少 | 多 |
| 收敛速度 | 快 | 慢 |
| 适用场景 | 小型 MDP,需精确解 | 大型 MDP,需快速近似 |
| 稳定性 | 高 | 可能震荡,需要调节参数 |






