LLM大模型中的基础数学工具——凸优化

Q28: 证明凸函数 f 的 Jensen 不等式 f(E[X]) \leq E[f(X)]

凸函数与 Jensen 不等式是啥?

凸函数就像向上开口的碗,比如 f(x) = x^2,任意两点连线上的点都在函数图像上方。Jensen 不等式说的是:凸函数在随机变量期望处的函数值,不超过函数值的期望,即 f(E[X]) \leq E[f(X)]。举个例子,抛一枚硬币,正面得 1 分,反面得 3 分,得分的期望 E[X] = 2f(E[X]) = 2^2 = 4,而得分平方的期望 E[f(X)] = \frac{1^2 + 3^2}{2} = 5,显然 4 \leq 5,这就是 Jensen 不等式的直观体现。

证明过程

以离散随机变量为例,假设 X 取 x_1, x_2, \dots, x_n 的概率为 p_1, p_2, \dots, p_n,则 E[X] = \sum p_i x_i

  • 当 n=2 时,凸函数性质直接给出 f(p_1x_1 + p_2x_2) \leq p_1f(x_1) + p_2f(x_2)
  • 假设 n=k 时成立,当 n=k+1 时,令前 k 项的概率和为 \lambda = \sum_{i=1}^k p_i,则 E[X] = \lambda \cdot \frac{\sum_{i=1}^k p_i x_i}{\lambda} + p_{k+1}x_{k+1},利用凸函数性质和归纳假设可得:f(E[X]) \leq \lambda f\left(\frac{\sum_{i=1}^k p_i x_i}{\lambda}\right) + p_{k+1}f(x_{k+1}) \leq \sum_{i=1}^{k+1} p_i f(x_i) = E[f(X)] 连续型随机变量可通过离散化近似证明。

在 LLM 中的使用

  • 损失函数分析:LLM 训练中,若损失函数是凸函数(如线性回归损失),Jensen 不等式可分析 “平均损失” 与 “损失平均” 的关系。例如,在对比学习中,计算多个样本对的平均损失时,通过 f(E[X]) \leq E[f(X)] 确保模型优化方向,避免因样本噪声导致的局部最优。
  • 正则化设计:L2 正则化 \|w\|^2 是凸函数,利用 Jensen 不等式可分析参数期望的约束效果。例如,若参数 w 的期望 E[w]趋近于 0,Jensen 不等式表明 E[\|w\|^2] \geq \|E[w]\|^2 = 0,即正则化项会推动参数分布集中在原点附近,抑制过拟合。

代码示例

import torch  

# 定义凸函数  
def convex_func(x):  
    return x ** 2  

# 随机变量取值及概率分布  
x = torch.tensor([1.0, 3.0])  
probs = torch.tensor([0.5, 0.5])  

# 计算期望 E[X]  
expected_x = torch.sum(x * probs)  
# 计算 f(E[X])  
f_expected = convex_func(expected_x)  
# 计算 E[f(X)]  
expected_f = torch.sum(convex_func(x) * probs)  

print(f"E[X] = {expected_x.item()}, f(E[X]) = {f_expected.item()}")  
print(f"E[f(X)] = {expected_f.item()}")  
print(f"Jensen不等式成立:{f_expected <= expected_f}")  

代码解释: 代码通过定义凸函数 f(x) = x^2 和离散随机变量 X(取值 1 和 3,概率各 0.5),计算出 E[X] = 2f(E[X]) = 4E[f(X)] = 5,验证了 f(E[X]) \leq E[f(X)]。这模拟了 LLM 中分析损失或参数期望的场景,帮助理解凸函数性质在优化中的作用。

Q29: 推导对偶问题(Dual Problem)的 Slater 条件强对偶性证明

Slater 条件与强对偶性是啥?

Slater 条件是凸优化中的关键假设,要求存在一个可行解严格满足所有不等式约束(即 g_i(x) < 0)。强对偶性指原问题与对偶问题的最优值相等,这意味着可以通过求解更简单的对偶问题来间接解决原问题。例如,原问题是 “在圆内找一点使函数值最小”,对偶问题可能转化为 “在圆外找切线使函数值最大”,Slater 条件确保两者的最优解一致。

证明思路

  1. 构造拉格朗日函数:原问题为 \min_x f(x),约束 g_i(x) \leq 0i=1,\dots,m),构造 L(x, \lambda) = f(x) + \sum_{i=1}^m \lambda_i g_i(x),其中 \lambda \geq 0是拉格朗日乘子。
  2. 定义原问题与对偶问题
    • 原问题:p^* = \min_x \max_{\lambda \geq 0} L(x, \lambda)
    • 对偶问题:d^* = \max_{\lambda \geq 0} \min_x L(x, \lambda)
  3. Slater 条件的作用:若存在 x_0 使 g_i(x_0) < 0,且 f(x), g_i(x) 是凸函数,则强对偶性成立(p^* = d^*)。证明通过凸集分离定理,构造超平面分离原问题和对偶问题的可行域,从而证明最优值相等。

在 LLM 中的使用

  • 模型压缩中的约束优化:在 LLM 剪枝中,原问题是 “在保留 k \% 神经元的约束下最小化模型损失”,通过 Slater 条件和强对偶性,可将其转化为对偶问题 “最大化拉格朗日乘子对应的松弛项”,从而高效求解最优剪枝参数。例如,L1 正则化剪枝中,Slater 条件保证对偶问题与原问题等价,避免因约束复杂导致的优化困难。
  • 多任务权重平衡:LLM 处理多任务时,原问题是 “在各任务损失不超过阈值的约束下最小化总损失”,对偶问题可转化为 “为各任务分配权重以最大化总损失的下界”。例如,同时训练文本分类和情感分析任务时,利用强对偶性平衡任务权重,确保模型在所有任务上的性能。

代码示例

import torch  

# 原问题:min f(x) = x²,约束 g(x) = x - 1 ≤ 0(凸问题)  
# 拉格朗日函数:L(x, λ) = x² + λ(x - 1),λ ≥ 0  

# 求解对偶函数 θ(λ) = min_x L(x, λ)  
def dual_function(lam):  
    # 对x求导并令导数为0,得x = -lam/2  
    x_opt = -lam / 2  
    return x_opt ** 2 + lam * (x_opt - 1)  

# 计算对偶问题最优值(λ ≥ 0)  
lam_opt = torch.tensor(0.0)  # 因约束x=0满足g(x)=-1<0,Slater条件成立  
theta_opt = dual_function(lam_opt)  

# 原问题最优值(x=0)  
f_opt = torch.tensor(0.0) ** 2  

print(f"对偶问题最优值:{theta_opt.item()}")  
print(f"原问题最优值:{f_opt.item()}")  
print(f"强对偶性成立:{theta_opt == f_opt}")  

代码解释: 代码定义了一个简单的凸优化问题,原问题在 x \leq 1 下最小化 x^2,对偶函数通过对 x 求导得到解析解。当 \lambda = 0 时,对偶函数值为 0,原问题最优解 x=0 处函数值也为 0,验证了强对偶性。Slater 条件在此处成立(x=0 使 g(x) = -1 < 0),确保了对偶问题与原问题等价,模拟了 LLM 中利用对偶性简化约束优化的过程。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨顿

唵嘛呢叭咪吽

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值