直接策略搜索(Direct Policy Search)是强化学习的三大核心分支之一,与“基于值函数的方法”最大区别在于:不通过价值函数间接推导策略,而是直接将策略参数化,通过优化参数最大化长期累积奖励。其核心逻辑是“定义策略的数学形式→计算奖励对参数的梯度→沿梯度方向更新参数”,适用于连续行动空间、高维决策等场景,以下从核心原理、主流算法、关键技术、适用场景四个维度展开。
一、核心原理:策略参数化与梯度上升
直接策略搜索的底层逻辑围绕“策略参数化”和“目标函数优化”展开,是理解所有此类方法的基础。
1. 策略参数化:用数学模型表示策略
策略的本质是“从状态到动作的映射”,直接策略搜索通过参数化函数将这一映射显性表达,记为 π_θ(a|s),其中:
- θ:策略的参数(如神经网络的权重、线性模型的系数),是优化的核心对象;
 - s:输入的当前状态(如机器人的传感器数据、游戏画面像素);
 - a:输出的动作(离散空间为“选每个动作的概率”,连续空间为“动作的概率分布”)。
 
两种常见的策略参数化形式:
- 
离散行动空间(如游戏的上下左右操作):
用softmax函数输出每个动作的概率,公式为:
π_θ(a|s) = e(φ(s,a)T * θ) / Σ(从a'∈A)e(φ(s,a')T * θ)
其中 φ(s,a) 是“状态-动作对”的特征向量(如状态的one-hot编码+动作的标识),确保输出概率和为1。 - 
连续行动空间(如机器人关节角度、无人机飞行速度):
用高斯分布表示动作的概率,公式为:
π_θ(a|s) ~ N(μ_θ(s), σ_θ²(s))
其中 μ_θ(s)(均值)和 σ_θ(s)(方差)由参数 θ 控制的函数输出,动作从该高斯分布中采样得到。 
2. 目标函数:最大化长期累积奖励的期望
直接策略搜索的优化目标是“让参数 θ 对应的策略 π_θ,能获得最大的长期累积奖励期望”,目标函数定义为:
J(θ) = E_πθ[ Σ(从t=0到∞)γ^t * r_t ]
- E_πθ[·]:对策略 π_θ 采样的所有轨迹取期望(消除动作和状态转移的随机性影响);
 - Σ(从t=0到∞)γ^t * r_t:单条轨迹的长期累积奖励(γ 为折现因子,控制未来奖励的权重);
 - r_t:第 t 步的即时奖励(如机器人完成任务得+10分,碰撞得-5分)。
 
3. 优化方法:梯度上升最大化目标函数
由于目标函数 J(θ) 是参数 θ 的函数,优化核心是计算 J(θ) 对 θ 的梯度 ∇θ J(θ),并沿梯度方向更新 θ(梯度上升,因目标是“最大化”奖励),更新公式为:
θ_{k+1} = θ_k + α * ∇θ J(θ_k)
- α:学习率(控制每次参数更新的幅度,避免更新过快导致策略震荡);
 - ∇θ J(θ):梯度向量,每个元素表示“该参数变化对奖励的影响方向和大小”——正梯度表示参数增大时奖励上升,需增大该参数;负梯度则相反。
 
关键:策略梯度定理(计算梯度的核心工具)
直接计算 ∇θ J(θ) 难度大,策略梯度定理将其转化为可通过采样计算的形式:
∇θ J(θ) = E_πθ[ Σ(从t=0到∞)∇θ log π_θ(a_t|s_t) * G_t ]
- ∇θ log π_θ(a_t|s_t):策略的“对数梯度”——反映“参数 θ 变化时,选当前动作 a_t 的概率变化率”,决定梯度的方向;
 - G_t = Σ(从k=t到∞)γ^(k-t) * r_k:第 t 步的“累积奖励(回报)”——反映“从当前步开始的长期收益”,决定梯度的权重(收益越高,该动作对应的参数更新幅度越大)。
 
二、主流算法:从基础到进阶
直接策略搜索的算法围绕“降低梯度估计方差”“提升训练稳定性”“提高样本效率”三个方向演进,以下是最核心的三类算法:
1. REINFORCE算法(基础策略梯度方法)
REINFORCE是最简单的直接策略搜索算法,属于“同策略(On-policy)”方法(即必须用当前策略采样数据,且仅用这些数据更新当前策略),核心是“通过完整轨迹采样计算梯度”。
详细训练步骤:
- 初始化参数:随机初始化策略参数 θ₀(如神经网络的权重初始化为小的随机值)。
 - 采样完整轨迹:用当前策略 π_θk 与环境交互,采集一条完整轨迹 τ = (s₀,a₀,r₀,s₁,a₁,r₁,...,s_T,a_T,r_T)(T 为轨迹终止时刻)。
 - 计算每步的累积奖励 G_t:对轨迹中每个时刻 t,计算从 t 到 T 的累积奖励:
G_t = r_t + γr_{t+1} + γ²r_{t+2} + ... + γ^(T-t)*r_T。 - 估计策略梯度:对轨迹中每个时刻 t,计算 ∇θ log π_θ(a_t|s_t) * G_t,取所有时刻的平均值作为梯度估计 ∇̂θ J(θ):
∇̂θ J(θ) = (1/T) * Σ(从t=0到T-1)∇θ log π_θ(a_t|s_t) * G_t。 - 更新策略参数:沿梯度方向更新 θ:
θ_{k+1} = θ_k + α * ∇̂θ J(θ)。 - 迭代收敛:重复步骤2-5,直到目标函数 J(θ) 不再提升(如连续100轮轨迹的平均奖励稳定)。
 
优缺点:
- 优点:实现简单,无需设计价值函数,天然支持连续行动空间;
 - 缺点:梯度估计方差大(依赖单条轨迹的 G_t,不同轨迹的 G_t 波动大),样本效率低(同策略需频繁采样新轨迹,旧数据无法复用)。
 
2. A2C算法(优势演员-评论员,降低方差)
A2C(Advantage Actor-Critic)是“策略梯度”与“值函数评估”的结合,核心改进是用“优势函数”替代REINFORCE中的 G_t,大幅降低梯度估计方差,同时引入“并行采样”提升样本效率。
核心改进:优势函数 A^π(s_t,a_t)
优势函数定义为“当前动作的价值与状态平均价值的差值”,公式为:
A^π(s_t,a_t) = Q^π(s_t,a_t) - V^π(s_t)
- Q^π(s_t,a_t):状态 s_t 选动作 a_t 的行动价值(即该动作的长期收益);
 - V^π(s_t):状态 s_t 的状态价值(即该状态下所有动作的平均长期收益);
 - 含义:“选动作 a_t 比选当前策略下的平均动作好多少”——正优势表示动作优于平均,需增大选该动作的概率;负优势则相反,需减小概率。
 
详细训练步骤(双网络结构:Actor + Critic):
- 初始化双网络参数:
- Actor网络(策略网络):参数 θ,输出策略 π_θ(a|s);
 - Critic网络(价值网络):参数 φ,输出状态价值 V_φ(s)(近似 V^π(s))。
 
 - 并行采样多轨迹:用多个线程(如4个线程)同时与环境交互,每个线程用Actor的策略 π_θ 采样一条轨迹,记录 (s_t,a_t,r_t,s_{t+1})(无需完整轨迹,单步数据即可)。
 - 计算优势函数 A_t:
- 用Critic网络估计 V_φ(s_t) 和 V_φ(s_{t+1});
 - 用TD目标(即时奖励+未来价值)近似 Q^π(s_t,a_t):Q_t ≈ r_t + γ*V_φ(s_{t+1});
 - 计算优势函数:A_t = Q_t - V_φ(s_t)。
 
 - 更新双网络:
- 更新Actor(策略梯度):用优势函数计算梯度,最大化目标函数:
∇θ J(θ) ≈ E[ ∇θ log π_θ(a_t|s_t) * A_t ],沿梯度更新 θ; - 更新Critic(价值优化):最小化 Q_t 与 V_φ(s_t) 的均方误差(MSE),优化价值估计:
L(φ) = E[ (Q_t - V_φ(s_t))² ],用梯度下降更新 φ。 
 - 更新Actor(策略梯度):用优势函数计算梯度,最大化目标函数:
 - 迭代收敛:重复步骤2-4,直到Actor的策略奖励稳定、Critic的价值估计误差小于阈值。
 
优缺点:
- 优点:优势函数大幅降低梯度方差,并行采样提升样本效率,训练更稳定;
 - 缺点:需协调Actor和Critic的训练节奏(如Critic的价值估计偏差会影响Actor更新),双网络参数调优复杂度高于REINFORCE。
 
3. PPO算法(近端策略优化,主流算法)
PPO(Proximal Policy Optimization)是当前工业界最常用的直接策略搜索算法,核心改进是“限制策略更新的步长”,避免因参数变化过大导致策略突变(如从“擅长避障”突然变成“频繁碰撞”),同时支持“离线多轮优化”提升样本效率。
核心改进:剪辑目标函数(限制策略更新幅度)
PPO通过“策略比率”和“剪辑操作”控制新旧策略的差异,目标函数定义为:
L(θ) = E[ min( ρ_t(θ)A_t, clip(ρ_t(θ), 1-ε, 1+ε)A_t ) ]
- ρ_t(θ) = π_θ(a_t|s_t) / π_θold(a_t|s_t):策略比率——新策略 π_θ 与旧策略 π_θold 选当前动作 a_t 的概率比值;
 - θold:更新前的旧策略参数(固定,用于计算策略比率);
 - ε:剪辑系数(通常取0.1或0.2),限制 ρ_t(θ) 在 [1-ε, 1+ε] 范围内;
 - clip(·):剪辑操作——当 ρ_t(θ) > 1+ε 时,剪辑为 1+ε;当 ρ_t(θ) < 1-ε 时,剪辑为 1-ε;
 - 含义:若新策略选动作的概率远大于旧策略(ρ_t > 1+ε),则强制降低更新幅度,避免策略突变;若远小于旧策略(ρ_t < 1-ε),同样强制限制,保证策略更新“在安全范围内”。
 
详细训练步骤(离线优化+单网络/双网络均可):
- 采样数据并固定旧策略:用当前策略 π_θold 采样一批数据(如1000个单步样本 (s_t,a_t,r_t,A_t),优势函数 A_t 可提前用Critic计算),固定 θold。
 - 多轮离线优化策略:在固定的采样数据上,通过梯度上升最大化剪辑目标函数 L(θ),更新新策略参数 θ(可进行3-10轮优化,无需重新采样,提升样本效率)。
 - 更新Critic网络(可选):若用双网络结构,同步更新Critic的价值估计(同A2C的Critic更新逻辑)。
 - 迭代更新旧策略:将优化后的新策略参数 θ 赋值给 θold,重复步骤1-3。
 
优缺点:
- 优点:训练稳定性极高(剪辑操作避免策略突变),样本效率高(离线多轮优化),实现简单(单网络也可运行),支持离散/连续行动空间,是机器人控制、自动驾驶等场景的首选;
 - 缺点:对剪辑系数 ε 轻微敏感(需调参,通常0.1-0.2效果较好),离散空间性能略逊于基于值函数的DQN类方法。
 
三、关键技术:支撑算法性能的核心手段
直接策略搜索的性能依赖以下关键技术,解决“梯度方差大”“样本效率低”“训练不稳定”等问题:
1. 优势函数中心化(降低方差)
对计算出的优势函数 A_t 进行“中心化”处理(减去所有样本的优势函数均值),公式为:
A_t^centered = A_t - (1/N) * Σ(从i=1到N)A_i
- 作用:消除优势函数的全局偏移,进一步降低梯度估计的方差(如所有样本的优势函数均为正,中心化后部分变为负,梯度方向更精准)。
 
2. 经验回放(提升样本效率)
将历史采样的样本 (s_t,a_t,r_t,s_{t+1}) 存储在“经验回放池”中,更新策略时随机从池中采样数据(而非仅用当前策略的新数据)。
- 作用:打破样本的时间相关性(如连续步的状态动作高度相关,随机采样降低相关性),复用旧数据,提升样本效率(尤其适用于PPO等离线优化算法)。
 
3. 学习率衰减(稳定训练)
训练过程中逐渐降低学习率 α(如初始 α=0.001,每100轮衰减为原来的0.9)。
- 作用:训练初期用较大学习率快速探索参数空间,后期用较小学习率精细调整,避免参数震荡,确保收敛到稳定的最优策略。
 
四、适用场景与对比
1. 适用场景
- 连续行动空间任务:如机器人关节角度控制(需输出连续的角度值)、无人机飞行速度调节(需输出连续的速度值)——直接策略搜索天然支持连续空间,无需像值函数方法那样离散化动作;
 - 高维行动空间任务:如多智能体协作(每个智能体有多个动作,总行动空间维度高)——值函数方法需枚举所有动作计算最大值,效率低,而直接策略搜索可直接输出高维动作分布;
 - 对策略稳定性要求高的场景:如工业机器人装配(需精准、稳定的动作,不能频繁调整策略)——PPO的剪辑操作保证策略更新平稳,适合此类场景。
 
2. 与基于值函数的方法对比
| 对比维度 | 直接策略搜索(如PPO) | 基于值函数的方法(如DQN) | 
|---|---|---|
| 策略表示 | 直接参数化策略 π_θ(a | s) | 
| 行动空间支持 | 天然支持连续/高维空间 | 更适合离散空间(连续空间需额外处理) | 
| 训练稳定性 | 高(如PPO的剪辑操作) | 中等(易因价值估计偏差导致策略震荡) | 
| 样本效率 | 中高(PPO支持离线多轮优化) | 中(DQN需频繁采样新数据) | 
| 实现复杂度 | 中等(PPO单网络即可运行) | 中等(DQN需经验回放+目标网络) | 
总结
直接策略搜索的核心是“直接优化策略参数,通过梯度上升最大化奖励”,从基础的REINFORCE(简单但方差大),到A2C(用优势函数降方差),再到PPO(用剪辑操作保稳定),算法不断朝着“低方差、高效率、强稳定”演进。其最大优势是天然支持连续行动空间,是复杂控制任务(如机器人、自动驾驶)的主流选择,也是理解Actor-Critic等混合方法的基础。
。