Q28: 证明凸函数 f 的 Jensen 不等式 ![f(E[X]) \leq E[f(X)]](https://latex.youkuaiyun.com/eq?f%28E%5BX%5D%29%20%5Cleq%20E%5Bf%28X%29%5D)
凸函数与 Jensen 不等式是啥?
凸函数就像向上开口的碗,比如 ,任意两点连线上的点都在函数图像上方。Jensen 不等式说的是:凸函数在随机变量期望处的函数值,不超过函数值的期望,即
。举个例子,抛一枚硬币,正面得 1 分,反面得 3 分,得分的期望
,
,而得分平方的期望
,显然
,这就是 Jensen 不等式的直观体现。
证明过程
以离散随机变量为例,假设 X 取 的概率为
,则
。
- 当
时,凸函数性质直接给出
。
- 假设
时成立,当
时,令前 k 项的概率和为
,则
,利用凸函数性质和归纳假设可得:
连续型随机变量可通过离散化近似证明。
在 LLM 中的使用
- 损失函数分析:LLM 训练中,若损失函数是凸函数(如线性回归损失),Jensen 不等式可分析 “平均损失” 与 “损失平均” 的关系。例如,在对比学习中,计算多个样本对的平均损失时,通过
确保模型优化方向,避免因样本噪声导致的局部最优。
- 正则化设计:L2 正则化
是凸函数,利用 Jensen 不等式可分析参数期望的约束效果。例如,若参数 w 的期望
趋近于 0,Jensen 不等式表明
,即正则化项会推动参数分布集中在原点附近,抑制过拟合。
代码示例:
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}")
代码解释: 代码通过定义凸函数 和离散随机变量 X(取值 1 和 3,概率各 0.5),计算出
,
,
,验证了
。这模拟了 LLM 中分析损失或参数期望的场景,帮助理解凸函数性质在优化中的作用。
Q29: 推导对偶问题(Dual Problem)的 Slater 条件强对偶性证明
Slater 条件与强对偶性是啥?
Slater 条件是凸优化中的关键假设,要求存在一个可行解严格满足所有不等式约束(即 )。强对偶性指原问题与对偶问题的最优值相等,这意味着可以通过求解更简单的对偶问题来间接解决原问题。例如,原问题是 “在圆内找一点使函数值最小”,对偶问题可能转化为 “在圆外找切线使函数值最大”,Slater 条件确保两者的最优解一致。
证明思路
- 构造拉格朗日函数:原问题为
,约束
(
),构造
,其中
是拉格朗日乘子。
- 定义原问题与对偶问题:
- 原问题:
- 对偶问题:
- 原问题:
- Slater 条件的作用:若存在
使
,且
是凸函数,则强对偶性成立(
)。证明通过凸集分离定理,构造超平面分离原问题和对偶问题的可行域,从而证明最优值相等。
在 LLM 中的使用
- 模型压缩中的约束优化:在 LLM 剪枝中,原问题是 “在保留
神经元的约束下最小化模型损失”,通过 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 求导得到解析解。当
时,对偶函数值为 0,原问题最优解
处函数值也为 0,验证了强对偶性。Slater 条件在此处成立(
使
),确保了对偶问题与原问题等价,模拟了 LLM 中利用对偶性简化约束优化的过程。
3035

被折叠的 条评论
为什么被折叠?



