Skip to content

Commit e3ccb5d

Browse files
committed
Update workspace configuration and enhance reinforcement learning document with detailed explanations of PPO and GAE algorithms.
1 parent cf12ba7 commit e3ccb5d

2 files changed

Lines changed: 90 additions & 10 deletions

File tree

‎content/.obsidian/workspace.json‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,16 @@
184184
},
185185
"active": "372d74d140371e49",
186186
"lastOpenFiles": [
187+
"点集拓扑/紧空间.md",
187188
"数学分析/无穷小.md",
188-
"数学分析/derivate.md",
189+
"点集拓扑/拓扑空间.md",
190+
"点集拓扑/度量空间.md",
191+
"测度论与概率论/Stieltjes_integral.md",
192+
"测度论与概率论/measurable-func.md",
193+
"数学分析/converge.md",
194+
"测度论与概率论/class-of-sets.md",
189195
"测度论与概率论/三大积分收敛定理.md",
196+
"数学分析/derivate.md",
190197
"数学分析/实数构造/实数.md",
191198
"机器学习/pytorch/torch.utils.data.md",
192199
"机器学习/pytorch/高级索引.md",
@@ -202,13 +209,6 @@
202209
"故事/税.md",
203210
"计算机/agent.md",
204211
"故事/政治机构图.md",
205-
"故事/货币与行政.md",
206-
"故事/货币.md",
207-
"数学分析/非负级数.md",
208-
"数学分析/级数.md",
209-
"数学分析/正负分解.md",
210-
"数学分析/funct-limit.md",
211-
"数学分析/dependency_graph.md",
212-
"数学分析/converge.md"
212+
"故事/货币与行政.md"
213213
]
214214
}
Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,83 @@
11
---
2-
title: 强化学习
2+
title: 强化学习:PPO 与 GAE
33
---
4+
5+
## 1. PPO (Proximal Policy Optimization)
6+
7+
PPO 通过限制策略更新幅度,在保证计算效率的同时实现了类似 TRPO 的稳定性。
8+
9+
### 1.1. 概率比率 (Probability Ratio)
10+
11+
定义 $r_t(\theta)$ 为新旧策略在相同状态下采取相同动作的概率比:
12+
$$r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} = \exp(\log \pi_\theta(a_t|s_t) - \log \pi_{\theta_{old}}(a_t|s_t))$$
13+
14+
- $r_t > 1$:该动作在当前策略中概率增加。
15+
- $r_t = 1$:新旧策略分布一致。
16+
17+
### 1.2. 截断代理目标 (Clipped Surrogate Objective)
18+
19+
为了防止策略更新过猛,PPO 构造了一个“悲观”的目标函数 $L^{CLIP}$(最大化目标):
20+
$$L^{CLIP}(\theta) = \hat{\mathbb{E}}_t \left[ \min(r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t) \right]$$
21+
22+
**逻辑说明:**
23+
24+
- **$\hat{A}_t > 0$(正向动作):** 限制 $r_t$ 上限,防止过分增加好动作的权重。
25+
- **$\hat{A}_t < 0$(负向动作):** 限制 $r_t$ 下限,防止过分压低坏动作的权重。
26+
- **$\min$ 算子:** 确保更新步长始终处于“置信域”内,提供单调提升的保障。
27+
28+
---
29+
30+
## 2. GAE (Generalized Advantage Estimation)
31+
32+
GAE 通过指数加权平均来平衡优势估计的方差与偏差。
33+
34+
### 2.1. 推导与证明
35+
36+
定义 $k$ 步优势估计为前 $k$ 个 TD 残差 $\delta$ 的累加:
37+
$$\hat{A}_t^{(k)} = \sum_{j=0}^{k-1} \gamma^j \delta_{t+j}, \quad \text{其中 } \delta_t = R_t + \gamma V(s_{t+1})(1-done_t) - V(s_t)$$
38+
39+
GAE 是对所有步长估计的指数加权平均:
40+
$$\hat{A}_t^{GAE} = (1-\lambda) \sum_{k=1}^{\infty} \lambda^{k-1} \hat{A}_t^{(k)} = \sum_{l=0}^{\infty} (\gamma \lambda)^l \delta_{t+l}$$
41+
42+
### 2.2. 递归形式(工程实现)
43+
44+
利用倒序递推实现 $O(T)$ 复杂度计算:
45+
$$\hat{A}_t = \delta_t + (\gamma \lambda) (1-done_t) \hat{A}_{t+1}$$
46+
47+
---
48+
49+
## 3. 完整算法流程 (统一损失函数最小化视角)
50+
51+
在深度学习框架中,通常通过**最小化负的目标函数**来实现最大化奖励。
52+
53+
### 3.1. 综合损失函数 (Total Loss)
54+
55+
定义需要最小化的总损失 $Loss^{total}$:
56+
$$Loss^{total}(\theta, \phi) = \hat{\mathbb{E}}_t \left[ -L_t^{CLIP}(\theta) + c_1 L_t^{VF}(\phi) - c_2 S[\pi_\theta](s_t) \right]$$
57+
58+
- **$-L_t^{CLIP}$**:负的代理目标,最小化它等同于最大化期望奖励。
59+
- **$+c_1 L_t^{VF}$**:价值误差 $L_t^{VF} = (V_\phi(s_t) - V_t^{targ})^2$,需要最小化。
60+
- **$-c_2 S$**:负的熵奖励 $S = -\sum \pi \log \pi$,最小化负熵等同于最大化熵(增加探索)。
61+
62+
### 3.2. 详细算法伪代码
63+
64+
1. **初始化**:参数 $\theta, \phi$,超参数 $\epsilon, \gamma, \lambda, c_1, c_2, K, M$。
65+
2. **FOR** 迭代次数 $= 1, 2, \dots$ **DO**:
66+
- **Sampling**:使用并行 Actor 采集 $T$ 步数据 $\{s_t, a_t, R_t, done_t, \log \pi_{old}\}$。
67+
- **Advantage Estimation**:
68+
- $\delta_t = R_t + \gamma V_\phi(s_{t+1})(1-done_t) - V_\phi(s_t)$
69+
- 倒序递推:$\hat{A}_t = \delta_t + (\gamma \lambda)(1-done_t)\hat{A}_{t+1}$
70+
- 计算 Critic 目标:$V_t^{targ} = \hat{A}_t + V_\phi(s_t)$
71+
- **Optimization**:将数据分为若干 Minibatch。
72+
- **FOR** Epoch $k = 1, \dots, K$ **DO**:
73+
- 对于每个 Minibatch 计算梯度:
74+
- $r_t(\theta) = \exp(\log \pi_\theta(a_t|s_t) - \log \pi_{\theta_{old}})$
75+
- $L_t^{CLIP} = \min(r_t \hat{A}_t, \text{clip}(r_t, 1-\epsilon, 1+\epsilon) \hat{A}_t)$
76+
- $L_t^{VF} = (V_\phi(s_t) - V_t^{targ})^2$
77+
- $S_t = -\sum \pi_\theta \log \pi_\theta$
78+
- 更新参数(执行梯度下降):
79+
- $\theta \leftarrow \theta - \alpha \nabla_\theta Loss^{total}$
80+
- $\phi \leftarrow \phi - \alpha \nabla_\phi Loss^{total}$
81+
- **END FOR**
82+
- **Sync**:$\theta_{old} \leftarrow \theta$。
83+
3. **END FOR**

0 commit comments

Comments
 (0)