61-机器学习与大模型开发数学教程-5-8 约束非线性优化

一句话版:当"只能在规定范围内动"的时候(参数要落在某个集合里、概率要和为 1、范数不能超标......),就成了约束优化 。工具箱里有四大派:投影/近端惩罚/障碍增广拉格朗日/ADMM顺序二次规划(SQP)。选对方法,你就能又稳又快地在"围栏里"找到好解。


1. 开场类比:带围栏的公园找低点

无约束优化像在山坡上找最低点;有约束优化像围起了栅栏 的公园:你必须在栅栏内下山。

  • 等式约束 h i ( x ) = 0 h_i(x)=0 hi(x)=0:像"不能越线"。
  • 不等式约束 g j ( x ) ≤ 0 g_j(x)\le 0 gj(x)≤0:像"不能进入禁区"。
  • 集合约束 x ∈ C x\in\mathcal{C} x∈C:像"只能在草坪上走"。

2. 标准形式与可行域

我们最小化

min ⁡ x ∈ R d f ( x ) s.t.    g j ( x ) ≤ 0 ( j = 1.. m ) , h i ( x ) = 0 ( i = 1.. p ) . \min_{x\in\mathbb{R}^d} f(x)\quad \text{s.t. } \; g_j(x)\le 0~~(j=1..m),\quad h_i(x)=0~~(i=1..p). x∈Rdminf(x)s.t. gj(x)≤0 (j=1..m),hi(x)=0 (i=1..p).

  • 可行域 F = { x ∣ g ( x ) ≤ 0 ,   h ( x ) = 0 } \mathcal{F}=\{x\mid g(x)\le0,\,h(x)=0\} F={x∣g(x)≤0,h(x)=0}。

  • 机器学习里常见约束:

    • 概率单纯形 :注意力/类别概率 p ≥ 0 , 1 ⊤ p = 1 p\ge0,~\mathbf{1}^\top p=1 p≥0, 1⊤p=1。
    • 范数球 : ∥ w ∥ 2 ≤ R \|w\|_2\le R ∥w∥2≤R(防止过大权重)、 ∥ w ∥ 1 ≤ τ \|w\|_1\le \tau ∥w∥1≤τ(稀疏)。
    • 盒约束 :量化/裁剪 ℓ ≤ x ≤ u \ell\le x\le u ℓ≤x≤u。
    • 结构约束:低秩、正定(协方差/核矩阵)、正交(某些 LoRA/字典学习)。

3. KKT 条件(回顾版)

拉格朗日函数

L ( x , λ , ν ) = f ( x ) + ∑ j = 1 m λ j g j ( x ) + ∑ i = 1 p ν i h i ( x ) . \mathcal{L}(x,\lambda,\nu)=f(x)+\sum_{j=1}^m \lambda_j g_j(x)+\sum_{i=1}^p \nu_i h_i(x). L(x,λ,ν)=f(x)+j=1∑mλjgj(x)+i=1∑pνihi(x).

KKT 条件(局部极小的必要条件,凸问题里也充分):

  • 可行性:KaTeX parse error: Undefined control sequence: \* at position 7: g_j(x^\̲*̲)\le 0,\; h_i(x...
  • 驻点:KaTeX parse error: Undefined control sequence: \* at position 24: ... \mathcal{L}(x^\̲*̲,\lambda^\*,\nu...
  • 互补松弛:KaTeX parse error: Undefined control sequence: \* at position 11: \lambda_j^\̲*̲ g_j(x^\*)=0,\;...

这四条像"路标":告诉我们最优点要同时满足的几何与力平衡关系。


4. 四大套路:怎么在围栏里下山?

4.1 投影/近端(Projected/Proximal)

  • 投影梯度(PGD)

    x k + 1 = Π C ( x k − η ∇ f ( x k ) ) , x_{k+1}=\Pi_{\mathcal{C}}\big(x_k-\eta\nabla f(x_k)\big), xk+1=ΠC(xk−η∇f(xk)),

    把一步的无约束更新投影回可行域

    适合 简单集合(盒、ℓ2 球、单纯形、PSD 圆锥的近端等)。

  • 近端梯度(Prox)

    把"难的那部分"放进近端算子:

    x k + 1 = prox ⁡ η ϕ ( x k − η ∇ f ( x k ) ) ,    prox ⁡ η ϕ ( z ) = arg ⁡ min ⁡ x { ϕ ( x ) + 1 2 η ∥ x − z ∥ 2 } . x_{k+1}=\operatorname{prox}{\eta \phi}(x_k-\eta\nabla f(x_k)),\; \operatorname{prox}{\eta \phi}(z)=\arg\min_x\Big\{\phi(x)+\frac{1}{2\eta}\|x-z\|^2\Big\}. xk+1=proxηϕ(xk−η∇f(xk)),proxηϕ(z)=argxmin{ϕ(x)+2η1∥x−z∥2}.

    把约束写成指标函数 ϕ = ι C \phi=\iota_{\mathcal{C}} ϕ=ιC 就回到投影;把 L1 写成 ∥ x ∥ 1 \|x\|_1 ∥x∥1 就是软阈值

4.2 惩罚与障碍(Penalty/Barrier)

  • 二次惩罚:违规就罚

    min ⁡ x f ( x ) + μ ∑ j [ g j ( x ) ] + 2 + μ ∑ i h i ( x ) 2 . \min_x f(x)+\mu\sum_j [g_j(x)]_+^2+\mu\sum_i h_i(x)^2. xminf(x)+μj∑[gj(x)]+2+μi∑hi(x)2.

    μ ↑ \mu\uparrow μ↑ 可逼近约束,但数值可能变"硬"。

  • 内点法(障碍函数) :在可行域内部走,靠近边界会被"热得烫回去"

    min ⁡ g ( x ) < 0 f ( x ) − 1 t ∑ j log ⁡ ( − g j ( x ) ) . \min_{g(x)<0} f(x)-\tfrac{1}{t}\sum_j \log(-g_j(x)). g(x)<0minf(x)−t1j∑log(−gj(x)).

    随 t ↑ t\uparrow t↑(障碍变弱),解逼近最优。适合凸问题的大规模精确求解(经典 LP/QP/SOCP/SDP 的主力)。

4.3 增广拉格朗日与 ADMM

  • 增广拉格朗日(ALM):在拉格朗日上加二次罚,既约束又稳:

    L μ ( x , λ ) = f ( x ) + λ ⊤ c ( x ) + μ 2 ∥ c ( x ) ∥ 2 . \mathcal{L}_\mu(x,\lambda)=f(x)+\lambda^\top c(x)+\tfrac{\mu}{2}\|c(x)\|^2. Lμ(x,λ)=f(x)+λ⊤c(x)+2μ∥c(x)∥2.

    交替最小化 x x x 并更新乘子 λ \lambda λ。等式/线性约束时很强。

  • ADMM :把难题拆成两块,交替优化并通过乘子协调:

    min ⁡ x , z f ( x ) + g ( z )    s.t. A x + B z = c . \min_{x,z} f(x)+g(z)\;\text{s.t. } Ax+Bz=c. x,zminf(x)+g(z)s.t. Ax+Bz=c.

    每步只解各自容易的子问题 (如一个是二次、一个是软阈值)。在稀疏学习(Lasso)图模型分布式训练很常见。

4.4 顺序二次规划(SQP)

每步解一个**二次规划(QP)**近似原问题(把约束线性化、目标二次化),再做信赖域/线搜索。

优点:二阶信息 + 显式处理约束,在非线性约束下很强。代价:每步解 QP(可用内点法/活性集)。


5. 方法选择







确定约束类型
集合是否易投影?
投影/近端 (PGD/Prox)
问题是否凸?
内点法/障碍
结构可分?
ADMM/ALM
顺序二次规划

说明:能投影就先投影;凸问题追求高精度用内点;可分解就用 ADMM/ALM;复杂非线性就上 SQP。


6. 常见投影/近端操作(机器学习高频)

6.1 盒约束 [ ℓ , u ] [\ell,u] [ℓ,u]

Π [ ℓ , u ] ( z ) = min ⁡ ( max ⁡ ( z , ℓ ) , u ) \Pi_{[\ell,u]}(z)=\min(\max(z,\ell),u) Π[ℓ,u](z)=min(max(z,ℓ),u)(逐坐标裁剪)。
用处:梯度裁剪、量化范围限制、门控参数。

6.2 ℓ2 球 ∥ x ∥ 2 ≤ R \|x\|_2\le R ∥x∥2≤R

若 ∥ z ∥ 2 ≤ R \|z\|_2\le R ∥z∥2≤R 保持;否则投影为 R z / ∥ z ∥ 2 R z/\|z\|_2 Rz/∥z∥2。
用处:权重最大范数、对抗训练约束。

6.3 概率单纯形 Δ = { p ≥ 0 , 1 ⊤ p = 1 } \Delta=\{p\ge0,~\mathbf{1}^\top p=1\} Δ={p≥0, 1⊤p=1}

排序阈值法(Duchi 等):

  1. 排序 z z z 得 u u u,找最大的 ρ \rho ρ 使 u ρ − 1 ρ ( ∑ j ≤ ρ u j − 1 ) > 0 u_\rho - \frac{1}{\rho}(\sum_{j\le \rho}u_j -1)>0 uρ−ρ1(∑j≤ρuj−1)>0;
  2. θ = 1 ρ ( ∑ j ≤ ρ u j − 1 ) \theta = \frac{1}{\rho}(\sum_{j\le \rho}u_j-1) θ=ρ1(∑j≤ρuj−1);
  3. p i = max ⁡ ( z i − θ , 0 ) p_i=\max(z_i-\theta,0) pi=max(zi−θ,0)。
    用处:softmax 后概率校正、注意力/分配问题。

6.4 ℓ1 球 ∥ x ∥ 1 ≤ τ \|x\|_1\le \tau ∥x∥1≤τ

若 ∥ z ∥ 1 ≤ τ \|z\|_1\le\tau ∥z∥1≤τ 保持;否则对 ∣ z ∣ |z| ∣z∣ 做阈值 θ \theta θ(满足 ∑ i max ⁡ ( ∣ z i ∣ − θ , 0 ) = τ \sum_i \max(|z_i|-\theta,0)=\tau ∑imax(∣zi∣−θ,0)=τ),返回 sign ⁡ ( z ) ⊙ max ⁡ ( ∣ z ∣ − θ , 0 ) \operatorname{sign}(z)\odot\max(|z|-\theta,0) sign(z)⊙max(∣z∣−θ,0)。
用处:稀疏约束、特征选择。

这四个投影都能线性时间 实现,非常适合PGD/近端梯度循环。


7. 两个实战小案例

7.1 例 A:带范数约束的逻辑回归(PGD)

min ⁡ w 1 n ∑ i = 1 n log ⁡ ( 1 + exp ⁡ ( − y i w ⊤ x i ) ) s.t. ∥ w ∥ 2 ≤ R . \min_w \frac{1}{n}\sum_{i=1}^n \log\big(1+\exp(-y_i w^\top x_i)\big)\quad\text{s.t. } \|w\|_2\le R. wminn1i=1∑nlog(1+exp(−yiw⊤xi))s.t. ∥w∥2≤R.

  • 步骤:普通梯度步 → 投影到 ℓ2 球。
  • 含义:和 L2 正则相似,但硬约束 更可控,尤其对公平性/鲁棒性的指标。

7.2 例 B:Lasso 的 ADMM 拆分

min ⁡ x 1 2 ∥ A x − b ∥ 2 2 + λ ∥ x ∥ 1 ⇔ min ⁡ x , z 1 2 ∥ A x − b ∥ 2 2 + λ ∥ z ∥ 1    s.t. x = z . \min_x \tfrac12\|Ax-b\|_2^2+\lambda\|x\|1 \quad \Leftrightarrow\quad \min{x,z} \tfrac12\|Ax-b\|_2^2+\lambda\|z\|_1\;\text{s.t. }x=z. xmin21∥Ax−b∥22+λ∥x∥1⇔x,zmin21∥Ax−b∥22+λ∥z∥1s.t. x=z.

  • x 步 :解 ( A ⊤ A + ρ I ) x = A ⊤ b + ρ ( z − u ) (A^\top A+\rho I)x=A^\top b+\rho(z-u) (A⊤A+ρI)x=A⊤b+ρ(z−u)(可预分解/CG)。
  • z 步 :软阈值 z = shrink ⁡ ( x + u , λ / ρ ) z=\operatorname{shrink}(x+u,\lambda/\rho) z=shrink(x+u,λ/ρ)。
  • u 步 :乘子更新 u ← u + x − z u\leftarrow u+x-z u←u+x−z。
    优势:把二次L1 解耦,易并行/分布式。

8. 增广拉格朗日(ALM)流程图



初始化 x, λ, μ
最小化 L_μ(x, λ)
更新乘子 λ := λ + μ c(x)
是否收敛?
调整 μ 或信赖域
输出 x, λ

说明:在"罚"与"对偶"两头用力,既不跑出可行域,又能稳定收敛。


9. 与深度学习/大模型的连接

  • 概率/归一化约束 :注意力分配、温度标定、后处理校正 → 用单纯形投影 或在损失后再投影
  • 范数/鲁棒 : ∥ w ∥ 2 \|w\|_2 ∥w∥2 或对抗半径 ∥ δ ∥ p ≤ ϵ \|\delta\|_p\le \epsilon ∥δ∥p≤ϵ → PGD 是对抗攻击/鲁棒训练的核心循环。
  • 低秩/正交 :LoRA/瓶颈层可加近端或极化/QR投影维持结构;
  • 正定矩阵 :协方差/核矩阵约束 Σ ≻ 0 \Sigma\succ0 Σ≻0 可做 Σ ← Π S + + ( Σ ) \Sigma\leftarrow \Pi_{\mathbb{S}_{++}}(\Sigma) Σ←ΠS++(Σ)(如特征分解截断)。
  • 分布式/大规模ADMM/ALM 将大问题切小块,适配数据并行/模型并行
  • 强化学习的约束 MDP :期望代价 ≤ \le ≤ 阈值可用拉格朗日乘子在线更新(Actor-Critic + 对偶上升)。

10. 代码微件(可直接嵌到训练循环)

(1) 概率单纯形投影(NumPy)

python 复制代码
import numpy as np

def proj_simplex(z):
    # 投影到 {p>=0, sum p = 1}
    u = np.sort(z)[::-1]
    cssv = np.cumsum(u)
    rho = np.where(u > (cssv - 1) / (np.arange(len(u)) + 1))[0][-1]
    theta = (cssv[rho] - 1) / (rho + 1.0)
    return np.maximum(z - theta, 0.0)

(2) ℓ1 球投影(Duchi 阈值法)

python 复制代码
def proj_l1_ball(z, tau=1.0):
    if np.linalg.norm(z, 1) <= tau: 
        return z.copy()
    u = np.abs(z)
    s = np.sort(u)[::-1]
    cssv = np.cumsum(s)
    rho = np.where(s > (cssv - tau) / (np.arange(len(s)) + 1))[0][-1]
    theta = (cssv[rho] - tau) / (rho + 1.0)
    return np.sign(z) * np.maximum(u - theta, 0.0)

(3) 投影梯度(范数约束)

python 复制代码
def pgd_step(x, grad, lr=1e-2, R=1.0):
    z = x - lr * grad
    nrm = np.linalg.norm(z)
    return z if nrm <= R else (R / nrm) * z

11. 常见坑与排错

  1. 投影太贵:复杂集合(如一般 PSD、低秩)投影昂贵。

    • 对策:选近端可解 的重参数化(例如 Cholesky 保证 PSD),或换 ALM/ADMM
  2. 惩罚参数难调 : μ \mu μ 太小约束不严,太大数值不稳。

    • 对策:使用 增广拉格朗日 (同时调 λ , μ \lambda,\mu λ,μ),分阶段增大 μ \mu μ。
  3. 内点法需要可行初值:不等式必须严格可行。

    • 对策:做 Phase I 找初始可行点,或使用滤波/信赖域策略。
  4. ADMM 子问题不精确:每步解不好会慢/不收敛。

    • 对策:控制内层精度、用预分解、合理选 ρ \rho ρ(自适应 ρ \rho ρ 常有效)。
  5. 非凸约束:正交/低秩等会有局部解。

    • 对策:良好初始化、随机重启、配合二阶信息几何优化(在流形上做梯度)。

12. 练习(含提示)

  1. KKT 推导 :对 min ⁡ x 1 2 ∥ x ∥ 2 \min_x \tfrac12\|x\|^2 minx21∥x∥2 s.t. a ⊤ x = b a^\top x=b a⊤x=b 推导 KKT,并给出闭式解。
  2. PGD 与 L2 正则 :比较" ∥ w ∥ 2 ≤ R \|w\|_2\le R ∥w∥2≤R"与" λ ∥ w ∥ 2 2 \lambda\|w\|_2^2 λ∥w∥22"在逻辑回归上的差异(边界是否被触达)。
  3. 单纯形投影 :证明上面的投影算法确实满足 ∑ p i = 1 , p ≥ 0 \sum p_i=1,p\ge0 ∑pi=1,p≥0。
  4. ADMM-Lasso :实现并在不同 ρ \rho ρ 下比较收敛;画原始/对偶残差曲线。
  5. 障碍法轨迹 :在二维不等式约束的玩具问题上,画出不同 t t t 的最优点如何靠近边界。
  6. SQP 小例 :求 min ⁡ x , y ( x − 1 ) 2 + ( y − 2 ) 2 \min_{x,y} (x-1)^2+(y-2)^2 minx,y(x−1)2+(y−2)2 s.t. x 2 + y 2 ≥ 1 x^2+y^2\ge 1 x2+y2≥1 的一步 SQP 近似(写出 QP)。

13. 小结(带走三句话)

  1. 约束优化的灵魂是可行域 :要么投影回去 ,要么把边界变成力(惩罚/障碍/对偶)。
  2. 四大派各有所长:PGD/Prox(快,投影简单时优先)、内点(凸高精度)、ALM/ADMM(可分可并行)、SQP(复杂非线性强手)。
  3. 在机器学习/大模型里,把常见结构(概率、范数、正定、低秩)变成可高效投影/近端,你就能把"围栏里的最优"优雅地拿下。
相关推荐
子午2 小时前
【2026计算机毕设】水果识别分类系统~python+深度学习+人工智能+算法模型+TensorFlow
人工智能·python·深度学习
yuezhilangniao2 小时前
AI从“我=I”到“关系计算”:Transformer入门指南-理解疯狂计算关系的Transformer
人工智能·深度学习·transformer
救救孩子把2 小时前
62-机器学习与大模型开发数学教程-5-9 KKT条件详解
人工智能·线性代数·机器学习
明月照山海-2 小时前
机器学习周报三十二
机器学习
治愈系科普2 小时前
数字化种植牙企业
大数据·人工智能·python
AI数据皮皮侠2 小时前
中国植被生物量分布数据集(2001-2020)
大数据·人工智能·python·深度学习·机器学习
庄小焱2 小时前
信贷模型域——智能风控建模业务与数据
人工智能·信贷风控·信贷域·信贷建模
AC赳赳老秦2 小时前
剪映 + DeepSeek:短视频脚本生成与图文成片文案优化实战指南
人工智能·程序员创富·短视频·抖音·自媒体·剪映·deepseek
123_不打狼2 小时前
自然语言处理简介
人工智能·自然语言处理