文章目录
- 强化学习(Reinforcement Learning)
-
- 基本概念
- 状态、动作、奖励与策略
- 回报(Return):
G
t
=
∑
k
=
0
T
−
t
γ
k
r
t
+
k
+
1
G_t=\\sum_{k=0}^{T-t}\\gamma^k r_{t+k+1}
Gt=∑k=0T−tγkrt+k+1 -
- 折扣因子
γ
\\gamma
γ - Episode(回合)
- 折扣因子
- ⭐价值函数(Value Function):未来期望回报,取决于策略
π
\\pi
π -
- (1)状态价值函数
V
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
V^\\pi(s)=E_\\pi[G_t|S_t=s]
Vπ(s)=Eπ[Gt∣St=s] - (2)动作价值函数
Q
π
(
s
,
a
)
=
E
π
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
Q^\\pi(s,a)=E_\\pi[G_t|S_t=s,A_t=a]
Qπ(s,a)=Eπ[Gt∣St=s,At=a]
- (1)状态价值函数
- ⭐⭐⭐Bellman 方程:价值函数满足的递归关系。
-
- Bellman 期望方程:策略迭代
-
- 动作价值函数:
Q
π
(
s
,
a
)
=
E
[
r
(
s
,
a
,
s
′
)
+
γ
∑
a
′
π
(
a
′
∣
s
′
)
Q
π
(
s
′
,
a
′
)
]
Q^\\pi(s,a)=E[r(s,a,s')+\\gamma\\sum_{a'}\\pi(a'|s')Q^\\pi(s',a')]
Qπ(s,a)=E[r(s,a,s′)+γ∑a′π(a′∣s′)Qπ(s′,a′)] - 状态价值函数:
V
π
(
s
)
=
E
a
∼
π
E
s
′
∼
P
[
r
(
s
,
a
,
s
′
)
+
γ
V
π
(
s
′
)
]
V^\\pi(s)=E_{a\\sim\\pi}E_{s'\\sim P}[r(s,a,s')+\\gamma V^\\pi(s')]
Vπ(s)=Ea∼πEs′∼P[r(s,a,s′)+γVπ(s′)]
- 动作价值函数:
- 作用:当前状态的价值 = 当前获得奖励 + 下一状态未来价值
- Bellman 最优方程:价值迭代
- 动态规划类方法
-
- 策略迭代(Policy Iteration)
-
- (1)策略评估 Policy Evaluation:根据现有策略进行搜索
- (2)策略改进 Policy Improvement:重新更新策略
- 策略迭代流程
- 价值迭代(Value Iteration)
-
- 隐含最优策略
π
\\pi
π:只选择价值函数最大的动作
- 隐含最优策略
- 策略迭代与价值迭代区别
- 蒙特卡洛方法(Monte Carlo Method):统计学方法
-
- 概念
- 无模型方法(Model-Free Method)
- 蒙特卡洛估计价值函数:
V
π
(
s
)
≈
1
N
∑
i
=
1
N
G
t
(
i
)
V^\\pi(s) \\approx \\frac{1}{N} \\sum_{i=1}^{N}G_t^{(i)}
Vπ(s)≈N1∑i=1NGt(i) - Monte Carlo 特点
- 时间差分学习(Temporal Difference Learning, TD Learning):缓解动态规划,实时更新
-
- TD Error:
δ
t
=
r
t
+
1
+
γ
V
(
s
t
+
1
)
−
V
(
s
t
)
\\delta_t = r_{t+1} + \\gamma V(s_{t+1}) – V(s_t)
δt=rt+1+γV(st+1)−V(st) - TD 更新公式:
- TD Learning 与 Monte Carlo 区别
- On-policy 与 Off-policy 策略
-
- On-policy(同策略):当前正在学习的策略
π
\\pi
π 进行采样,并利用该策略产生的数据更新自身 - Off-policy(异策略):智能体使用一个策略产生数据,用于更新另一个策略
- On-policy(同策略):当前正在学习的策略
- TD Error:
- SARSA 算法:On-policy-时序差分算法
-
- SARSA 更新公式
- SARSA 特点:On-policy,使用同一策略采样的
(
s
,
a
,
r
,
s
′
,
a
′
)
(s,a,r,s',a')
(s,a,r,s′,a′)的更新
- Q-learning 算法:
-
- Q-learning 更新公式:
Q
(
s
,
a
)
←
Q
(
s
,
a
)
+
α
[
r
+
γ
max
a
′
Q
(
s
′
,
a
′
)
−
Q
(
s
,
a
)
]
Q(s,a)\\leftarrow Q(s,a)+\\alpha[r+\\gamma\\max_{a'}Q(s',a')-Q(s,a)]
Q(s,a)←Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)] - Q-learning 与 SARSA 区别:使用最大价值动作
max
Q
(
s
′
,
a
′
)
\\max Q(s',a')
maxQ(s′,a′),属于Off-policy
- Q-learning 更新公式:
- DQN(Deep Q-Network)
-
- 概念:DNN+Q-Learning,适合离散且状态空间有限
- 核心思想:使用神经网络近似
Q
(
s
,
a
;
θ
)
Q(s,a;\\theta)
Q(s,a;θ) - 目标函数:时序差分
L
(
θ
)
=
(
r
+
γ
max
a
′
Q
(
s
′
,
a
′
;
θ
−
)
−
Q
(
s
,
a
;
θ
)
)
2
\\mathcal{L}(\\theta)=(r+\\gamma\\max_{a'}Q(s',a';\\theta^-)-Q(s,a;\\theta))^2
L(θ)=(r+γmaxa′Q(s′,a′;θ−)−Q(s,a;θ))2 - 两个关键技术:解决样本依赖性强和自相关问题
-
- (1)经验回放(Experience Replay):存储交互数据
(
s
,
a
,
r
,
s
′
)
(s,a,r,s')
(s,a,r,s′) - (2)目标网络(Target Network):使用目标网络
Q
(
s
,
a
;
θ
−
)
Q(s,a;\\theta^-)
Q(s,a;θ−)采样和Q
(
s
,
a
;
θ
)
Q(s,a;\\theta)
Q(s,a;θ)更新
- (1)经验回放(Experience Replay):存储交互数据
- Q-learning vs DQN
-
- Q-learning 核心思想:寻找下一状态最大价值动作
- DQN 核心思想:神经网络估计,使用经验回放和双网络解决局限
- 策略梯度方法
-
- ⭐策略梯度的目标函数:
J
(
θ
)
=
E
τ
∼
p
θ
(
τ
)
[
G
0
]
J(\\theta)=\\mathbb{E}_{\\tau\\sim p_\\theta(\\tau)}[G_0]
J(θ)=Eτ∼pθ(τ)[G0] - ⭐⭐⭐策略梯度定理:目标函数的导数等于logprob的`期望`
∂
J
(
θ
)
∂
θ
=
E
τ
∼
p
θ
(
τ
)
[
∑
t
=
0
T
∂
log
π
θ
(
a
t
∣
s
t
)
∂
θ
γ
t
G
t
]
\\frac{\\partial J(\\theta)}{\\partial\\theta}=\\mathbb{E}_{\\tau\\sim p_\\theta(\\tau)}\\left[\\sum_{t=0}^{T}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)}{\\partial\\theta}\\gamma^t G_t\\right]
∂θ∂J(θ)=Eτ∼pθ(τ)[∑t=0T∂θ∂logπθ(at∣st)γtGt] - REINFORCE算法:随机采样轨迹来估计策略梯度
- 带基线的 REINFORCE:低方差版本
-
- REINFORCE缺点:不能实时计算,`策略梯度的方差大`,训练不稳定
- 引入基线的原因:策略梯度在期望条件下等价,但方差大幅度下降
- Actor-Critic:引入价值模型来估计优势函数,可以实时计算
-
- 特点:实时估计,梯度方差更小
- 三种策略梯度形式的对比
- 信赖域优化
-
- ⭐动机:样本利用差;重复利用样本时由于新旧模型差异,原来的优势估计失效
- ⭐重要性采样:如何利用旧策略采样得到的数据
- 使用旧策略,定义代理目标:
L
(
θ
)
=
E
τ
∼
P
π
θ
o
l
d
(
τ
)
[
ρ
(
θ
)
A
t
π
o
l
d
]
L(\\theta)=\\mathbb{E}_{\\tau\\sim P_{\\pi_{\\theta_{\\mathrm{old}}}}(\\tau)}\\left[\\rho(\\theta)A_t^{\\pi_{\\mathrm{old}}}\\right]
L(θ)=Eτ∼Pπθold(τ)[ρ(θ)Atπold] - 证明代理目标的梯度与原目标近似:`新旧策略在同一个信赖域中,方向仍然相同`
- ⭐PPO:经过裁剪约束信赖域,确保使用旧数据更新当前模型时,方向仍然合适
- GRPO:组内相对优势替换旧策略的优势函数
- ⭐策略梯度的目标函数:
强化学习(Reinforcement Learning)
基本概念
强化学习(Reinforcement Learning, RL)是一类通过智能体(Agent)与环境(Environment)交互,根据获得的奖励信号不断学习最优决策策略的方法。
强化学习的核心目标是:学习一个策略
π
\\pi
π,使智能体能够获得长期累计奖励最大化。
状态、动作、奖励与策略
在强化学习中:
- 状态(State):表示环境当前的情况,记为
s
s
s。 - 动作(Action):智能体根据状态采取的行为,记为
a
a
a。 - 奖励(Reward):环境给予智能体的反馈,记为
r
r
r。 - 策略(Policy):智能体选择动作的规则,记为
π
(
a
∣
s
)
\\pi(a|s)
π(a∣s)。
其中策略表示:
π
(
a
∣
s
)
\\begin{align} \\pi(a|s) \\end{align}
π(a∣s)
其中:
-
π
\\pi
π 表示策略函数; -
a
a
a 表示采取的动作; -
s
s
s 表示当前状态。
回报(Return):
G
t
=
∑
k
=
0
T
−
t
γ
k
r
t
+
k
+
1
G_t=\\sum_{k=0}^{T-t}\\gamma^k r_{t+k+1}
Gt=∑k=0T−tγkrt+k+1
回报表示从当前时间开始,未来获得奖励的累计值。
笔记中定义:
G
t
=
∑
k
=
0
T
−
t
γ
k
r
t
+
k
+
1
\\begin{align} G_t=\\sum_{k=0}^{T-t}\\gamma^k r_{t+k+1} \\end{align}
Gt=k=0∑T−tγkrt+k+1
其中:
-
G
t
G_t
Gt:时间t
t
t 时刻的累计回报; -
r
t
+
k
+
1
r_{t+k+1}
rt+k+1:未来第t
+
k
+
1
t+k+1
t+k+1 步获得的奖励; -
γ
\\gamma
γ:折扣因子,用于衡量未来奖励的重要程度; -
T
T
T:一个 episode 的终止时间。
折扣因子
γ
\\gamma
γ
折扣因子用于降低未来奖励的影响。
当:
-
γ
\\gamma
γ 接近 0:更加关注即时奖励; -
γ
\\gamma
γ 接近 1:更加关注长期收益。
Episode(回合)
Episode 指智能体从初始状态开始,与环境交互直到终止状态的一整个过程。
例如:
s
0
→
a
0
→
r
1
→
s
1
→
a
1
→
.
.
.
→
s
T
s_0 \\rightarrow a_0 \\rightarrow r_1 \\rightarrow s_1 \\rightarrow a_1 \\rightarrow … \\rightarrow s_T
s0→a0→r1→s1→a1→…→sT
其中:
-
s
0
s_0
s0:初始状态; -
s
T
s_T
sT:终止状态。
⭐价值函数(Value Function):未来期望回报,取决于策略
π
\\pi
π
价值函数用于评价某个状态或者动作未来能够获得的期望收益。
主要包括:
(1)状态价值函数
V
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
V^\\pi(s)=E_\\pi[G_t|S_t=s]
Vπ(s)=Eπ[Gt∣St=s]
定义:
V
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
\\begin{align} V^\\pi(s)=E_\\pi[G_t|S_t=s] \\end{align}
Vπ(s)=Eπ[Gt∣St=s]
其中:
-
V
π
(
s
)
V^\\pi(s)
Vπ(s):策略π
\\pi
π 下状态s
s
s 的价值; -
E
π
E_\\pi
Eπ:按照策略π
\\pi
π 计算的期望; -
G
t
G_t
Gt:未来累计回报。
含义:
状态价值函数表示:在状态
s
s
s 下,按照策略
π
\\pi
π 行动时能够获得的平均回报。
(2)动作价值函数
Q
π
(
s
,
a
)
=
E
π
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
Q^\\pi(s,a)=E_\\pi[G_t|S_t=s,A_t=a]
Qπ(s,a)=Eπ[Gt∣St=s,At=a]
定义:
Q
π
(
s
,
a
)
=
E
π
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
\\begin{align} Q^\\pi(s,a)=E_\\pi[G_t|S_t=s,A_t=a] \\end{align}
Qπ(s,a)=Eπ[Gt∣St=s,At=a]
其中:
-
Q
π
(
s
,
a
)
Q^\\pi(s,a)
Qπ(s,a):在状态s
s
s 执行动作a
a
a 后的价值; -
A
t
A_t
At:时间t
t
t 采取的动作。
含义:
动作价值函数衡量某个具体动作的长期收益。
⭐⭐⭐Bellman 方程:价值函数满足的递归关系。
Bellman 期望方程:策略迭代
动作价值函数:
Q
π
(
s
,
a
)
=
E
[
r
(
s
,
a
,
s
′
)
+
γ
∑
a
′
π
(
a
′
∣
s
′
)
Q
π
(
s
′
,
a
′
)
]
Q^\\pi(s,a)=E[r(s,a,s')+\\gamma\\sum_{a'}\\pi(a'|s')Q^\\pi(s',a')]
Qπ(s,a)=E[r(s,a,s′)+γ∑a′π(a′∣s′)Qπ(s′,a′)]
递推关系如下:
Q
π
(
s
,
a
)
=
E
[
r
(
s
,
a
,
s
′
)
+
γ
∑
a
′
π
(
a
′
∣
s
′
)
Q
π
(
s
′
,
a
′
)
]
\\begin{align} Q^\\pi(s,a) =E [ r(s,a,s') + \\gamma \\sum_{a'}\\pi(a'|s')Q^\\pi(s',a') ] \\end{align}
Qπ(s,a)=E[r(s,a,s′)+γa′∑π(a′∣s′)Qπ(s′,a′)]
其中:
-
r
(
s
,
a
,
s
′
)
r(s,a,s')
r(s,a,s′):执行动作a
a
a 后获得的即时奖励; -
γ
\\gamma
γ:折扣因子; -
π
(
a
′
∣
s
′
)
\\pi(a'|s')
π(a′∣s′):下一状态选择动作的概率; -
Q
π
(
s
′
,
a
′
)
Q^\\pi(s',a')
Qπ(s′,a′):下一状态动作价值。
状态价值函数:
V
π
(
s
)
=
E
a
∼
π
E
s
′
∼
P
[
r
(
s
,
a
,
s
′
)
+
γ
V
π
(
s
′
)
]
V^\\pi(s)=E_{a\\sim\\pi}E_{s'\\sim P}[r(s,a,s')+\\gamma V^\\pi(s')]
Vπ(s)=Ea∼πEs′∼P[r(s,a,s′)+γVπ(s′)]
递推关系如下:
V
π
(
s
)
=
E
a
∼
π
[
Q
π
(
s
,
a
)
]
\\begin{align} V^\\pi(s) =E_{a\\sim\\pi} [ Q^\\pi(s,a) ] \\end{align}
Vπ(s)=Ea∼π[Qπ(s,a)]
进一步:
V
π
(
s
)
=
E
a
∼
π
E
s
′
∼
P
[
r
(
s
,
a
,
s
′
)
+
γ
V
π
(
s
′
)
]
\\begin{align} V^\\pi(s)= E_{a\\sim\\pi} E_{s'\\sim P} [ r(s,a,s') + \\gamma V^\\pi(s') ] \\end{align}
Vπ(s)=Ea∼πEs′∼P[r(s,a,s′)+γVπ(s′)]
其中:
-
P
(
s
′
∣
s
,
a
)
P(s'|s,a)
P(s′∣s,a):状态转移概率; -
V
π
(
s
′
)
V^\\pi(s')
Vπ(s′):下一状态价值。
作用:当前状态的价值 = 当前获得奖励 + 下一状态未来价值
Bellman 方程是强化学习中的核心递推关系。
其思想是:
当前状态的价值 = 当前获得奖励 + 下一状态未来价值。
即将复杂的长期决策问题拆解为当前一步和未来一步的问题。
Bellman 最优方程:价值迭代
V
∗
(
s
)
=
max
a
∑
s
′
P
(
s
′
∣
s
,
a
)
[
r
(
s
,
a
,
s
′
)
+
γ
V
∗
(
s
′
)
]
\\begin{align} V^*(s) =\\max_a \\sum_{s'} P(s'|s,a) [ r(s,a,s') + \\gamma V^*(s') ] \\end{align}
V∗(s)=amaxs′∑P(s′∣s,a)[r(s,a,s′)+γV∗(s′)]
动态规划类方法
策略迭代(Policy Iteration)
策略迭代由两个步骤循环组成:
不断重复这两个过程,直到策略收敛。

(1)策略评估 Policy Evaluation:根据现有策略进行搜索
策略评估用于计算当前策略
π
\\pi
π 对应的价值函数
V
π
(
s
)
V^\\pi(s)
Vπ(s)。
根据 Bellman 期望方程:
V
π
(
s
)
=
∑
a
π
(
a
∣
s
)
∑
s
′
P
(
s
′
∣
s
,
a
)
[
r
(
s
,
a
,
s
′
)
+
γ
V
π
(
s
′
)
]
\\begin{align} V^\\pi(s) =\\sum_a \\pi(a|s) \\sum_{s'} P(s'|s,a) [ r(s,a,s') + \\gamma V^\\pi(s') ] \\end{align}
Vπ(s)=a∑π(a∣s)s′∑P(s′∣s,a)[r(s,a,s′)+γVπ(s′)]
其中:
-
V
π
(
s
)
V^\\pi(s)
Vπ(s):当前策略下状态价值; -
π
(
a
∣
s
)
\\pi(a|s)
π(a∣s):当前策略选择动作a
a
a 的概率; -
P
(
s
′
∣
s
,
a
)
P(s'|s,a)
P(s′∣s,a):状态转移概率; -
r
(
s
,
a
,
s
′
)
r(s,a,s')
r(s,a,s′):即时奖励; -
γ
\\gamma
γ:折扣因子。
含义:
策略评估通过不断更新价值函数,使其逼近当前策略下真实价值。
(2)策略改进 Policy Improvement:重新更新策略
利用当前价值函数选择更优动作。
动作价值函数:
Q
π
(
s
,
a
)
=
r
(
s
,
a
)
+
γ
∑
s
′
P
(
s
′
∣
s
,
a
)
V
π
(
s
′
)
\\begin{align} Q^\\pi(s,a) =r(s,a) + \\gamma \\sum_{s'} P(s'|s,a)V^\\pi(s') \\end{align}
Qπ(s,a)=r(s,a)+γs′∑P(s′∣s,a)Vπ(s′)
其中:
-
Q
π
(
s
,
a
)
Q^\\pi(s,a)
Qπ(s,a):执行动作a
a
a 后的价值; -
V
π
(
s
′
)
V^\\pi(s')
Vπ(s′):下一状态价值。
根据贪心原则更新策略:
π
′
(
s
)
=
arg
max
a
Q
π
(
s
,
a
)
\\begin{align} \\pi'(s)= \\arg\\max_a Q^\\pi(s,a) \\end{align}
π′(s)=argamaxQπ(s,a)
其中:
-
arg
max
\\arg\\max
argmax:寻找使函数取得最大值的动作; -
π
′
(
s
)
\\pi'(s)
π′(s):更新后的最优策略。
策略迭代流程
策略迭代过程:
π
→
V
π
→
π
′
→
V
π
′
→
.
.
.
\\pi \\rightarrow V^\\pi \\rightarrow \\pi' \\rightarrow V^{\\pi'} \\rightarrow …
π→Vπ→π′→Vπ′→…
即:
π
\\pi
π;
V
π
V^\\pi
Vπ;
价值迭代(Value Iteration)
价值迭代直接对价值函数进行更新,不显式进行完整策略评估。
Bellman 最优方程:
V
∗
(
s
)
=
max
a
∑
s
′
P
(
s
′
∣
s
,
a
)
[
r
(
s
,
a
,
s
′
)
+
γ
V
∗
(
s
′
)
]
\\begin{align} V^*(s) =\\max_a \\sum_{s'} P(s'|s,a) [ r(s,a,s') + \\gamma V^*(s') ] \\end{align}
V∗(s)=amaxs′∑P(s′∣s,a)[r(s,a,s′)+γV∗(s′)]
其中:
-
V
∗
(
s
)
V^*(s)
V∗(s):最优状态价值函数; -
max
a
\\max_a
maxa:选择价值最大的动作; -
P
(
s
′
∣
s
,
a
)
P(s'|s,a)
P(s′∣s,a):状态转移概率。

隐含最优策略
π
\\pi
π:只选择价值函数最大的动作
根据最优价值函数得到最优策略:
π
∗
(
s
)
=
arg
max
a
Q
∗
(
s
,
a
)
\\begin{align} \\pi^*(s) =\\arg\\max_a Q^*(s,a) \\end{align}
π∗(s)=argamaxQ∗(s,a)
其中:
-
π
∗
(
s
)
\\pi^*(s)
π∗(s):最优策略; -
Q
∗
(
s
,
a
)
Q^*(s,a)
Q∗(s,a):最优动作价值。
策略迭代与价值迭代区别
| 策略迭代 | 评估策略 → 改进策略 | 收敛快,但计算复杂 |
| 价值迭代 | 直接更新最优价值 | 计算简单,但需要更多迭代 |
蒙特卡洛方法(Monte Carlo Method):统计学方法
概念
蒙特卡洛方法是一种无模型(Model-Free)方法。
无模型方法(Model-Free Method)
无模型方法指:
不需要提前知道环境模型,包括状态转移概率
P
(
s
′
∣
s
,
a
)
P(s'|s,a)
P(s′∣s,a) 和奖励函数
R
R
R,而是通过实际采样经验学习。
与动态规划相比:
-
动态规划:
- 已知模型;
- 根据模型计算价值。
-
无模型方法:
- 不知道模型;
- 根据经验数据估计价值。
蒙特卡洛估计价值函数:
V
π
(
s
)
≈
1
N
∑
i
=
1
N
G
t
(
i
)
V^\\pi(s) \\approx \\frac{1}{N} \\sum_{i=1}^{N}G_t^{(i)}
Vπ(s)≈N1∑i=1NGt(i)
状态价值函数:
V
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
\\begin{align} V^\\pi(s) =E_\\pi[G_t|S_t=s] \\end{align}
Vπ(s)=Eπ[Gt∣St=s]
通过多次采样估计:
V
π
(
s
)
≈
1
N
∑
i
=
1
N
G
t
(
i
)
\\begin{align} V^\\pi(s) \\approx \\frac{1}{N} \\sum_{i=1}^{N} G_t^{(i)} \\end{align}
Vπ(s)≈N1i=1∑NGt(i)
其中:
-
N
N
N:采样次数; -
G
t
(
i
)
G_t^{(i)}
Gt(i):第i
i
i 次采样获得的回报。
Monte Carlo 特点
优点:
- 不需要环境模型;
- 可以处理复杂环境。
缺点:
- 必须等待一个 episode 结束;
- 方差较大;
- 学习速度较慢。
时间差分学习(Temporal Difference Learning, TD Learning):缓解动态规划,实时更新
TD 学习结合了:
- 蒙特卡洛方法;
- 动态规划方法。
特点:
不需要完整等待 episode 结束,而是在每一步利用估计值更新。
TD Error:
δ
t
=
r
t
+
1
+
γ
V
(
s
t
+
1
)
−
V
(
s
t
)
\\delta_t = r_{t+1} + \\gamma V(s_{t+1}) – V(s_t)
δt=rt+1+γV(st+1)−V(st)
δ
t
=
r
t
+
1
+
γ
V
(
s
t
+
1
)
−
V
(
s
t
)
\\begin{align} \\delta_t =r_{t+1}+\\gamma V(s_{t+1}) -V(s_t) \\end{align}
δt=rt+1+γV(st+1)−V(st)
其中:
-
δ
t
\\delta_t
δt:时间差分误差; -
r
t
+
1
r_{t+1}
rt+1:下一步奖励; -
V
(
s
t
)
V(s_t)
V(st):当前状态价值; -
V
(
s
t
+
1
)
V(s_{t+1})
V(st+1):下一状态估计价值。
TD 更新公式:
V
(
s
t
)
←
V
(
s
t
)
+
α
δ
t
\\begin{align} V(s_t) \\leftarrow V(s_t) + \\alpha \\delta_t \\end{align}
V(st)←V(st)+αδt
其中:
-
α
\\alpha
α:学习率; -
δ
t
\\delta_t
δt:价值预测误差。
TD Learning 与 Monte Carlo 区别
| Monte Carlo | 使用完整回报
G t G_t Gt |
是 |
| TD Learning | 使用一步预测误差 | 否 |
On-policy 与 Off-policy 策略
强化学习中的策略学习方法主要分为:
On-policy(同策略):当前正在学习的策略
π
\\pi
π 进行采样,并利用该策略产生的数据更新自身
On-policy 方法指:
智能体使用当前正在学习的策略
π
\\pi
π 进行采样,并利用该策略产生的数据更新自身。
即:
用当前策略产生经验,同时优化当前策略。
特点:
- 行为策略(Behavior Policy)和目标策略(Target Policy)相同;
- 学习过程更加稳定;
- 探索能力受到当前策略限制。
典型算法:
- SARSA
Off-policy(异策略):智能体使用一个策略产生数据,用于更新另一个策略
Off-policy 方法指:
智能体使用一个策略产生数据,同时利用另一个策略进行学习。
包含两个策略:
行为策略(Behavior Policy):
- 负责产生经验;
- 通常用于探索。
目标策略(Target Policy):
- 负责学习最优行为。
特点:
- 行为策略与目标策略不同;
- 可以利用历史经验;
- 可以进行经验回放。
典型算法:
- Q-learning
- DQN
SARSA 算法:On-policy-时序差分算法
SARSA 是一种典型的 On-policy 时间差分学习算法。
SARSA 名称来自五元组:
(
S
,
A
,
R
,
S
′
,
A
′
)
\\begin{align} (S,A,R,S',A') \\end{align}
(S,A,R,S′,A′)
其中:
-
S
S
S:当前状态; -
A
A
A:当前动作; -
R
R
R:获得的奖励; -
S
′
S'
S′:下一状态; -
A
′
A'
A′:下一动作。

SARSA 更新公式
SARSA 使用实际执行的下一动作
A
′
A'
A′ 进行更新:
Q
(
s
,
a
)
←
Q
(
s
,
a
)
+
α
[
r
+
γ
Q
(
s
′
,
a
′
)
−
Q
(
s
,
a
)
]
\\begin{align} Q(s,a)\\leftarrow Q(s,a)+\\alpha[r+\\gamma Q(s',a')-Q(s,a)] \\end{align}
Q(s,a)←Q(s,a)+α[r+γQ(s′,a′)−Q(s,a)]
其中:
-
Q
(
s
,
a
)
Q(s,a)
Q(s,a):当前动作价值; -
α
\\alpha
α:学习率; -
r
r
r:即时奖励; -
γ
\\gamma
γ:折扣因子; -
Q
(
s
′
,
a
′
)
Q(s',a')
Q(s′,a′):下一状态实际选择动作的价值。
SARSA 特点:On-policy,使用同一策略采样的
(
s
,
a
,
r
,
s
′
,
a
′
)
(s,a,r,s',a')
(s,a,r,s′,a′)的更新
由于 SARSA 使用当前策略选择下一动作,因此属于:
On-policy 方法。
更新过程:
(
s
,
a
,
r
,
s
′
,
a
′
)
(s,a,r,s',a')
(s,a,r,s′,a′)
即:
当前动作 → 获得奖励 → 执行下一动作 → 更新价值。
Q-learning 算法:
Q-learning 是一种经典的 Off-policy 强化学习算法。
核心思想:
利用最大化未来动作价值进行更新,而不是使用实际执行动作。
Q-learning 更新公式:
Q
(
s
,
a
)
←
Q
(
s
,
a
)
+
α
[
r
+
γ
max
a
′
Q
(
s
′
,
a
′
)
−
Q
(
s
,
a
)
]
Q(s,a)\\leftarrow Q(s,a)+\\alpha[r+\\gamma\\max_{a'}Q(s',a')-Q(s,a)]
Q(s,a)←Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)]
Q
(
s
,
a
)
←
Q
(
s
,
a
)
+
α
[
r
+
γ
max
a
′
Q
(
s
′
,
a
′
)
−
Q
(
s
,
a
)
]
\\begin{align} Q(s,a)\\leftarrow Q(s,a)+\\alpha[r+\\gamma\\max_{a'}Q(s',a')-Q(s,a)] \\end{align}
Q(s,a)←Q(s,a)+α[r+γa′maxQ(s′,a′)−Q(s,a)]
其中:
-
Q
(
s
,
a
)
Q(s,a)
Q(s,a):当前状态动作价值; -
α
\\alpha
α:学习率; -
r
r
r:即时奖励; -
γ
\\gamma
γ:折扣因子; -
max
a
′
Q
(
s
′
,
a
′
)
\\max_{a'}Q(s',a')
maxa′Q(s′,a′):下一状态中价值最大的动作。

Q-learning 与 SARSA 区别:使用最大价值动作
max
Q
(
s
′
,
a
′
)
\\max Q(s',a')
maxQ(s′,a′),属于Off-policy
| SARSA | On-policy | 使用实际执行动作
a ′ a' a′ |
| Q-learning | Off-policy | 使用最大价值动作
max Q ( s ′ , a ′ ) \\max Q(s',a') maxQ(s′,a′) |
DQN(Deep Q-Network)
概念:DNN+Q-Learning,适合离散且状态空间有限
DQN 是将:
深度神经网络(Deep Neural Network)
与:
Q-learning
结合形成的方法。
主要用于解决:
传统 Q-learning:
- 状态空间过大;
- Q 表无法存储所有状态动作价值。
的问题。
核心思想:使用神经网络近似
Q
(
s
,
a
;
θ
)
Q(s,a;\\theta)
Q(s,a;θ)
使用神经网络近似 Q 函数:
Q
(
s
,
a
;
θ
)
\\begin{align} Q(s,a;\\theta) \\end{align}
Q(s,a;θ)
其中:
-
Q
Q
Q:动作价值函数; -
s
s
s:状态; -
a
a
a:动作; -
θ
\\theta
θ:神经网络参数。
目标函数:时序差分
L
(
θ
)
=
(
r
+
γ
max
a
′
Q
(
s
′
,
a
′
;
θ
−
)
−
Q
(
s
,
a
;
θ
)
)
2
\\mathcal{L}(\\theta)=(r+\\gamma\\max_{a'}Q(s',a';\\theta^-)-Q(s,a;\\theta))^2
L(θ)=(r+γmaxa′Q(s′,a′;θ−)−Q(s,a;θ))2
DQN 使用目标网络计算目标值:
y
=
r
+
γ
max
a
′
Q
(
s
′
,
a
′
;
θ
−
)
\\begin{align} y=r+\\gamma\\max_{a'}Q(s',a';\\theta^-) \\end{align}
y=r+γa′maxQ(s′,a′;θ−)
其中:
-
y
y
y:目标 Q 值; -
r
r
r:即时奖励; -
γ
\\gamma
γ:折扣因子; -
θ
−
\\theta^-
θ−:目标网络参数。
网络训练目标:
L
(
θ
)
=
(
y
−
Q
(
s
,
a
;
θ
)
)
2
\\begin{align} L(\\theta) =(y-Q(s,a;\\theta))^2 \\end{align}
L(θ)=(y−Q(s,a;θ))2
其中:
-
L
(
θ
)
L(\\theta)
L(θ):损失函数; -
Q
(
s
,
a
;
θ
)
Q(s,a;\\theta)
Q(s,a;θ):当前网络预测值; -
y
y
y:目标值。
两个关键技术:解决样本依赖性强和自相关问题
(1)经验回放(Experience Replay):存储交互数据
(
s
,
a
,
r
,
s
′
)
(s,a,r,s')
(s,a,r,s′)
经验池存储历史交互数据:
(
s
,
a
,
r
,
s
′
)
(s,a,r,s')
(s,a,r,s′)
训练时随机采样小批量数据。
作用:
- 打破数据之间的相关性;
- 提高训练稳定性。
(2)目标网络(Target Network):使用目标网络
Q
(
s
,
a
;
θ
−
)
Q(s,a;\\theta^-)
Q(s,a;θ−)采样和
Q
(
s
,
a
;
θ
)
Q(s,a;\\theta)
Q(s,a;θ)更新
DQN 使用两个网络:
Q
(
s
,
a
;
θ
)
Q(s,a;\\theta)
Q(s,a;θ)
Q
(
s
,
a
;
θ
−
)
Q(s,a;\\theta^-)
Q(s,a;θ−)
目标网络参数定期复制当前网络参数。
作用:
- 减少目标值不断变化;
- 提高训练稳定性。
Q-learning vs DQN
Q-learning 核心思想:寻找下一状态最大价值动作
通过:
max
a
′
Q
(
s
′
,
a
′
)
\\max_{a'}Q(s',a')
a′maxQ(s′,a′)
寻找下一状态最大价值动作。
DQN 核心思想:神经网络估计,使用经验回放和双网络解决局限
通过深度神经网络:
Q
(
s
,
a
;
θ
)
Q(s,a;\\theta)
Q(s,a;θ)
代替传统 Q 表,实现大规模状态空间下的强化学习。

策略梯度方法
为便于统一记号,下面将状态记为向量
s
t
∈
R
d
s
\\mathbf{s}_t\\in\\mathbb{R}^{d_s}
st∈Rds,动作记为向量
a
t
∈
R
d
a
\\mathbf{a}_t\\in\\mathbb{R}^{d_a}
at∈Rda,奖励
r
t
∈
R
r_t\\in\\mathbb{R}
rt∈R 为标量,轨迹记为
τ
\\tau
τ。这只是在上下文中统一符号,公式结构保持原笔记含义不变。
⭐策略梯度的目标函数:
J
(
θ
)
=
E
τ
∼
p
θ
(
τ
)
[
G
0
]
J(\\theta)=\\mathbb{E}_{\\tau\\sim p_\\theta(\\tau)}[G_0]
J(θ)=Eτ∼pθ(τ)[G0]
目标是让任意轨迹
τ
∼
p
θ
(
τ
)
\\tau\\sim p_\\theta(\\tau)
τ∼pθ(τ) 下的累计回报期望尽量大。原笔记中将它写成策略梯度的优化目标。
J
(
θ
)
=
E
τ
∼
p
θ
(
τ
)
[
G
0
]
,
G
0
=
∑
t
=
0
T
−
1
γ
t
r
t
+
1
\\begin{align} J(\\theta)=\\mathbb{E}_{\\tau\\sim p_\\theta(\\tau)}[G_0],\\qquad G_0=\\sum_{t=0}^{T-1}\\gamma^t r_{t+1} \\end{align}
J(θ)=Eτ∼pθ(τ)[G0],G0=t=0∑T−1γtrt+1
其中,
θ
\\theta
θ 是策略参数,
p
θ
(
τ
)
p_\\theta(\\tau)
pθ(τ) 是由策略
π
θ
\\pi_\\theta
πθ 诱导出的轨迹分布,
G
0
G_0
G0 是从初始时刻开始的折扣累计回报,
γ
∈
(
0
,
1
]
\\gamma\\in(0,1]
γ∈(0,1] 是折扣因子。
⭐⭐⭐策略梯度定理:目标函数的导数等于logprob的期望
∂
J
(
θ
)
∂
θ
=
E
τ
∼
p
θ
(
τ
)
[
∑
t
=
0
T
∂
log
π
θ
(
a
t
∣
s
t
)
∂
θ
γ
t
G
t
]
\\frac{\\partial J(\\theta)}{\\partial\\theta}=\\mathbb{E}_{\\tau\\sim p_\\theta(\\tau)}\\left[\\sum_{t=0}^{T}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)}{\\partial\\theta}\\gamma^t G_t\\right]
∂θ∂J(θ)=Eτ∼pθ(τ)[∑t=0T∂θ∂logπθ(at∣st)γtGt]
策略梯度定理的核心是把梯度导数改写成关于轨迹分布的期望形式,便于后续做采样估计。
∂
J
(
θ
)
∂
θ
=
∂
∂
θ
∫
p
θ
(
τ
)
G
0
d
τ
=
∫
1
p
θ
(
τ
)
p
θ
(
τ
)
∂
p
θ
(
τ
)
∂
θ
G
0
d
τ
=
∫
p
θ
(
τ
)
∂
log
p
θ
(
τ
)
∂
θ
G
0
d
τ
=
E
τ
∼
p
θ
(
τ
)
[
∂
log
p
θ
(
τ
)
∂
θ
G
0
]
\\begin{align} \\frac{\\partial J(\\theta)}{\\partial\\theta} &=\\frac{\\partial}{\\partial\\theta}\\int p_\\theta(\\tau)G_0\\,d\\tau\\\\ &=\\int \\frac{1}{p_\\theta(\\tau)}p_\\theta(\\tau)\\frac{\\partial p_\\theta(\\tau)}{\\partial\\theta}G_0\\,d\\tau\\\\ &=\\int p_\\theta(\\tau)\\frac{\\partial\\log p_\\theta(\\tau)}{\\partial\\theta}G_0\\,d\\tau\\\\ &=\\mathbb{E}_{\\tau\\sim p_\\theta(\\tau)}\\left[\\frac{\\partial\\log p_\\theta(\\tau)}{\\partial\\theta}G_0\\right] \\end{align}
∂θ∂J(θ)=∂θ∂∫pθ(τ)G0dτ=∫pθ(τ)1pθ(τ)∂θ∂pθ(τ)G0dτ=∫pθ(τ)∂θ∂logpθ(τ)G0dτ=Eτ∼pθ(τ)[∂θ∂logpθ(τ)G0]
其中,
log
p
θ
(
τ
)
\\log p_\\theta(\\tau)
logpθ(τ) 的梯度来自对数导数技巧,最后一行把积分改写成了对轨迹分布的期望。
轨迹分布可分解为初始状态分布、策略分布和环境转移分布的乘积。
p
θ
(
τ
)
=
p
(
s
0
)
∏
t
=
0
T
−
1
π
θ
(
a
t
∣
s
t
)
p
(
s
t
+
1
∣
s
t
,
a
t
)
\\begin{align} p_\\theta(\\tau)=p(\\mathbf{s}_0)\\prod_{t=0}^{T-1}\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)p(\\mathbf{s}_{t+1}|\\mathbf{s}_t,\\mathbf{a}_t) \\end{align}
pθ(τ)=p(s0)t=0∏T−1πθ(at∣st)p(st+1∣st,at)
其中,
p
(
s
0
)
p(\\mathbf{s}_0)
p(s0) 是初始状态分布,
π
θ
(
a
t
∣
s
t
)
\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)
πθ(at∣st) 是策略,
p
(
s
t
+
1
∣
s
t
,
a
t
)
p(\\mathbf{s}_{t+1}|\\mathbf{s}_t,\\mathbf{a}_t)
p(st+1∣st,at) 是环境转移概率。
继续展开后,可以把与环境无关的部分单独保留为策略项。
∂
J
(
θ
)
∂
θ
=
E
τ
∼
p
θ
(
τ
)
[
∂
∂
θ
(
log
p
(
s
0
)
+
∑
t
=
0
T
−
1
log
π
θ
(
a
t
∣
s
t
)
+
∑
t
=
0
T
−
1
log
p
(
s
t
+
1
∣
s
t
,
a
t
)
)
G
0
]
=
E
τ
∼
p
θ
(
τ
)
[
∂
∂
θ
(
∑
t
=
0
T
−
1
log
π
θ
(
a
t
∣
s
t
)
)
G
0
]
\\begin{align} \\frac{\\partial J(\\theta)}{\\partial\\theta} &=\\mathbb{E}_{\\tau\\sim p_\\theta(\\tau)}\\left[\\frac{\\partial}{\\partial\\theta}\\left(\\log p(\\mathbf{s}_0)+\\sum_{t=0}^{T-1}\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)+\\sum_{t=0}^{T-1}\\log p(\\mathbf{s}_{t+1}|\\mathbf{s}_t,\\mathbf{a}_t)\\right)G_0\\right]\\\\ &=\\mathbb{E}_{\\tau\\sim p_\\theta(\\tau)}\\left[\\frac{\\partial}{\\partial\\theta}\\left(\\sum_{t=0}^{T-1}\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)\\right)G_0\\right] \\end{align}
∂θ∂J(θ)=Eτ∼pθ(τ)[∂θ∂(logp(s0)+t=0∑T−1logπθ(at∣st)+t=0∑T−1logp(st+1∣st,at))G0]=Eτ∼pθ(τ)[∂θ∂(t=0∑T−1logπθ(at∣st))G0]
其中,
log
p
(
s
0
)
\\log p(\\mathbf{s}_0)
logp(s0) 和
log
p
(
s
t
+
1
∣
s
t
,
a
t
)
\\log p(\\mathbf{s}_{t+1}|\\mathbf{s}_t,\\mathbf{a}_t)
logp(st+1∣st,at) 不依赖于
θ
\\theta
θ,因此求导后消失。
原笔记进一步把每个时刻的权重改写成与当前时刻之后奖励相关的形式。
∂
J
(
θ
)
∂
θ
=
E
τ
∼
p
θ
(
τ
)
[
∑
t
=
0
T
−
1
∂
log
π
θ
(
a
t
∣
s
t
)
∂
θ
γ
t
G
t
]
\\begin{align} \\frac{\\partial J(\\theta)}{\\partial\\theta} =\\mathbb{E}_{\\tau\\sim p_\\theta(\\tau)}\\left[\\sum_{t=0}^{T-1}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)}{\\partial\\theta}\\gamma^t G_t\\right] \\end{align}
∂θ∂J(θ)=Eτ∼pθ(τ)[t=0∑T−1∂θ∂logπθ(at∣st)γtGt]
其中,
G
t
G_t
Gt 表示从时刻
t
t
t 开始的折扣回报;这一步的直观含义是,时刻
t
t
t 的动作只需要对它之后的奖励负责。
重点
更合理的权重只与当前时刻之后的奖励有关。
REINFORCE算法:随机采样轨迹来估计策略梯度
Reinforce 是最直接的策略梯度方法。它先采样完整轨迹,再把轨迹上的回报作为梯度估计的权重。
τ
=
(
s
0
,
a
0
,
s
1
,
r
1
,
…
,
s
T
−
1
,
a
T
−
1
,
s
T
)
\\begin{align} \\tau=(\\mathbf{s}_0,\\mathbf{a}_0,\\mathbf{s}_1,r_1,\\ldots,\\mathbf{s}_{T-1},\\mathbf{a}_{T-1},\\mathbf{s}_T) \\end{align}
τ=(s0,a0,s1,r1,…,sT−1,aT−1,sT)
其中,
τ
\\tau
τ 是一条完整轨迹,包含状态、动作与中间奖励。
G
t
=
∑
t
′
=
t
T
−
1
γ
t
′
−
t
r
t
′
+
1
\\begin{align} G_t=\\sum_{t'=t}^{T-1}\\gamma^{t'-t}r_{t'+1} \\end{align}
Gt=t′=t∑T−1γt′−trt′+1
其中,
G
t
G_t
Gt 是从时刻
t
t
t 开始向后的折扣累计回报,
t
′
t'
t′ 是求和用的时间下标。
∂
J
(
θ
)
∂
θ
=
E
τ
∼
p
θ
(
τ
)
[
∑
t
=
0
T
−
1
∂
log
π
θ
(
a
t
∣
s
t
)
∂
θ
γ
t
G
t
]
≈
∑
t
=
0
T
−
1
∂
log
π
θ
(
a
t
∣
s
t
)
∂
θ
γ
t
G
t
\\begin{align} \\frac{\\partial J(\\theta)}{\\partial\\theta} =\\mathbb{E}_{\\tau\\sim p_\\theta(\\tau)}\\left[\\sum_{t=0}^{T-1}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)}{\\partial\\theta}\\gamma^t G_t\\right] \\approx \\sum_{t=0}^{T-1}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)}{\\partial\\theta}\\gamma^t G_t \\end{align}
∂θ∂J(θ)=Eτ∼pθ(τ)[t=0∑T−1∂θ∂logπθ(at∣st)γtGt]≈t=0∑T−1∂θ∂logπθ(at∣st)γtGt
其中,右侧最后一项是用单条采样轨迹得到的随机梯度近似。

θ
⇐
θ
+
α
∂
J
(
θ
)
∂
θ
\\begin{align} \\theta\\Leftarrow\\theta+\\alpha\\frac{\\partial J(\\theta)}{\\partial\\theta} \\end{align}
θ⇐θ+α∂θ∂J(θ)
其中,
α
\\alpha
α 是策略参数的学习率。
重点
Reinforce 的梯度估计高方差。
带基线的 REINFORCE:低方差版本
原笔记在 Reinforce 上引入了状态价值基线
V
ϕ
(
s
t
)
V_\\phi(\\mathbf{s}_t)
Vϕ(st),用它减小方差。
G
t
⇐
G
t
−
V
ϕ
(
s
t
)
\\begin{align} G_t\\Leftarrow G_t-V_\\phi(\\mathbf{s}_t) \\end{align}
Gt⇐Gt−Vϕ(st)
其中,
V
ϕ
(
s
t
)
V_\\phi(\\mathbf{s}_t)
Vϕ(st) 是由参数
ϕ
\\phi
ϕ 表示的状态价值函数。
先更新价值网络,使它逼近回报。
L
ϕ
(
s
t
,
π
θ
)
=
(
G
t
−
V
ϕ
(
s
t
)
)
2
\\begin{align} L_\\phi(\\mathbf{s}_t,\\pi_\\theta)=\\left(G_t-V_\\phi(\\mathbf{s}_t)\\right)^2 \\end{align}
Lϕ(st,πθ)=(Gt−Vϕ(st))2
其中,
L
ϕ
L_\\phi
Lϕ 是价值函数的回归损失,目标是让
V
ϕ
(
s
t
)
V_\\phi(\\mathbf{s}_t)
Vϕ(st) 贴近采样回报
G
t
G_t
Gt。
再用去基线后的回报更新策略。
∂
J
(
θ
)
∂
θ
≈
∑
t
=
0
T
−
1
∂
log
π
θ
(
a
t
∣
s
t
)
∂
θ
γ
t
(
G
t
−
V
ϕ
(
s
t
)
)
\\begin{align} \\frac{\\partial J(\\theta)}{\\partial\\theta} \\approx \\sum_{t=0}^{T-1}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)}{\\partial\\theta}\\gamma^t\\left(G_t-V_\\phi(\\mathbf{s}_t)\\right) \\end{align}
∂θ∂J(θ)≈t=0∑T−1∂θ∂logπθ(at∣st)γt(Gt−Vϕ(st))
其中,
G
t
−
V
ϕ
(
s
t
)
G_t-V_\\phi(\\mathbf{s}_t)
Gt−Vϕ(st) 可以理解为一个更稳定的优势估计。
REINFORCE缺点:不能实时计算,策略梯度的方差大,训练不稳定
重点
不能实时计算。 这里仍然需要完整轨迹上的
G
t
G_t
Gt,所以更新方式依旧偏离线。
笔记中的结论
轨迹样本集合
{
τ
(
n
)
}
n
=
1
N
\\{\\tau^{(n)}\\}_{n=1}^N
{τ(n)}n=1N 的方差较大,训练容易不稳定,因此引入基线来减小梯度方差。

引入基线的原因:策略梯度在期望条件下等价,但方差大幅度下降
原笔记把基线写成一个不改变期望、但尽量减小方差的函数
b
(
s
t
)
b(\\mathbf{s}_t)
b(st)。
E
[
∑
t
=
0
T
−
1
∂
log
π
θ
(
a
t
∣
s
t
)
∂
θ
γ
t
G
t
]
=
E
[
∑
t
=
0
T
−
1
∂
log
π
θ
(
a
t
∣
s
t
)
∂
θ
γ
t
(
G
t
−
b
(
s
t
)
)
]
\\begin{align} \\mathbb{E}\\left[\\sum_{t=0}^{T-1}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)}{\\partial\\theta}\\gamma^t G_t\\right] =\\mathbb{E}\\left[\\sum_{t=0}^{T-1}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)}{\\partial\\theta}\\gamma^t\\left(G_t-b(\\mathbf{s}_t)\\right)\\right] \\end{align}
E[t=0∑T−1∂θ∂logπθ(at∣st)γtGt]=E[t=0∑T−1∂θ∂logπθ(at∣st)γt(Gt−b(st))]
其中,
b
(
s
t
)
b(\\mathbf{s}_t)
b(st) 只依赖状态,不依赖动作,因此在合适条件下不会改变梯度期望。
min
Var
τ
∼
p
θ
(
τ
)
[
∑
t
=
0
T
−
1
∂
log
π
θ
(
a
t
∣
s
t
)
∂
θ
γ
t
(
G
t
−
b
(
s
t
)
)
]
\\begin{align} \\min \\operatorname{Var}_{\\tau\\sim p_\\theta(\\tau)}\\left[\\sum_{t=0}^{T-1}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)}{\\partial\\theta}\\gamma^t\\left(G_t-b(\\mathbf{s}_t)\\right)\\right] \\end{align}
minVarτ∼pθ(τ)[t=0∑T−1∂θ∂logπθ(at∣st)γt(Gt−b(st))]
其中,目标是在保持无偏的同时,让梯度估计的方差尽量小。
A
π
(
s
t
,
a
t
)
=
G
t
−
b
(
s
t
)
\\begin{align} A^\\pi(\\mathbf{s}_t,\\mathbf{a}_t)=G_t-b(\\mathbf{s}_t) \\end{align}
Aπ(st,at)=Gt−b(st)
其中,
A
π
(
s
t
,
a
t
)
A^\\pi(\\mathbf{s}_t,\\mathbf{a}_t)
Aπ(st,at) 是优势函数,用来衡量动作相对基线的好坏。
重点
梯度方差更小,但期望不变。
Actor-Critic:引入价值模型来估计优势函数,可以实时计算
Actor-Critic 的想法是实时地用 Critic 估计优势,再由 Actor 更新策略。原笔记把它写成“即时梯度”形式。
(
s
t
,
a
t
,
s
t
+
1
,
r
t
+
1
)
\\begin{align} (\\mathbf{s}_t,\\mathbf{a}_t,\\mathbf{s}_{t+1},r_{t+1}) \\end{align}
(st,at,st+1,rt+1)
其中,这个四元组是一次在线交互得到的局部样本。
Actor 使用 TD 误差替代完整回报。
∂
J
(
θ
)
∂
θ
≈
∂
∂
θ
[
log
π
θ
(
a
t
∣
s
t
)
γ
t
(
V
ϕ
(
s
t
+
1
)
+
r
t
+
1
−
V
ϕ
(
s
t
)
)
]
\\begin{align} \\frac{\\partial J(\\theta)}{\\partial\\theta} \\approx \\frac{\\partial}{\\partial\\theta}\\left[\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)\\gamma^t\\left(V_\\phi(\\mathbf{s}_{t+1})+r_{t+1}-V_\\phi(\\mathbf{s}_t)\\right)\\right] \\end{align}
∂θ∂J(θ)≈∂θ∂[logπθ(at∣st)γt(Vϕ(st+1)+rt+1−Vϕ(st))]
其中,
V
ϕ
(
s
t
+
1
)
+
r
t
+
1
−
V
ϕ
(
s
t
)
V_\\phi(\\mathbf{s}_{t+1})+r_{t+1}-V_\\phi(\\mathbf{s}_t)
Vϕ(st+1)+rt+1−Vϕ(st) 是一步 TD 误差,也可看成优势估计。
θ
⇐
θ
+
α
∂
J
(
θ
)
∂
θ
\\begin{align} \\theta\\Leftarrow\\theta+\\alpha\\frac{\\partial J(\\theta)}{\\partial\\theta} \\end{align}
θ⇐θ+α∂θ∂J(θ)
其中,
α
\\alpha
α 是 Actor 的学习率。
Critic 则拟合 TD 目标。
L
ϕ
(
s
t
+
1
,
s
t
)
=
∥
r
t
+
1
+
γ
V
ϕ
(
s
t
+
1
)
−
V
ϕ
(
s
t
)
∥
2
\\begin{align} L_\\phi(\\mathbf{s}_{t+1},\\mathbf{s}_t)=\\left\\|r_{t+1}+\\gamma V_\\phi(\\mathbf{s}_{t+1})-V_\\phi(\\mathbf{s}_t)\\right\\|_2 \\end{align}
Lϕ(st+1,st)=∥rt+1+γVϕ(st+1)−Vϕ(st)∥2
其中,
L
ϕ
L_\\phi
Lϕ 是 Critic 的损失,原笔记按
ℓ
2
\\ell_2
ℓ2 范数形式记录了 TD 误差。
ϕ
⇐
ϕ
+
β
∂
L
ϕ
∂
ϕ
\\begin{align} \\phi\\Leftarrow\\phi+\\beta\\frac{\\partial L_\\phi}{\\partial\\phi} \\end{align}
ϕ⇐ϕ+β∂ϕ∂Lϕ
其中,
β
\\beta
β 是 Critic 的学习率;这里更新方向保持原笔记记法不变。
此时,优势函数可写成如下形式。
A
π
(
s
t
,
a
t
)
=
V
ϕ
(
s
t
+
1
)
+
r
t
+
1
−
V
ϕ
(
s
t
)
=
Q
ϕ
(
s
t
,
a
t
)
−
V
ϕ
(
s
t
)
\\begin{align} A^\\pi(\\mathbf{s}_t,\\mathbf{a}_t)=V_\\phi(\\mathbf{s}_{t+1})+r_{t+1}-V_\\phi(\\mathbf{s}_t)=Q_\\phi(\\mathbf{s}_t,\\mathbf{a}_t)-V_\\phi(\\mathbf{s}_t) \\end{align}
Aπ(st,at)=Vϕ(st+1)+rt+1−Vϕ(st)=Qϕ(st,at)−Vϕ(st)
其中,
Q
ϕ
(
s
t
,
a
t
)
Q_\\phi(\\mathbf{s}_t,\\mathbf{a}_t)
Qϕ(st,at) 表示动作价值,
V
ϕ
(
s
t
)
V_\\phi(\\mathbf{s}_t)
Vϕ(st) 表示状态价值。
重点
这里没有显式的
G
t
G_t
Gt,说明方法可以做实时更新。

特点:实时估计,梯度方差更小
三种策略梯度形式的对比
为了和原笔记右页总结对应,这里把三种常见形式并列整理一下。
∂
J
R
e
i
n
f
o
r
c
e
(
θ
)
∂
θ
≈
∑
t
=
0
T
−
1
∂
log
π
θ
(
a
t
∣
s
t
)
∂
θ
γ
t
G
t
\\begin{align} \\frac{\\partial J_{\\mathrm{Reinforce}}(\\theta)}{\\partial\\theta} \\approx \\sum_{t=0}^{T-1}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)}{\\partial\\theta}\\gamma^t G_t \\end{align}
∂θ∂JReinforce(θ)≈t=0∑T−1∂θ∂logπθ(at∣st)γtGt
其中,Reinforce 直接使用采样回报
G
t
G_t
Gt,实现简单,但 方差较高。
∂
J
B
a
s
e
l
i
n
e
(
θ
)
∂
θ
≈
∑
t
=
0
T
−
1
∂
log
π
θ
(
a
t
∣
s
t
)
∂
θ
γ
t
(
G
t
−
V
ϕ
(
s
t
)
)
\\begin{align} \\frac{\\partial J_{\\mathrm{Baseline}}(\\theta)}{\\partial\\theta} \\approx \\sum_{t=0}^{T-1}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)}{\\partial\\theta}\\gamma^t\\left(G_t-V_\\phi(\\mathbf{s}_t)\\right) \\end{align}
∂θ∂JBaseline(θ)≈t=0∑T−1∂θ∂logπθ(at∣st)γt(Gt−Vϕ(st))
其中,带基线的 Reinforce 用
V
ϕ
(
s
t
)
V_\\phi(\\mathbf{s}_t)
Vϕ(st) 降低方差,期望保持不变。
∂
J
A
2
C
(
θ
)
∂
θ
≈
∂
∂
θ
[
log
π
θ
(
a
t
∣
s
t
)
(
V
ϕ
(
s
t
+
1
)
+
r
t
+
1
−
V
ϕ
(
s
t
)
)
γ
t
]
\\begin{align} \\frac{\\partial J_{\\mathrm{A2C}}(\\theta)}{\\partial\\theta} \\approx \\frac{\\partial}{\\partial\\theta}\\left[\\log\\pi_\\theta(\\mathbf{a}_t|\\mathbf{s}_t)\\left(V_\\phi(\\mathbf{s}_{t+1})+r_{t+1}-V_\\phi(\\mathbf{s}_t)\\right)\\gamma^t\\right] \\end{align}
∂θ∂JA2C(θ)≈∂θ∂[logπθ(at∣st)(Vϕ(st+1)+rt+1−Vϕ(st))γt]
其中,A2C 用 TD 误差近似优势,能够继续用于 PPO 等后续方法。
信赖域优化
⭐动机:样本利用差;重复利用样本时由于新旧模型差异,原来的优势估计失效
原笔记指出,普通策略梯度还存在更新幅度和样本利用率方面的问题。
- 更新步子可能过大,容易越界。
- 当前样本的更新时效较短,常常“即用即弃”。
- 缺少显式约束。
⭐重要性采样:如何利用旧策略采样得到的数据
为复用旧样本,可以把新策略下的期望转成旧策略分布下的期望。
E
τ
∼
P
π
θ
(
τ
)
[
A
t
π
(
s
,
a
)
]
=
E
τ
∼
P
π
θ
o
l
d
(
τ
)
[
π
θ
(
a
∣
s
)
π
θ
o
l
d
(
a
∣
s
)
A
t
π
o
l
d
(
s
,
a
)
]
\\begin{align} \\mathbb{E}_{\\tau\\sim P_{\\pi_\\theta}(\\tau)}\\left[A_t^{\\pi}(\\mathbf{s},\\mathbf{a})\\right] =\\mathbb{E}_{\\tau\\sim P_{\\pi_{\\theta_{\\mathrm{old}}}}(\\tau)}\\left[\\frac{\\pi_\\theta(\\mathbf{a}|\\mathbf{s})}{\\pi_{\\theta_{\\mathrm{old}}}(\\mathbf{a}|\\mathbf{s})}A_t^{\\pi_{\\mathrm{old}}}(\\mathbf{s},\\mathbf{a})\\right] \\end{align}
Eτ∼Pπθ(τ)[Atπ(s,a)]=Eτ∼Pπθold(τ)[πθold(a∣s)πθ(a∣s)Atπold(s,a)]
其中,
P
π
θ
(
τ
)
P_{\\pi_\\theta}(\\tau)
Pπθ(τ) 和
P
π
θ
o
l
d
(
τ
)
P_{\\pi_{\\theta_{\\mathrm{old}}}}(\\tau)
Pπθold(τ) 分别是新旧策略诱导的轨迹分布。
ρ
(
θ
)
=
π
θ
(
a
∣
s
)
π
θ
o
l
d
(
a
∣
s
)
\\begin{align} \\rho(\\theta)=\\frac{\\pi_\\theta(\\mathbf{a}|\\mathbf{s})}{\\pi_{\\theta_{\\mathrm{old}}}(\\mathbf{a}|\\mathbf{s})} \\end{align}
ρ(θ)=πθold(a∣s)πθ(a∣s)
其中,
ρ
(
θ
)
\\rho(\\theta)
ρ(θ) 是重要性因子,也就是原笔记里的“重要性因子”。
使用旧策略,定义代理目标:
L
(
θ
)
=
E
τ
∼
P
π
θ
o
l
d
(
τ
)
[
ρ
(
θ
)
A
t
π
o
l
d
]
L(\\theta)=\\mathbb{E}_{\\tau\\sim P_{\\pi_{\\theta_{\\mathrm{old}}}}(\\tau)}\\left[\\rho(\\theta)A_t^{\\pi_{\\mathrm{old}}}\\right]
L(θ)=Eτ∼Pπθold(τ)[ρ(θ)Atπold]
于是可以定义代理目标。
L
(
θ
)
=
E
τ
∼
P
π
θ
o
l
d
(
τ
)
[
ρ
(
θ
)
A
t
π
o
l
d
]
\\begin{align} L(\\theta)=\\mathbb{E}_{\\tau\\sim P_{\\pi_{\\theta_{\\mathrm{old}}}}(\\tau)}\\left[\\rho(\\theta)A_t^{\\pi_{\\mathrm{old}}}\\right] \\end{align}
L(θ)=Eτ∼Pπθold(τ)[ρ(θ)Atπold]
其中,
A
t
π
o
l
d
A_t^{\\pi_{\\mathrm{old}}}
Atπold 是在旧策略下估计出的优势。
证明代理目标的梯度与原目标近似:新旧策略在同一个信赖域中,方向仍然相同
其梯度可按原笔记推成如下形式。
∂
L
(
θ
)
∂
θ
=
∂
∂
θ
∫
P
π
θ
o
l
d
(
τ
)
ρ
(
θ
)
A
t
π
o
l
d
d
τ
=
∫
P
π
θ
o
l
d
(
τ
)
∂
π
θ
(
a
∣
s
)
∂
θ
1
π
θ
o
l
d
(
a
∣
s
)
A
t
π
o
l
d
d
τ
=
∫
P
π
θ
o
l
d
(
τ
)
π
θ
(
a
∣
s
)
π
θ
o
l
d
(
a
∣
s
)
∂
log
π
θ
(
a
∣
s
)
∂
θ
A
t
π
o
l
d
d
τ
=
E
τ
∼
P
π
θ
o
l
d
(
τ
)
[
ρ
(
θ
)
∂
log
π
θ
(
a
∣
s
)
∂
θ
A
t
π
o
l
d
]
\\begin{align} \\frac{\\partial L(\\theta)}{\\partial\\theta} &=\\frac{\\partial}{\\partial\\theta}\\int P_{\\pi_{\\theta_{\\mathrm{old}}}}(\\tau)\\rho(\\theta)A_t^{\\pi_{\\mathrm{old}}}\\,d\\tau\\\\ &=\\int P_{\\pi_{\\theta_{\\mathrm{old}}}}(\\tau)\\frac{\\partial\\pi_\\theta(\\mathbf{a}|\\mathbf{s})}{\\partial\\theta}\\frac{1}{\\pi_{\\theta_{\\mathrm{old}}}(\\mathbf{a}|\\mathbf{s})}A_t^{\\pi_{\\mathrm{old}}}\\,d\\tau\\\\ &=\\int P_{\\pi_{\\theta_{\\mathrm{old}}}}(\\tau)\\frac{\\pi_\\theta(\\mathbf{a}|\\mathbf{s})}{\\pi_{\\theta_{\\mathrm{old}}}(\\mathbf{a}|\\mathbf{s})}\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}|\\mathbf{s})}{\\partial\\theta}A_t^{\\pi_{\\mathrm{old}}}\\,d\\tau\\\\ &=\\mathbb{E}_{\\tau\\sim P_{\\pi_{\\theta_{\\mathrm{old}}}}(\\tau)}\\left[\\rho(\\theta)\\frac{\\partial\\log\\pi_\\theta(\\mathbf{a}|\\mathbf{s})}{\\partial\\theta}A_t^{\\pi_{\\mathrm{old}}}\\right] \\end{align}
∂θ∂L(θ)=∂θ∂∫Pπθold(τ)ρ(θ)Atπolddτ=∫Pπθold(τ)∂θ∂πθ(a∣s)πθold(a∣s)1Atπolddτ=∫Pπθold(τ)πθold(a∣s)πθ(a∣s)∂θ∂logπθ(a∣s)Atπolddτ=Eτ∼Pπθold(τ)[ρ(θ)∂θ∂logπθ(a∣s)Atπold]
其中,这个式子说明优化方向与策略梯度形式相近,但采样分布已经切换为旧策略。
重点
旧轨迹可以复用,方向也与原始策略梯度保持接近。
⭐PPO:经过裁剪约束信赖域,确保使用旧数据更新当前模型时,方向仍然合适
PPO 先从重要性采样的代理目标出发,再加上裁剪约束近似信赖域。
L
(
θ
)
=
E
τ
∼
π
θ
o
l
d
[
ρ
(
θ
)
A
t
π
o
l
d
(
s
,
a
)
]
\\begin{align} L(\\theta)=\\mathbb{E}_{\\tau\\sim \\pi_{\\theta_{\\mathrm{old}}}}\\left[\\rho(\\theta)A_t^{\\pi_{\\mathrm{old}}}(\\mathbf{s},\\mathbf{a})\\right] \\end{align}
L(θ)=Eτ∼πθold[ρ(θ)Atπold(s,a)]
其中,
ρ
(
θ
)
\\rho(\\theta)
ρ(θ) 若不加约束,就不能保证满足信赖域条件。
重点
若
ρ
(
θ
)
\\rho(\\theta)
ρ(θ) 不受约束,则
∂
L
(
θ
)
∂
θ
≈
∂
J
(
θ
)
∂
θ
\\frac{\\partial L(\\theta)}{\\partial\\theta}\\approx\\frac{\\partial J(\\theta)}{\\partial\\theta}
∂θ∂L(θ)≈∂θ∂J(θ) 的条件近似并不可靠。
PPO 的裁剪目标按原笔记写为:
L
P
P
O
(
θ
)
=
E
τ
∼
π
θ
o
l
d
[
min
(
ρ
(
θ
)
A
t
π
o
l
d
(
s
,
a
)
,
clip
(
ρ
(
θ
)
,
1
−
ξ
,
1
+
ξ
)
A
t
π
o
l
d
(
s
,
a
)
)
]
\\begin{align} L_{\\mathrm{PPO}}(\\theta)=\\mathbb{E}_{\\tau\\sim \\pi_{\\theta_{\\mathrm{old}}}}\\left[\\min\\left(\\rho(\\theta)A_t^{\\pi_{\\mathrm{old}}}(\\mathbf{s},\\mathbf{a}),\\operatorname{clip}\\left(\\rho(\\theta),1-\\xi,1+\\xi\\right)A_t^{\\pi_{\\mathrm{old}}}(\\mathbf{s},\\mathbf{a})\\right)\\right] \\end{align}
LPPO(θ)=Eτ∼πθold[min(ρ(θ)Atπold(s,a),clip(ρ(θ),1−ξ,1+ξ)Atπold(s,a))]
其中,
ξ
\\xi
ξ 是裁剪半径,
clip
(
⋅
)
\\operatorname{clip}(\\cdot)
clip(⋅) 把重要性因子限制在固定区间内。
ρ
(
θ
)
∈
[
1
−
ξ
,
1
+
ξ
]
\\begin{align} \\rho(\\theta)\\in[1-\\xi,1+\\xi] \\end{align}
ρ(θ)∈[1−ξ,1+ξ]
其中,这个区间就是 PPO 对更新幅度施加的软约束。
A
t
π
o
l
d
(
s
,
a
)
⇐
G
A
E
\\begin{align} A_t^{\\pi_{\\mathrm{old}}}(\\mathbf{s},\\mathbf{a})\\Leftarrow \\mathrm{GAE} \\end{align}
Atπold(s,a)⇐GAE
其中,原笔记写到优势通常由 GAE 估计,这里仅保留“由 GAE 估计”的结论。
PPO 的直观意义可以概括为两点:一是
∂
L
(
θ
)
∂
θ
≈
∂
J
(
θ
)
∂
θ
\\frac{\\partial L(\\theta)}{\\partial\\theta}\\approx\\frac{\\partial J(\\theta)}{\\partial\\theta}
∂θ∂L(θ)≈∂θ∂J(θ);二是旧轨迹
τ
∼
π
θ
o
l
d
\\tau\\sim\\pi_{\\theta_{\\mathrm{old}}}
τ∼πθold 和对应的优势估计都可以复用。
GRPO:组内相对优势替换旧策略的优势函数
原笔记最后写到,GRPO 仍沿用 PPO 的裁剪形式,只是把优势换成“组内相对优势”。
L
G
R
P
O
(
θ
)
=
E
τ
∼
π
θ
o
l
d
[
min
(
ρ
(
θ
)
A
t
,
clip
(
ρ
(
θ
)
,
1
−
ξ
,
1
+
ξ
)
A
t
)
]
\\begin{align} L_{\\mathrm{GRPO}}(\\theta)=\\mathbb{E}_{\\tau\\sim \\pi_{\\theta_{\\mathrm{old}}}}\\left[\\min\\left(\\rho(\\theta)A_t,\\operatorname{clip}\\left(\\rho(\\theta),1-\\xi,1+\\xi\\right)A_t\\right)\\right] \\end{align}
LGRPO(θ)=Eτ∼πθold[min(ρ(θ)At,clip(ρ(θ),1−ξ,1+ξ)At)]
其中,
A
t
A_t
At 在这里不再是普通优势,而是组内相对优势。
A
t
=
x
−
μ
σ
\\begin{align} A_t=\\frac{x-\\mu}{\\sigma} \\end{align}
At=σx−μ
其中,
x
x
x 是当前样本的分数或回报,
μ
\\mu
μ 是组内均值,
σ
\\sigma
σ 是组内标准差,因此这个式子描述的是标准化后的相对优势。
