1. 背景知识
1.1 什么是优化问题?
在机器学习和人工智能中,许多问题可以归结为优化问题,即寻找一个参数向量 θ ∈ R d \theta \in \mathbb{R}^d θ∈Rd,使得目标函数 f ( θ ) f(\theta) f(θ) 最小化。数学上,优化问题通常表示为: min θ ∈ R d f ( θ ) \min_{\theta \in \mathbb{R}^d} f(\theta) θ∈Rdminf(θ) 其中, f ( θ ) f(\theta) f(θ) 通常是损失函数(例如,均方误差、交叉熵损失等)。
然而,在许多实际场景中,参数 θ \theta θ 并非完全自由,而是受到某些约束。例如, θ \theta θ 可能需要满足:
- 非负约束: θ i ≥ 0 , ∀ i \theta_i \geq 0, \forall i θi≥0,∀i
- 范数约束: ∥ θ ∥ 2 ≤ r \|\theta\|_2 \leq r ∥θ∥2≤r
- 概率约束: ∑ i θ i = 1 , θ i ≥ 0 \sum_i \theta_i = 1, \theta_i \geq 0 ∑iθi=1,θi≥0
这些约束使得优化问题变为约束优化问题: min θ ∈ C f ( θ ) \min_{\theta \in \mathcal{C}} f(\theta) θ∈Cminf(θ) 其中, C ⊆ R d \mathcal{C} \subseteq \mathbb{R}^d C⊆Rd 是一个约束集,通常是凸集。
1.2 随机梯度下降(SGD)简介
随机梯度下降(SGD)是无约束优化问题中常用的方法。对于目标函数 f ( θ ) = 1 n ∑ i = 1 n f i ( θ ) f(\theta) = \frac{1}{n} \sum_{i=1}^n f_i(\theta) f(θ)=n1∑i=1nfi(θ),SGD通过随机采样一个样本(或小批量样本)计算梯度来更新参数。SGD的更新规则为: θ t + 1 = θ t − η t ∇ f i t ( θ t ) \theta_{t+1} = \theta_t - \eta_t \nabla f_{i_t}(\theta_t) θt+1=θt−ηt∇fit(θt) 其中:
- η t \eta_t ηt 是学习率(步长),可以是固定的或随时间递减。
- ∇ f i t ( θ t ) \nabla f_{i_t}(\theta_t) ∇fit(θt) 是随机采样的梯度, i t i_t it 是随机选择的样本索引。
SGD的优点是计算效率高,适合大规模数据集,但它无法直接处理约束优化问题,因为更新后的 θ t + 1 \theta_{t+1} θt+1 可能不在约束集 C \mathcal{C} C 中。
1.3 约束优化与投影的概念
为了解决约束优化问题,我们需要在每次更新后确保参数 θ \theta θ 仍然在约束集 C \mathcal{C} C 内。这就是投影的作用。投影操作将一个点映射到约束集 C \mathcal{C} C 上,通常定义为: Π C ( x ) = arg min y ∈ C ∥ y − x ∥ 2 2 \Pi_{\mathcal{C}}(x) = \arg\min_{y \in \mathcal{C}} \|y - x\|_2^2 ΠC(x)=