Files
2026-05-16 17:16:51 +08:00

959 lines
28 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 2-优化理论
tags:
- 优化理论
- 数学基础
- 深度学习
---
# 优化理论
> 本笔记面向深度学习科研人员系统讲解优化理论的数学基础涵盖经典方法、自适应学习率、自然梯度、K-FAC 以及信任域方法。每部分包含严格的数学推导与直觉解释。
---
## 1. 经典优化方法
### 1.1 梯度下降法 (Gradient Descent)
#### 基本更新规则
给定目标函数 $f: \mathbb{R}^n \to \mathbb{R}$,梯度下降法沿负梯度方向进行迭代更新:
$$
\theta_{t+1} = \theta_t - lpha \nabla f(\theta_t)
$$
其中 $\alpha > 0$ 为学习率(步长)。
#### 一阶收敛速度分析
**定理 1.1 (梯度下降的收敛速率)**
假设 $f$ 为 $\beta$-平滑($\beta$-Lipschitz 梯度)且 $\mu$-强凸,则梯度下降法以线性速率收敛:
$$
f(\theta_t) - f(\theta^*) \leq \left(1 - \frac{\mu}{\beta}\right)^t (f(\theta_0) - f(\theta^*))
$$
**证明:**
由于 $f$ 为 $\beta$-平滑利用二次上界Quadratic Upper Bound
$$
f(\theta_{t+1}) \leq f(\theta_t) + \langle \nabla f(\theta_t), \theta_{t+1} - \theta_t \rangle + \frac{\beta}{2} \|\theta_{t+1} - \theta_t\|^2
$$
代入更新规则 $\theta_{t+1} - \theta_t = -\alpha \nabla f(\theta_t)$
$$
f(\theta_{t+1}) \leq f(\theta_t) - \alpha \|\nabla f(\theta_t)\|^2 + \frac{\beta \alpha^2}{2} \|\nabla f(\theta_t)\|^2 = f(\theta_t) - \alpha\left(1 - \frac{\beta \alpha}{2}\right) \|\nabla f(\theta_t)\|^2
$$
取最优步长 $\alpha^* = \frac{1}{\beta}$
$$
f(\theta_{t+1}) \leq f(\theta_t) - \frac{1}{2\beta} \|\nabla f(\theta_t)\|^2
$$
由强凸性,$f(\theta_t) - f(\theta^*) \leq \frac{1}{2\mu} \|\nabla f(\theta_t)\|^2$,代入得:
$$
f(\theta_{t+1}) - f(\theta^*) \leq \left(1 - \frac{\mu}{\beta}\right)(f(\theta_t) - f(\theta^*))
$$
迭代 $t$ 次即得所证。$\square$
**直觉解释:**
- 条件数 $\kappa = \beta / \mu$ 决定了收敛速率。病态ill-conditioned问题收敛慢。
- 步长选择 $\alpha = 1/\beta$ 是最优的,过大会发散,过小会收敛缓慢。
- 梯度下降仅利用一阶信息,在强凸二次函数上收敛时间为 $O(\log(1/\epsilon))$。
---
### 1.2 牛顿法 (Newton's Method)
#### 二阶收敛性
牛顿法利用二阶导数信息加速收敛:
$$
\theta_{t+1} = \theta_t - H_t^{-1} \nabla f(\theta_t)
$$
其中 $H_t = \nabla^2 f(\theta_t)$ 为 Hessian 矩阵。
**定理 1.2 (牛顿法局部二阶收敛)**
设 $f$ 二阶连续可微Hessian 在最优解 $\theta^*$ 处非奇异,且 $\nabla f(\theta^*) = 0$。则牛顿法局部二阶收敛:
$$
\|\theta_{t+1} - \theta^*\| = O(\|\theta_t - \theta^*\|^2)
$$
**证明:**
将 $\nabla f(\theta_t)$ 在 $\theta^*$ 处 Taylor 展开:
$$
\nabla f(\theta_t) = \underbrace{\nabla f(\theta^*)}_{=0} + H^* (\theta_t - \theta^*) + o(\|\theta_t - \theta^*\|)
$$
因此:
$$
\theta_{t+1} - \theta^* = \theta_t - \theta^* - H_t^{-1} \nabla f(\theta_t) = -H_t^{-1} \nabla f(\theta_t) + (\theta_t - \theta^*)
$$
代入展开式:
$$
\theta_{t+1} - \theta^* = -H_t^{-1} [H^* (\theta_t - \theta^*) + o(\|\theta_t - \theta^*\|)] + (\theta_t - \theta^*) = (I - H_t^{-1} H^*)(\theta_t - \theta^*) + o(\|\theta_t - \theta^*\|^2)
$$
当 $\theta_t \to \theta^*$ 时,$H_t \to H^*$,故 $\|I - H_t^{-1} H^*\| = O(\|\theta_t - \theta^*\|)$,于是:
$$
\|\theta_{t+1} - \theta^*\| = O(\|\theta_t - \theta^*\|^2)
$$
$\square$
#### 牛顿法的优势与局限
| 方面 | 说明 |
|------|------|
| **优势** | 二阶收敛(比梯度下降的线性收敛快得多) |
| **局限** | 需要计算 $O(n^2)$ 的 Hessian 矩阵并求逆 |
| **适用场景** | 小规模问题(如逻辑回归、神经网络精调) |
| **深度学习问题** | $n$ 可达百万至十亿Hessian 计算不现实 |
**信赖域解释:** 牛顿法可视为在每一步求解如下信赖域子问题:
$$
\min_{d} \quad f(\theta_t) + \langle \nabla f(\theta_t), d \rangle + \frac{1}{2} d^T H_t d \quad \text{s.t.} \quad \|d\| \leq \Delta
$$
当 $H_t$ 正定时,解为 $d = -(H_t + \lambda I)^{-1} \nabla f(\theta_t)$,即牛顿步骤。
---
### 1.3 共轭梯度法 (Conjugate Gradient Method)
#### 基本思想
共轭梯度法旨在无需显式存储 Hessian 矩阵的情况下,求解线性系统 $A x = b$(其中 $A$ 对称正定),进而用于求解二次优化问题:
$$
\min_x \quad \frac{1}{2} x^T A x - b^T x
$$
#### 共轭方向定义
一组方向 $\{p_0, p_1, \ldots, p_{n-1}\}$ 称为 **$A$-共轭**,若:
$$
p_i^T A p_j = 0, \quad \forall i \neq j
$$
**引理 1.1** $A$-共轭方向组线性无关。
#### 算法流程
```
初始化: x_0, r_0 = b - A x_0, p_0 = r_0
for k = 0, 1, 2, ...:
α_k = (r_k^T r_k) / (p_k^T A p_k)
x_{k+1} = x_k + α_k p_k
r_{k+1} = r_k - α_k A p_k
if ||r_{k+1}|| < ε: break
β_k = (r_{k+1}^T r_{k+1}) / (r_k^T r_k)
p_{k+1} = r_{k+1} + β_k p_k
```
**定理 1.3 (共轭梯度收敛性)**
对于对称正定矩阵 $A$,共轭梯度法在最多 $n$ 步内精确收敛到解,且有误差界:
$$
\|x_k - x^*\|_A \leq 2 \left(\frac{\sqrt{\kappa} - 1}{\sqrt{\kappa} + 1}\right)^k \|x_0 - x^*\|_A
$$
其中 $\kappa = \lambda_{\max}(A) / \lambda_{\min}(A)$ 为条件数。
**与优化联系:** 求解二次优化 $\min_x \frac{1}{2} x^T A x - b^T x$ 等价于求解 $A x = b$。在非二次问题上,共轭梯度法可通过重启处理。
**直觉:** 共轭梯度法结合了正交搜索方向(像梯度下降)与共轭性(避免方向重复),在二次函数上具有最优收敛性。
---
## 2. 自适应学习率方法
> 深度学习的核心挑战:高维非凸优化、梯度稀疏、特征尺度不一。经典 SGD 对所有参数使用统一学习率,难以适应。
### 2.1 AdaGrad
#### 算法推导
AdaGrad 源自「对不同参数自适应调整学习率」的思想,核心是对历史梯度平方累积:
**更新规则:**
$$
\theta_{t+1,i} = \theta_{t,i} - \frac{\alpha}{\sqrt{G_{t,ii} + \epsilon}} \cdot g_{t,i}
$$
其中:
- $g_{t,i} = \nabla_{\theta_i} \mathcal{L}(\theta_t)$ 为第 $i$ 个参数在时间 $t$ 的梯度
- $G_t = \sum_{\tau=1}^t g_\tau g_\tau^T$ 为累积梯度平方矩阵(对角元素为 $G_{t,ii}$
- $\epsilon$ 为数值稳定项(通常 $10^{-8}$
**对角形式的推导:**
假设参数独立,近似目标函数为:
$$
\mathcal{L}(\theta) \approx \mathcal{L}(\theta_0) + \sum_i \frac{\partial \mathcal{L}}{\partial \theta_i} \delta_{\theta_i} + \frac{1}{2} \sum_i H_{ii} \delta_{\theta_i}^2
$$
其中 $H_{ii}$ 为 Hessian 对角元素。
对每个参数做二阶展开并求解最优步长:
$$
\frac{\partial}{\partial \delta_{\theta_i}} \left[ g_i \delta_{\theta_i} + \frac{1}{2} H_{ii} \delta_{\theta_i}^2 \right] = 0 \Rightarrow \delta_{\theta_i}^* = -\frac{g_i}{H_{ii}}
$$
若用累积梯度平方 $G_{t,ii}$ 估计 $H_{ii}$(假设 $H_{ii} \approx G_{t,ii}$),则:
$$
\theta_{t+1,i} = \theta_{t,i} - \frac{\alpha}{\sqrt{G_{t,ii} + \epsilon}} g_i
$$
#### 学习率衰减分析
**引理 2.1 (AdaGrad 学习率衰减)**
对于稀疏梯度特征梯度只在少数时间出现AdaGrad 对应的有效学习率为:
$$
\alpha_{t,i} = \frac{\alpha}{\sqrt{t_i + 1}}
$$
其中 $t_i$ 为参数 $i$ 累积非零梯度的次数。
**直觉:** AdaGrad 实际上对频繁出现的特征施加更小的学习率,对稀疏特征保留更大的学习率。这对于 NLP 中的词嵌入等稀疏特征特别有效。
**缺陷:** $G_t$ 单调增长,导致学习率持续衰减至过小,在凸函数上表现良好但深度学习中过早停止。
---
### 2.2 RMSProp
#### 指数加权移动平均的引入
RMSProp 通过指数加权移动平均EWMA替代简单累积解决 AdaGrad 学习率过度衰减的问题:
$$
G_t = \gamma G_{t-1} + (1-\gamma) g_t g_t^T
$$
**对角形式更新:**
$$
\theta_{t+1,i} = \theta_{t,i} - \frac{\alpha}{\sqrt{G_{t,ii} + \epsilon}} g_{t,i}
$$
**参数含义:**
- $\gamma \in [0, 1)$ 控制历史梯度平方的衰减率(通常取 $0.9$
- 近期梯度对 $G_t$ 影响更大,学习率适应更快
**与 AdaGrad 的关系:**
| 方法 | 累积方式 | 学习率 |
|------|----------|--------|
| AdaGrad | $G_t = \sum_{\tau=1}^t g_\tau^2$ | 持续衰减 |
| RMSProp | $G_t = \gamma G_{t-1} + (1-\gamma) g_t^2$ | 稳定衰减 |
**直觉:** RMSProp 通过 EWMA 使 $G_t$ 成为「滑动窗口」内的梯度平方均值,避免了单调累积导致的过度衰减。
**收敛性:** RMSProp 并非保证凸收敛,但实践中对非凸问题(如深度网络训练)效果显著。
---
### 2.3 Adam (Adaptive Moment Estimation)
#### 融合动量与 RMSProp
Adam 结合了两大思想:
1. **动量 (Momentum)**:加速收敛、抑制震荡
2. **RMSProp**:对梯度二阶矩自适应
**算法流程:**
```
初始化: θ_0, m_0 = 0, v_0 = 0, t = 0
for each iteration do:
t += 1
g_t = ∇_θ L(θ_{t-1}) # 梯度
m_t = β_1 * m_{t-1} + (1-β_1) * g_t # 一阶矩(动量)
v_t = β_2 * v_{t-1} + (1-β_2) * g_t^2 # 二阶矩(梯度平方的 EWMA
m_hat = m_t / (1 - β_1^t) # 偏差校正bias correction
v_hat = v_t / (1 - β_2^t)
θ_t = θ_{t-1} - α * m_hat / (√v_hat + ε)
```
#### 偏差校正的完整推导
**问题:** 初始化时 $m_0 = 0, v_0 = 0$,导致早期估计有偏。
**一阶矩偏差分析:**
展开 $m_t$
$$
m_t = (1-\beta_1) \sum_{i=1}^t \beta_1^{t-i} g_i
$$
真实期望为 $\mathbb{E}[g_t]$,但:
$$
\mathbb{E}[m_t] = (1-\beta_1) \sum_{i=1}^t \beta_1^{t-i} \mathbb{E}[g_i] \neq \mathbb{E}[g_t]
$$
特别地,当 $\mathbb{E}[g_i] = g^*$ 恒定时:
$$
\mathbb{E}[m_t] = g^* (1 - \beta_1^t)
$$
因此无偏估计为:
$$
\hat{m}_t = \frac{m_t}{1 - \beta_1^t}
$$
类似地,对二阶矩:
$$
\mathbb{E}[v_t] = (1-\beta_2) \sum_{i=1}^t \beta_2^{t-i} \mathbb{E}[g_i^2] = \mathbb{E}[g_t^2] (1 - \beta_2^t)
$$
无偏估计为:
$$
\hat{v}_t = \frac{v_t}{1 - \beta_2^t}
$$
**偏差校正的作用:**
- 初期($t$ 小):$1-\beta_1^t$ 和 $1-\beta_2^t$ 接近 0放大估计值
- 后期($t$ 大):$1-\beta_1^t \to 1$,校正项趋于 1影响可忽略
#### Adam 更新公式的直观理解
更新方向为 $\hat{m}_t$(偏差校正后的动量),步长由 $\hat{v}_t$ 控制:
$$
\theta_{t+1} = \theta_t - \alpha \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}
$$
- 动量项 $\hat{m}_t$ 提供方向加速
- 归一化因子 $\sqrt{\hat{v}_t}$ 提供自适应学习率
**收敛性保证:** 在适当假设下Adam 可证明 $O(\sqrt{1/t})$ 的后悔上界。
**直觉:** Adam 如同「带阻尼的物理球」在损失曲面滚动动量提供惯性RMSProp 提供摩擦系数(随梯度变化调整)。
---
### 2.4 AdamW (Adam with Weight Decay)
#### 问题背景
标准 Adam+L2 正则化等价于在损失函数上添加 $\frac{\lambda}{2} \|\theta\|^2$,梯度为 $\nabla_\theta \mathcal{L} + \lambda \theta$。
更新为:
$$
\theta_{t+1} = \theta_t - \alpha \frac{m_t}{\sqrt{v_t}} - \alpha \lambda \theta_t = (1 - \alpha \lambda) \theta_t - \alpha \frac{m_t}{\sqrt{v_t}}
$$
**问题:** Adam 的自适应学习率会与 L2 正则化项耦合,导致正则化强度随参数规模变化,实际有效权重衰减不等于 $\lambda$。
#### 权重衰减的正确形式
AdamW 将权重衰减独立于自适应学习率:
$$
\theta_{t+1} = (1 - \lambda \alpha) \theta_t - \alpha \frac{m_t}{\sqrt{v_t}}
$$
而非标准 Adam 的 $(1 - \alpha \lambda) \theta_t$。
#### AdamW 与 Adam+L2 的本质区别
**核心观点AdamW 与 Adam+L2 绝对不等价。** AdamW 提出的初衷就是解决 Adam 中 L2 正则与自适应学习率耦合畸变问题。
1. **标准 Adam + L2 正则(错误耦合)**
损失加 $\frac{\lambda}{2}\|\theta\|^2$,梯度混入 $\lambda\theta$
$$
\theta_{t+1} = \theta_t - \alpha \frac{\hat{m}_t}{\sqrt{\hat{v}_t}+\epsilon} - \alpha\lambda \theta_t
$$
权重衰减强度**被自适应学习率缩放**,超参 $\lambda$ 失去物理意义。
2. **AdamW 正确分离式更新(行业标准)**
**先独立做权重衰减,再执行 Adam 梯度更新**,二者完全解耦:
$$
\begin{align*}
\theta_t &\leftarrow (1-\lambda) \cdot \theta_t \\
\theta_{t+1} &\leftarrow \theta_t - \alpha \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t}+\epsilon}
\end{align*}
$$
**实践意义:**
| 特性 | Adam+L2 | AdamW |
|------|---------|-------|
| 正则化强度 | 依赖参数尺度 | 显式控制 |
| 权重衰减 | 与自适应学习率耦合 | 独立于学习率 |
| 超参解释性 | 差 | 好 |
**直觉:** AdamW 把权重衰减从梯度项中剥离,不再被一阶梯度、二阶矩自适应学习率影响,让 $\lambda$ 成为纯粹、可解释的权重衰减系数,解决了 Adam+L2 正则效果不稳定的问题。
---
## 3. 自然梯度 (Natural Gradient)
### 3.1 从欧氏度量到黎曼度量
#### 经典梯度的局限
经典梯度下降 $\theta_{t+1} = \theta_t - \alpha \nabla_\theta \mathcal{L}$ 基于欧氏度量 $\|\cdot\|_2$即假设参数空间是均匀的。但在概率分布空间KL 散度比欧氏距离更自然地度量「变化」。
#### KL 散度作为局部度量
两个概率分布 $p(\cdot|\theta)$ 和 $p(\cdot|\theta + \delta\theta)$ 之间的 KL 散度在一阶近似下:
$$
D_{\text{KL}}(p(\cdot|\theta) \| p(\cdot|\theta + \delta\theta)) \approx \frac{1}{2} \delta\theta^T F(\theta) \delta\theta
$$
其中 $F(\theta)$ 为 **Fisher 信息矩阵**
**定义 3.1 (黎曼度量张量)**
令 $g_{ij}(\theta) = F_{ij}(\theta) = \mathbb{E}_{x \sim p(\cdot|\theta)} \left[ \frac{\partial \log p(x|\theta)}{\partial \theta_i} \frac{\partial \log p(x|\theta)}{\partial \theta_j} \right]$,则参数空间配备黎曼度量:
$$
\langle \delta\theta, \delta\theta \rangle_g = \delta\theta^T F(\theta) \delta\theta
$$
---
### 3.2 Fisher 信息矩阵的推导
**定理 3.1 (Fisher 信息矩阵)**
对参数化概率分布 $p(x|\theta)$Fisher 信息矩阵定义为:
$$
F(\theta) = \mathbb{E}_{x \sim p(\cdot|\theta)} \left[ \nabla_\theta \log p(x|\theta) \nabla_\theta \log p(x|\theta)^T \right]
$$
**推导:**
对数似然梯度 $\nabla_\theta \log p(x|\theta)$ 的协方差:
$$
\text{Cov}_{x \sim p} [\nabla_\theta \log p(x|\theta)] = \mathbb{E}[(\nabla \log p)(\nabla \log p)^T] - \underbrace{\mathbb{E}[\nabla \log p]}_{=0} \mathbb{E}[\nabla \log p]^T
$$
第二项为零,因为:
$$
\mathbb{E}_{x \sim p} [\nabla_\theta \log p(x|\theta)] = \int p \frac{\nabla_\theta p}{p} dx = \nabla_\theta \int p \, dx = \nabla_\theta 1 = 0
$$
因此:
$$
F(\theta) = \text{Cov}(\nabla \log p) = \mathbb{E}[(\nabla \log p)(\nabla \log p)^T]
$$
**性质:**
1. $F(\theta)$ 半正定
2. $F(\theta) = \mathbb{E}[H_{\log p}]$,其中 $H_{\log p}$ 为对数似然的 Hessian
3. 对指数族分布,$F(\theta)$ 与 Hessian 一致
**与 Hessian 的联系:**
对损失函数 $\mathcal{L}(\theta) = -\mathbb{E}_{x \sim q}[\log p(x|\theta)]$$q$ 为数据分布),有:
$$
-\nabla^2 \log p(x|\theta) = \nabla \log p(x|\theta) \nabla \log p(x|\theta)^T - H_{\log p}(x|\theta)
$$
取期望:
$$
F(\theta) = \mathbb{E}[-\nabla^2 \log p(x|\theta)] + \mathbb{E}[H_{\log p}(x|\theta)]
$$
若模型正确($q = p$),第二项为零,故 $F(\theta) = \mathbb{E}[-H_{\log p}]$。
---
### 3.3 自然梯度更新
#### 定义
自然梯度定义为损失函数梯度在黎曼度量下的最速上升方向:
$$
\nabla_{\text{natural}} \mathcal{L} = F(\theta)^{-1} \nabla_\theta \mathcal{L}
$$
**定理 3.2 (自然梯度更新)**
在 KL 散度约束下,自然梯度更新为:
$$
\theta_{\text{new}} = \theta_{\text{old}} + \alpha \cdot F(\theta)^{-1} \nabla_\theta \mathcal{L}
$$
**推导:**
考虑约束优化问题:
$$
\min_{\delta\theta} \quad \mathcal{L}(\theta + \delta\theta) \quad \text{s.t.} \quad D_{\text{KL}}(p(\cdot|\theta) \| p(\cdot|\theta + \delta\theta)) \leq \frac{\epsilon}{2}
$$
一阶近似约束:
$$
\frac{1}{2} \delta\theta^T F(\theta) \delta\theta \leq \frac{\epsilon}{2} \Rightarrow \delta\theta^T F(\theta) \delta\theta \leq \epsilon
$$
使用拉格朗日乘子法:
$$
\mathcal{L}(\theta + \delta\theta) \approx \mathcal{L}(\theta) + \nabla \mathcal{L}^T \delta\theta + \frac{\lambda}{2} \delta\theta^T F \delta\theta
$$
对 $\delta\theta$ 求导并令为零:
$$
\nabla \mathcal{L} + \lambda F \delta\theta = 0 \Rightarrow \delta\theta = -\frac{1}{\lambda} F^{-1} \nabla \mathcal{L}
$$
令步长 $\alpha = -1/\lambda$,即得自然梯度更新。$\square$
---
### 3.4 与置信域方法的关系
**置信域 (Trust Region) 方法** 同样在约束区域内近似目标函数:
$$
\min_d \quad \nabla \mathcal{L}^T d + \frac{1}{2} d^T B d \quad \text{s.t.} \quad \|d\| \leq \Delta
$$
其中 $B$ 为正定矩阵。
**类比:**
- 经典 TRR用 $B = I$(欧氏度量)
- 自然梯度 TR用 $B = F(\theta)$(黎曼度量)
**差异:**
- 欧氏度量假设参数空间各向同性
- 黎曼度量基于 Fisher 信息,考虑了参数变化对分布的影响
**直觉:** 自然梯度告诉你「在概率分布空间中最有效的下降方向」,而非「在参数空间中欧氏意义下最陡的方向」。这对于涉及概率输出的模型(如分类器、生成模型)尤为重要。
---
## 4. K-FAC (Kronecker-Factored Approximate Curvature)
### 4.1 动机:解决 Fisher 矩阵的计算瓶颈
自然梯度更新 $F^{-1} \nabla \mathcal{L}$ 需要:
1. 计算 $F$$n \times n$$n$ 为参数数量,可达百万)
2. 求逆 $F^{-1}$$O(n^3)$
**K-FAC 的核心思想:** 用低秩 Kronecker 积近似 Fisher 矩阵,实现 $O(n)$ 存储与 $O(n)$ 更新。
---
### 4.2 Kronecker 分解的数学基础
**定义 4.1 (Kronecker 积)**
对 $A \in \mathbb{R}^{m \times n}$ 和 $B \in \mathbb{R}^{p \times q}$Kronecker 积为:
$$
A \otimes B = \begin{bmatrix} a_{11} B & a_{12} B & \cdots & a_{1n} B \\ a_{21} B & a_{22} B & \cdots & a_{2n} B \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} B & a_{m2} B & \cdots & a_{mn} B \end{bmatrix} \in \mathbb{R}^{(mp) \times (nq)}
$$
**关键性质:**
1. **矩阵-向量乘积的分解计算:**
若 $F \approx A \otimes B$,则对向量 $v$
$$
(A \otimes B) \text{vec}(X) = \text{vec}(A X B^T)
$$
这允许高效计算而不需要显式构造 $F$。
2. **求逆公式:**
$(A \otimes B)^{-1} = A^{-1} \otimes B^{-1}$
---
### 4.3 对角近似 vs Kronecker 近似的权衡
#### 对角近似
假设 $F$ 为对角矩阵 $\text{diag}(f_1, f_2, \ldots, f_n)$,则:
- 存储:$O(n)$
- 求逆:$O(n)$
- 更新:$O(n)$
**优点:** 极其简单高效
**缺点:** 忽略参数间相关性,对于高度相关的参数(如深度网络跨层参数)精度差
#### Kronecker 近似
假设 $F \approx A \otimes B$,其中 $A \in \mathbb{R}^{d_1 \times d_1}$$B \in \mathbb{R}^{d_2 \times d_2}$,总参数 $n = d_1 d_2$。
**优点:** 捕获局部结构相关性
**缺点:** 需要选择合适的分解维度(通常对应网络层或权重矩阵结构)
#### 权衡对比
| 近似方式 | 存储复杂度 | 计算复杂度 | 精度 |
|----------|-----------|-----------|------|
| 完整 Fisher | $O(n^2)$ | $O(n^3)$ | 最高 |
| 对角近似 | $O(n)$ | $O(n)$ | 最低 |
| Kronecker | $O(d_1^2 + d_2^2)$ | $O(n)$ | 中等 |
---
### 4.4 Fisher 矩阵的块对角 Kronecker 分解
#### 分块结构
对于全连接层参数 $W \in \mathbb{R}^{d_{\text{in}} \times d_{\text{out}}}$,其 Fisher 信息矩阵为:
$$
F_W = \mathbb{E}[(\nabla_W \log p)(\nabla_W \log p)^T]
$$
K-FAC 将 $F_W$ 分解为:
$$
F_W \approx A \otimes B
$$
其中:
- $A \in \mathbb{R}^{d_{\text{in}} \times d_{\text{in}}}$,捕获输入激活间的相关性
- $B \in \mathbb{R}^{d_{\text{out}} \times d_{\text{out}}}$,捕获输出梯度间的相关性
**近似推导:**
利用方差拆分:
$$
F_W = \mathbb{E}[\nabla_W \log p \cdot \nabla_W \log p^T] = \mathbb{E}[a a^T \otimes g g^T] = \mathbb{E}[a a^T] \otimes \mathbb{E}[g g^T]
$$
其中 $a$ 为输入激活,$g$ 为输出梯度。在 K-FAC 中,我们用样本估计:
$$
\hat{A} = \frac{1}{S} \sum_{s=1}^S a_s a_s^T, \quad \hat{B} = \frac{1}{S} \sum_{s=1}^S g_s g_s^T
$$
则:
$$
F_W \approx \hat{A} \otimes \hat{B}
$$
#### 自然梯度计算的高效实现
给定梯度 $\nabla_W \mathcal{L}$,自然梯度更新为:
$$
\text{vec}(d) = (\hat{A}^{-1} \otimes \hat{B}^{-1}) \text{vec}(\nabla_W \mathcal{L})
$$
利用 Kronecker 性质:
$$
D = \hat{A}^{-1} \nabla_W \mathcal{L} \hat{B}^{-1}
$$
其中 $D$ 为 $d$ 的矩阵形式。
**算法复杂度:**
| 操作 | 复杂度 |
|------|--------|
| 存储 $\hat{A}, \hat{B}$ | $O(d_{\text{in}}^2 + d_{\text{out}}^2)$ |
| 计算 $D$ | $O(d_{\text{in}} \cdot d_{\text{out}})$ |
| 梯度计算 | $O(d_{\text{in}} \cdot d_{\text{out}})$ |
相比完整 Fisher 的 $O(n^3)$K-FAC 实现了线性复杂度。
---
### 4.5 K-FAC 的实践要点
**超参选择:**
- 块大小:通常按层划分(每层独立 Kronecker 分解)
- 移动平均衰减:$\gamma \in [0.9, 0.99]$
- 小批量大小:影响估计方差
**训练稳定性:**
- 添加 damping $\lambda I$ 以保证数值稳定
- $\lambda$ 通常取 $10^{-3}$ 到 $10^{-1}$
**效果:**
- 在大规模 CNN、RNN 中效果显著
- 可达 SGD with momentum 的 2-10 倍加速
---
## 5. 信任域方法 (Trust Region Methods)
### 5.1 从信赖域到 TRPO
#### 信赖域方法概述
信赖域方法在每一步于当前位置 $\theta_t$ 附近构建局部模型 $m_k(d)$
$$
\min_d \quad m_k(d) \quad \text{s.t.} \quad \|d\| \leq \Delta_k
$$
其中 $m_k(d)$ 通常为二阶近似:
$$
m_k(d) = f(\theta_k) + \nabla f(\theta_k)^T d + \frac{1}{2} d^T B_k d
$$
$B_k$ 为曲率估计(可以是 Hessian、Hessian-free、或仅对角
#### TRPO 的优化目标
**Trust Region Policy Optimization (TRPO)** 将策略优化问题建模为最大化期望回报,同时约束策略更新的幅度:
$$
\max_{\theta} \quad \mathbb{E}_t \left[ \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)} \hat{A}_t \right]
$$
$$
\text{s.t.} \quad \mathbb{E}_t \left[ D_{\text{KL}}(\pi_{\theta_{\text{old}}}(\cdot|s_t) \| \pi_\theta(\cdot|s_t)) \right] \leq \bar{D}_{\text{KL}}
$$
**推导为单步优化问题:**
对每个状态 $s$,令 $\rho(s)$ 为状态访问分布,则目标可写为:
$$
\max_\theta \quad \mathbb{E}_{s \sim \rho, a \sim \pi_{\theta_{\text{old}}}} \left[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{\text{old}}}(a|s)} A(s,a) \right]
$$
定义 $\bar{D}_{\text{KL}}$ 为平均 KL 散度约束。
---
### 5.2 KL 散度约束下的拉格朗日乘子法
将 KL 散度约束加入目标:
$$
\mathcal{L}(\theta, \lambda) = \mathbb{E}_{s \sim \rho} \left[ \sum_a \pi_\theta(a|s) A(s,a) \right] - \lambda \left( \mathbb{E}_{s \sim \rho} \left[ D_{\text{KL}}(\pi_{\theta_{\text{old}}} \| \pi_\theta) \right] - \bar{D}_{\text{KL}} \right)
$$
**最优性条件(一阶):**
$$
\frac{\partial \mathcal{L}}{\partial \theta} = 0 \Rightarrow \mathbb{E}_{s \sim \rho} \left[ \nabla_\theta \pi_\theta(a|s) A(s,a) \right] - \lambda \mathbb{E}_{s \sim \rho} \left[ \nabla_\theta D_{\text{KL}}(\pi_{\theta_{\text{old}}} \| \pi_\theta) \right] = 0
$$
**近似求解:**
使用一阶近似 $\pi_\theta(a|s) \approx \pi_{\theta_{\text{old}}}(a|s) + \nabla_\theta \pi_{\theta_{\text{old}}}(a|s)^T (\theta - \theta_{\text{old}})$,并假设 $A(s,a) \approx \hat{A}_t$,则:
$$
\mathbb{E}_{s,a} \left[ \nabla \log \pi_{\theta_{\text{old}}}(a|s) \hat{A}_t \right] - \lambda \mathbb{E}_{s,a} \left[ \nabla_\theta \log \pi_\theta(a|s) - \nabla_\theta \log \pi_{\theta_{\text{old}}}(a|s) \right] = 0
$$
令 $\delta\theta = \theta - \theta_{\text{old}}$,在 $\theta_{\text{old}}$ 处展开二阶项,得到关于 $\delta\theta$ 的线性方程组。
---
### 5.3 共轭梯度法求解子问题
#### 子问题的建立
将 TRPO 的约束优化问题近似为二次规划:
$$
\min_d \quad \nabla \mathcal{L}^T d + \frac{1}{2} d^T H d \quad \text{s.t.} \quad d^T M d \leq \bar{D}_{\text{KL}}
$$
其中:
- $H \approx \nabla^2 (\text{KL 散度项})$Fisher 信息矩阵)
- $M = I$(或根据度量变化)
**等价的无约束形式:**
引入拉格朗日乘子 $\lambda$
$$
\min_d \quad \nabla \mathcal{L}^T d + \frac{1}{2} d^T H d + \lambda (d^T M d - \bar{D}_{\text{KL}})
$$
最优性条件:
$$
H d + \lambda M d = -\nabla \mathcal{L}
$$
即 $(H + \lambda M) d = -\nabla \mathcal{L}$。
#### 共轭梯度求解步骤
**输入:** $g = -\nabla \mathcal{L}$$H$(可用 Hessian-vector product 近似),约束半径 $\Delta$
**输出:** 步长 $d$
```
d_0 = 0, r_0 = g, z_0 = M r_0
for k = 0, 1, 2, ...:
if ||r_k|| < ε: break
α = (r_k^T z_k) / (p_k^T H p_k) # 计算步长
d_{k+1} = d_k + α p_k
r_{k+1} = r_k - α H p_k
z_{k+1} = M r_{k+1}
β = (r_{k+1}^T z_{k+1}) / (r_k^T z_k)
p_{k+1} = z_{k+1} + β p_k
```
**终止判据:** 当步长 $\|d_k\|$ 达到约束边界 $\Delta$ 时停止(自然梯度计算中,$\Delta$ 控制更新幅度)。
#### Hessian-vector product 的高效计算
深度网络中,完整的 $H$ 无法存储。K-FAC 提供近似:
$$
H v \approx (A^{-1} \otimes B^{-1}) v
$$
利用 Kronecker 性质:
$$
H v = \text{vec}(A^{-1} \cdot \text{mat}(v) \cdot B)
$$
只需存储 $A^{-1}, B^{-1}$,复杂度 $O(d_{\text{in}} \cdot d_{\text{out}})$。
---
### 5.4 TRPO 的完整流程
```
输入: 策略参数 θ_old, 约束 Δ
1. 计算梯度: g = ∇_θ J(θ_old)
2. 构建 Fisher 信息矩阵估计: F ≈ K-FAC(A, B)
3. 用共轭梯度法解 (F + λI)d = -g约束 ||d|| ≤ Δ
4. 线搜索确保满足 KL 约束:
θ_new = θ_old + α d, α ∈ {0.1, 0.3, 0.5, 0.8, 1.0}
直到 D_KL(π_old || π_new) ≤ Δ
5. 更新: θ_old = θ_new
```
**关键特性:**
- 约束显式控制策略变化幅度(相比 Adam/AdamW 的隐式控制)
- 共轭梯度保证 $O(n)$ 步求解($n$ 为参数维度)
- 线搜索确保收敛稳定性
---
## 6. 总结与对比
### 6.1 方法对比
| 方法 | 复杂度 | 收敛速度 | 自适应学习率 | 收敛保证 |
|------|--------|----------|--------------|----------|
| 梯度下降 | $O(n)$ | 线性 | 否 | 凸/强凸 |
| 牛顿法 | $O(n^3)$ | 二阶 | 否 | 局部 |
| 共轭梯度 | $O(n^2)$ | 线性(条件数依赖) | 否 | 二次 |
| AdaGrad | $O(n)$ | 次线性 | 是 | 凸 |
| RMSProp | $O(n)$ | 实践有效 | 是 | 无 |
| Adam | $O(n)$ | 实践有效 | 是 | 次线性 |
| 自然梯度 | $O(n^3)$(未近似) | 快速 | 天然 | 局部 |
| K-FAC | $O(n)$ | 实践有效 | 是 | 近似 |
| TRPO | $O(n)$ | 稳定 | 否 | 有约束 |
### 6.2 选择建议
**小规模问题($n < 10^4$**
- 牛顿法、共轭梯度法优先
**大规模深度学习($n > 10^6$**
- Adam/AdamW 作为默认选择
- 若需二阶信息,用 K-FAC 近似自然梯度
**策略优化Reinforcement Learning**
- TRPO 提供稳定收敛
**直觉总结:**
- 一阶方法梯度下降、SGD简单但慢
- 自适应方法Adam/RMSProp在深度学习中平衡效率与效果
- 二阶方法Newton、K-FAC在计算允许时能提供更快的收敛
- 约束方法TRPO在策略更新中提供安全性保证
---
## 附录 A关键数学结论
### A.1 强凸与平滑的定义
**定义 A.1 ($\mu$-强凸)**
函数 $f$ 为 $\mu$-强凸,若:
$$
f(y) \geq f(x) + \langle \nabla f(x), y-x \rangle + \frac{\mu}{2} \|y-x\|_2^2, \quad \forall x,y
$$
**定义 A.2 ($\beta$-平滑)**
函数 $f$ 为 $\beta$-平滑,若:
$$
f(y) \leq f(x) + \langle \nabla f(x), y-x \rangle + \frac{\beta}{2} \|y-x\|_2^2, \quad \forall x,y
$$
### A.2 矩阵微积分常用公式
**向量梯度:**
$$
\nabla_x (b^T x) = b, \quad \nabla_x (x^T A x) = (A + A^T)x
$$
**Kronecker 性质:**
$$
(A \otimes B) \text{vec}(X) = \text{vec}(A X B^T)
$$
---
*本笔记基于优化理论与深度学习交叉领域的经典工作编写,重点在于建立从理论到实践的桥梁。*