资讯动态

凸分析工具链:示性函数、共轭函数与对偶范数实战指南

发布时间:2026/10/9 18:41:11 来源:尧图企业网站定制
1. 从示性函数到共轭函数一套被低估的凸分析工具链示性函数、共轭函数、对偶范数、共轭——这四个词放在一起很多人第一反应是“凸优化课本里的东西考试完就还给老师了”。但我自己做过几个涉及稀疏建模和正则化求解的项目之后越来越觉得这套工具被严重低估了。它们不是孤立的概念而是一条完整的逻辑链示性函数负责把约束“编码”进目标函数共轭函数负责把原问题“翻转”到对偶空间对偶范数则告诉你正则项到底在惩罚什么几何结构而共轭运算就是贯穿始终的那把钥匙。这篇文章面向的读者是学过一点凸优化、能看懂梯度下降和拉格朗日乘子法但一遇到“共轭”“对偶范数”就发懵的工程师和研究生。我会用大量生活化类比和可复现的代码片段把这四个概念串成一条线让你不仅知道定义更知道它们在建模和求解时到底怎么用、什么时候用、用的时候容易踩什么坑。先说结论如果你在做Lasso、组Lasso、矩阵补全、鲁棒PCA这类问题这四个概念几乎无处不在。不理解它们你调参就是瞎调看论文就是看天书。理解它们之后你会发现很多看似复杂的正则项其实都是某个范数的对偶在起作用。2. 示性函数把约束“藏”进目标函数的魔术2.1 示性函数的定义与直觉理解示性函数Indicator Function的定义非常简单对于集合 ( C )其示性函数 ( I_C(x) ) 定义为当 ( x \in C ) 时( I_C(x) 0 )当 ( x otin C ) 时( I_C(x) \infty )就这么简单。但它的威力在于它可以把一个带约束的优化问题等价地转化成一个无约束的优化问题。举个例子。原始问题[ \min_x f(x) \quad ext{s.t.} \quad x \in C ]引入示性函数后变成[ \min_x f(x) I_C(x) ]因为当 ( x otin C ) 时目标函数值为 ( \infty )优化器自然会避开这些点。这就像你在家里找东西示性函数相当于告诉你“出了这个房间就是万丈深渊”你自然只会在房间内搜索。注意示性函数不是普通函数它是一个扩展实值函数取值在 ( \mathbb{R} \cup {\infty} ) 中。这一点是后面共轭函数定义的基础很多人在这里翻车。2.2 为什么要把约束变成示性函数你可能会问我直接用投影梯度法或者罚函数法不行吗为什么非要引入示性函数我踩过的坑是这样的投影梯度法需要你能够高效地计算投影算子对于简单约束比如箱约束、球约束没问题但对于复杂约束比如低秩约束、单纯形约束投影本身就是一个难题。而示性函数的好处是它把约束的“处理”推迟到了共轭函数和对偶问题中很多时候对偶问题反而有闭式解。另一个场景是近端梯度法Proximal Gradient。近端算子 ( ext{prox}_{\lambda I_C}(v) ) 实际上就是投影到 ( C ) 上。所以示性函数的近端算子就是投影这给了我们一个统一的视角投影是示性函数的近端算子而近端算子是处理示性函数的通用工具。2.3 示性函数的共轭支撑函数登场示性函数的共轭函数是什么这是理解后面内容的关键一步。根据共轭函数的定义[ I_C^*(y) \sup_x { y^T x - I_C(x) } ]因为 ( I_C(x) ) 在 ( C ) 外为无穷大所以上确界只在 ( C ) 内取。于是[ I_C^*(y) \sup_{x \in C} y^T x ]这个量有个名字叫集合 ( C ) 的支撑函数Support Function。它表示用方向 ( y ) 去“探测”集合 ( C ) 时能得到的最大投影值。举个例子如果 ( C ) 是单位球 ( {x : |x|_2 \leq 1} )那么 ( I_C^*(y) |y|2 )。因为 ( \sup{|x|_2 \leq 1} y^T x |y|_2 )当 ( x ) 取 ( y/|y|_2 ) 时达到。这个结果很漂亮单位球的示性函数的共轭就是二范数。反过来二范数的共轭是单位球的示性函数。这就是共轭运算的对称美。实操心得记住几个常见集合的支撑函数能帮你快速写出对偶问题。比如单位球 ( \to ) 二范数单位球 ( \to ) 对偶范数一般情形仿射集 ( {x : Ax b} ) 的支撑函数在 ( A^T y 0 ) 时为 ( b^T y )否则为无穷大3. 共轭函数凸分析的“傅里叶变换”3.1 共轭函数的定义与几何意义共轭函数Conjugate Function也叫Fenchel共轭定义如下[ f^*(y) \sup_x { y^T x - f(x) } ]这个定义看起来抽象但几何意义非常清晰对于给定的斜率 ( y )共轭函数告诉你函数 ( f ) 的切线截距的最大值。想象你有一把斜率为 ( y ) 的直尺从下方去“顶”函数 ( f ) 的图像。你能顶到的最高截距即直线 ( y^T x - c ) 中 ( c ) 的最大值就是 ( f^*(y) )。换句话说共轭函数描述的是函数 ( f ) 的所有支撑超平面的截距。这跟傅里叶变换有点像傅里叶变换把函数从时域变到频域共轭函数把函数从“点”的视角变到“斜率”的视角。所以有人把共轭函数称为凸分析中的傅里叶变换。3.2 共轭函数的性质为什么它这么好用共轭函数有几个关键性质这些性质是它在优化中好用的根本原因性质一共轭函数总是凸的。不管 ( f ) 是不是凸的( f^* ) 一定是凸函数。因为它是关于 ( y ) 的一族仿射函数的上确界而上确界保持凸性。这意味着即使原问题非凸对偶问题也是凸的——这是对偶理论能工作的基石。性质二Fenchel不等式。对任意 ( x, y )有 ( f(x) f^*(y) \geq y^T x )。等号成立当且仅当 ( y ) 是 ( f ) 在 ( x ) 处的次梯度。这个不等式是推导对偶问题的起点。性质三二次共轭等于原函数在凸闭条件下。如果 ( f ) 是凸的且下半连续那么 ( f^{**} f )。这意味着共轭运算是一个对合运算就像傅里叶变换的逆变换一样。性质四共轭的共轭回到原函数。这给了我们一个重要的建模思路如果你想要一个函数它的共轭是某个已知函数你可以直接对已知函数再做一次共轭。3.3 常见函数的共轭速查表下面这张表是我自己整理的高频共轭函数对照表建议收藏原函数 ( f(x) )共轭函数 ( f^*(y) )定义域条件( \frac{1}{2}x^T Q x )( Q ) 正定( \frac{1}{2}y^T Q^{-1} y )全体( |x|_1 )( I_{{|y|_\infty \leq 1}}(y) )( |y|_\infty \leq 1 )( |x|_2 )( I_{{|y|_2 \leq 1}}(y) )( |y|_2 \leq 1 )( |x|_p )( p \geq 1 )( I_{{|y|_q \leq 1}}(y) )( |y|_q \leq 1 )( 1/p1/q1 )( -\log x )( x0 )( -1 - \log(-y) )( y 0 )( e^x )( y \log y - y )( y 0 )( I_C(x) )( \sup_{x \in C} y^T x )全体这张表里最值得注意的是第三行和第四行范数的共轭是对偶范数单位球的示性函数。这就是对偶范数概念的来源。注意表中 ( |x|_p ) 的共轭要求 ( p \geq 1 )。当 ( p1 ) 时对偶范数是无穷范数当 ( p2 ) 时对偶范数还是二范数当 ( p\infty ) 时对偶范数是一范数。这个对偶关系 ( 1/p1/q1 ) 是 Hölder 不等式的直接推论。4. 对偶范数正则化项背后的几何密码4.1 对偶范数的定义与计算对偶范数Dual Norm的定义是[ |y|* \sup{|x| \leq 1} y^T x ]也就是说对偶范数是单位球在原范数下的支撑函数。根据上一节的结论它正好是原范数的共轭在 ( y ) 处的值当 ( |y|_* \leq 1 ) 时共轭为0否则为无穷大。对于 ( \ell_p ) 范数对偶范数是 ( \ell_q ) 范数其中 ( 1/p1/q1 )。具体来说( \ell_1 ) 的对偶是 ( \ell_\infty )( \ell_2 ) 的对偶是 ( \ell_2 )( \ell_\infty ) 的对偶是 ( \ell_1 )对于矩阵范数核范数Nuclear Norm的对偶是谱范数Spectral Norm谱范数的对偶是核范数Frobenius范数的对偶是它自己这个对偶关系在正则化建模中至关重要。为什么因为对偶范数告诉你正则项的“惩罚方向”在哪里。4.2 对偶范数在正则化中的角色考虑一个通用的正则化问题[ \min_x f(x) \lambda |x| ]它的对偶问题通常涉及对偶范数的约束。具体来说如果 ( f ) 是光滑的对偶问题往往形如[ \max_y -f^(y) \quad ext{s.t.} \quad |y|_\leq \lambda ]这意味着原问题中的正则项 ( \lambda |x| )在对偶问题中变成了对偶范数的约束 ( |y|_\leq \lambda )。* 正则化参数 ( \lambda ) 控制的是对偶变量的可行域大小。这个视角非常有用。比如在Lasso中原问题是[ \min_\beta \frac{1}{2}|y - X\beta|_2^2 \lambda |\beta|_1 ]对偶问题是[ \max_\theta -\frac{1}{2}|\theta|2^2 \theta^T y \quad ext{s.t.} \quad |X^T \theta|\infty \leq \lambda ]看到没( \ell_1 ) 范数的对偶是 ( \ell_\infty ) 范数所以对偶约束是 ( |X^T \theta|_\infty \leq \lambda )。这个约束的几何意义是残差与每个特征的相关性都不能超过 ( \lambda )。这就是Lasso选择变量的本质——当某个特征与残差的相关性达到 ( \lambda ) 时该特征被纳入模型。4.3 对偶范数的计算实例让我用一个简单的数值例子来说明对偶范数怎么算。假设 ( x (3, -4)^T )计算它的 ( \ell_1 ) 范数和 ( \ell_\infty ) 范数( |x|_1 |3| |-4| 7 )( |x|_\infty \max(|3|, |-4|) 4 )对偶范数( \ell_1 ) 的对偶是 ( \ell_\infty )所以 ( |x|{1*} |x|\infty 4 )( \ell_\infty ) 的对偶是 ( \ell_1 )所以 ( |x|_{\infty*} |x|_1 7 )验证一下定义( |x|{1*} \sup{|z|_1 \leq 1} x^T z )。取 ( z (0, -1)^T )则 ( x^T z 4 )。取 ( z (1, 0)^T )则 ( x^T z 3 )。最大值确实是4。对于矩阵情形假设 ( A \begin{pmatrix} 1 2 \ 3 4 \end{pmatrix} )核范数 ( |A|_* \sum \sigma_i )其中 ( \sigma_i ) 是奇异值谱范数 ( |A|_2 \max \sigma_i )计算奇异值( A^T A \begin{pmatrix} 10 14 \ 14 20 \end{pmatrix} )特征值为 ( 15 \pm \sqrt{25196} 15 \pm \sqrt{221} \approx 15 \pm 14.87 )所以 ( \lambda_1 \approx 29.87, \lambda_2 \approx 0.13 )。奇异值为 ( \sqrt{29.87} \approx 5.47 ) 和 ( \sqrt{0.13} \approx 0.36 )。核范数 ( \approx 5.83 )谱范数 ( \approx 5.47 )核范数的对偶是谱范数所以 ( |A|_{*} |A|2 \approx 5.47 )。验证( \sup{|Z|_2 \leq 1} ext{tr}(A^T Z) )。取 ( Z u_1 v_1^T )最大奇异值对应的左右奇异向量则 ( ext{tr}(A^T Z) \sigma_1 \approx 5.47 )。正确。实操心得在矩阵补全问题中核范数正则化之所以能导致低秩解正是因为它的对偶是谱范数。对偶约束 ( |Z|_2 \leq \lambda ) 限制了残差矩阵的谱范数从而间接控制了补全矩阵的秩。这个直觉比单纯看核范数的定义有用得多。5. 共轭运算贯穿始终的建模与求解工具5.1 共轭在推导对偶问题中的核心作用现在我们把四个概念串起来。考虑一个一般的凸优化问题[ \min_x f(x) g(Ax) ]其中 ( f ) 和 ( g ) 都是凸函数。它的对偶问题可以通过共轭函数推导[ \max_y -f^(-A^T y) - g^(y) ]这个推导过程用到了Fenchel对偶。具体步骤是引入辅助变量 ( z Ax )问题变成 ( \min_{x,z} f(x) g(z) \quad ext{s.t.} \quad z Ax )写出拉格朗日函数 ( L(x,z,y) f(x) g(z) y^T(z - Ax) )对 ( x ) 和 ( z ) 分别求下确界得到 ( -f^(-A^T y) - g^(y) )对偶问题就是最大化这个关于 ( y ) 的函数这个推导的关键步骤就是共轭函数的定义。没有共轭函数你根本写不出对偶问题的闭式表达。5.2 共轭在近端算法中的应用近端算法Proximal Algorithms是求解非光滑优化问题的利器。近端算子的定义是[ ext{prox}_{\lambda f}(v) \arg\min_x \left{ f(x) \frac{1}{2\lambda}|x - v|_2^2 \right} ]这个定义本身就是一个优化问题。它的对偶问题可以通过共轭函数来刻画。事实上近端算子可以写成[ ext{prox}_{\lambda f}(v) v - \lambda abla f^*(\lambda v) ]其中 ( f^* ) 是 ( f ) 的共轭。这个公式在推导近端算法的收敛性时非常有用。更一般地对于 ( f(x) |x| )近端算子就是软阈值算子[ ext{prox}_{\lambda |\cdot|_1}(v)_i ext{sign}(v_i) \max(|v_i| - \lambda, 0) ]这个算子的推导用到了 ( \ell_1 ) 范数的共轭是 ( \ell_\infty ) 范数的示性函数这一事实。5.3 共轭在机器学习中的典型应用应用一支持向量机SVM。SVM的原问题是[ \min_{w,b} \frac{1}{2}|w|_2^2 \quad ext{s.t.} \quad y_i(w^T x_i b) \geq 1 ]通过共轭函数推导对偶得到[ \max_\alpha \sum_i \alpha_i - \frac{1}{2}\sum_{i,j} \alpha_i \alpha_j y_i y_j x_i^T x_j \quad ext{s.t.} \quad 0 \leq \alpha_i \leq C ]对偶问题中出现的核函数 ( K(x_i, x_j) x_i^T x_j ) 正是原问题中 ( |w|_2^2 ) 的共轭带来的。没有共轭就没有核方法。应用二Lasso的对偶。前面已经提到Lasso的对偶约束是 ( |X^T \theta|_\infty \leq \lambda )。这个约束的推导用到了 ( \ell_1 ) 范数的共轭。应用三矩阵补全。核范数正则化的矩阵补全问题其对偶问题涉及谱范数约束。这个对偶视角是理解为什么核范数能导致低秩解的关键。注意共轭函数在推导对偶问题时要求原函数是凸的且下半连续的。如果原函数非凸共轭函数仍然有定义但二次共轭不等于原函数对偶问题会出现对偶间隙。这是实际应用中需要警惕的地方。6. 实操案例从零实现一个基于共轭的Lasso求解器6.1 问题设定与数据生成让我们用一个完整的例子来串联这四个概念。目标是求解Lasso问题[ \min_\beta \frac{1}{2}|y - X\beta|_2^2 \lambda |\beta|_1 ]首先生成模拟数据import numpy as np np.random.seed(42) n, p 100, 50 X np.random.randn(n, p) beta_true np.zeros(p) beta_true[:5] [3, -2, 1.5, -1, 0.5] y X beta_true 0.1 * np.random.randn(n) lambda_val 0.5这里 ( n100 ) 个样本( p50 ) 个特征真实模型只有前5个特征非零。我们的目标是恢复这个稀疏结构。6.2 对偶问题的推导与求解Lasso的对偶问题是[ \max_\theta -\frac{1}{2}|\theta|2^2 \theta^T y \quad ext{s.t.} \quad |X^T \theta|\infty \leq \lambda ]这个对偶问题是一个二次规划约束是无穷范数球。我们可以用投影梯度法求解def dual_lasso(X, y, lambda_val, max_iter1000, tol1e-6): n, p X.shape theta np.zeros(n) L 1.0 # Lipschitz常数因为二次项系数为1 for k in range(max_iter): grad theta - y theta_new theta - (1/L) * grad # 投影到对偶可行域 v X.T theta_new # 软阈值投影 v_proj np.sign(v) * np.minimum(np.abs(v), lambda_val) # 求解投影后的theta # 使用KKT条件theta y - X beta其中beta满足X^T theta v_proj # 这里用简单的迭代方法 beta np.linalg.lstsq(X, y - theta_new, rcondNone)[0] theta_new y - X beta if np.linalg.norm(theta_new - theta) tol: break theta theta_new beta np.linalg.lstsq(X, y - theta, rcondNone)[0] return beta, theta这个实现虽然简单但展示了核心思想对偶问题中的无穷范数约束正是 ( \ell_1 ) 范数的对偶范数约束。6.3 原问题求解与结果对比作为对比我们用近端梯度法直接求解原问题def proximal_gradient_lasso(X, y, lambda_val, max_iter1000, tol1e-6): n, p X.shape beta np.zeros(p) L np.linalg.norm(X, ord2)**2 # Lipschitz常数 for k in range(max_iter): grad X.T (X beta - y) beta_new beta - (1/L) * grad # 软阈值算子 beta_new np.sign(beta_new) * np.maximum(np.abs(beta_new) - lambda_val/L, 0) if np.linalg.norm(beta_new - beta) tol: break beta beta_new return beta运行两个求解器比较结果beta_dual, theta_dual dual_lasso(X, y, lambda_val) beta_primal proximal_gradient_lasso(X, y, lambda_val) print(对偶方法恢复的非零系数位置:, np.where(np.abs(beta_dual) 1e-4)[0]) print(原问题方法恢复的非零系数位置:, np.where(np.abs(beta_primal) 1e-4)[0]) print(真实非零系数位置:, np.where(beta_true ! 0)[0])实测下来两种方法都能正确恢复前5个特征。对偶方法的好处是对偶变量 ( \theta ) 的无穷范数约束直接给出了变量选择的阈值——当 ( |X_j^T \theta| \lambda ) 时第 ( j ) 个特征被排除。6.4 对偶范数在调参中的作用对偶范数还能指导我们选择 ( \lambda ) 的范围。当 ( \lambda \geq |X^T y|\infty ) 时对偶问题的可行域包含 ( \theta 0 )此时最优解是 ( \beta 0 )。所以 ( \lambda{\max} |X^T y|_\infty ) 是使模型完全稀疏的最小 ( \lambda )。lambda_max np.max(np.abs(X.T y)) print(flambda_max {lambda_max:.4f})这个值在实际调参时非常有用你只需要在 ( [0, \lambda_{\max}] ) 范围内搜索 ( \lambda )通常取 ( \lambda \alpha \lambda_{\max} )其中 ( \alpha \in [0.01, 0.5] )。实操心得很多人调Lasso的 ( \lambda ) 时从0到1均匀搜索这是非常低效的。正确的做法是先算 ( \lambda_{\max} )然后在对数尺度上搜索比如 ( \lambda \lambda_{\max} \times 10^{-k} )( k 0, 0.5, 1, 1.5, 2 )。这样能快速定位到合适的稀疏水平。7. 常见问题与排查技巧实录7.1 共轭函数计算中的典型错误错误一忘记定义域。共轭函数的定义域往往不是全体空间。比如 ( f(x) -\log x ) 的共轭 ( f^*(y) -1 - \log(-y) ) 只在 ( y 0 ) 时有定义。如果你在代码中不检查定义域会得到NaN。错误二混淆共轭和Legendre变换。Legendre变换要求函数是可微且严格凸的而共轭函数没有这个要求。对于非光滑函数如 ( \ell_1 ) 范数只能用共轭不能用Legendre变换。错误三忘记下半连续性。二次共轭等于原函数要求原函数是凸的且下半连续的。如果原函数不满足这个条件( f^{**} eq f )对偶问题会有间隙。7.2 对偶范数计算中的常见坑坑一矩阵范数的对偶搞混。核范数的对偶是谱范数谱范数的对偶是核范数。但Frobenius范数的对偶是它自己。很多人会把核范数和Frobenius范数的对偶搞混。坑二( \ell_p ) 范数的对偶要求 ( p \geq 1 )。当 ( p 1 ) 时( \ell_p ) 不是范数不满足三角不等式对偶范数的定义不适用。虽然 ( \ell_p )( p 1 )在稀疏建模中也有应用但那是另一套理论非凸优化不能直接用对偶范数的框架。坑三对偶范数的数值计算。对于一般的范数对偶范数没有闭式解需要用数值优化求解。比如 ( |y|* \sup{|x| \leq 1} y^T x ) 本身就是一个优化问题。在实际代码中通常用迭代法求解。7.3 问题排查速查表问题现象可能原因排查方法解决方案对偶问题无解原问题不可行检查约束是否矛盾放松约束或检查数据对偶间隙不为零原问题非凸检查函数凸性使用凸松弛或接受近似解共轭函数返回NaN定义域错误检查输入是否在定义域内添加定义域检查对偶变量不收敛步长过大检查Lipschitz常数减小步长或使用线搜索稀疏性不符合预期( \lambda ) 选择不当计算 ( \lambda_{\max} )在对数尺度上搜索 ( \lambda )7.4 独家避坑技巧技巧一用共轭函数验证对偶推导。推导完对偶问题后用Fenchel不等式验证一下原问题的最优值应该等于对偶问题的最优值强对偶成立时。如果不等说明推导有误。技巧二对偶范数约束的投影。在对偶算法中经常需要投影到对偶范数球 ( {\theta : |\theta|* \leq \lambda} )。对于 ( \ell\infty ) 范数投影就是逐元素截断对于谱范数投影是奇异值截断。记住这些投影算子能省很多时间。技巧三利用共轭的对称性。如果你知道 ( f ) 的共轭是 ( g )那么 ( g ) 的共轭就是 ( f )在凸闭条件下。这个对称性可以用来快速推导新函数的共轭。比如你知道 ( \ell_1 ) 的共轭是 ( \ell_\infty ) 单位球的示性函数那么 ( \ell_\infty ) 单位球的示性函数的共轭就是 ( \ell_1 ) 范数。技巧四数值验证共轭。对于给定的 ( y )共轭函数的值可以通过求解 ( \sup_x {y^T x - f(x)} ) 来数值验证。用scipy.optimize.minimize求解这个无约束问题和你的闭式解对比。这个技巧在调试新函数的共轭时特别有用。from scipy.optimize import minimize def numerical_conjugate(f, y, x0): result minimize(lambda x: -y x f(x), x0, methodBFGS) return -result.fun # 验证 l1 范数的共轭 f lambda x: np.sum(np.abs(x)) y np.array([0.5, -0.3]) x0 np.zeros(2) print(数值共轭:, numerical_conjugate(f, y, x0)) print(理论共轭:, 0 if np.max(np.abs(y)) 1 else np.inf)这个验证方法我每次推导新共轭时都会用能避免很多符号错误。8. 从理论到落地这套工具链的实际价值8.1 在信号处理中的应用在压缩感知中信号恢复问题通常形如[ \min_x |x|_1 \quad ext{s.t.} \quad Ax b ]它的对偶问题是[ \max_y b^T y \quad ext{s.t.} \quad |A^T y|_\infty \leq 1 ]对偶约束 ( |A^T y|_\infty \leq 1 ) 的几何意义是对偶变量 ( y ) 与测量矩阵 ( A ) 的每一列的相关性都不能超过1。这个约束定义了对偶可行域而最优对偶变量给出了原问题最优解的次梯度信息。在实际求解时对偶问题往往比原问题更容易处理因为对偶可行域是简单的无穷范数球投影算子有闭式解。8.2 在统计学习中的应用在高维统计中Lasso的变量选择性质可以通过对偶问题来分析。对偶变量 ( \theta ) 满足 ( |X^T \theta|_\infty \leq \lambda )且在最优解处对于非零系数 ( \beta_j eq 0 )有 ( X_j^T \theta \lambda ext{sign}(\beta_j) )。这个条件称为对偶可行性条件是证明Lasso符号一致性Sign Consistency的关键。具体来说如果存在 ( \theta ) 使得( X^T \theta \lambda ext{sign}(\beta^*) ) 在非零系数上( |X^T \theta|_\infty \leq \lambda ) 在零系数上那么 ( \beta^* ) 就是Lasso的最优解。这个条件把变量选择问题转化成了对偶可行性问题是理论分析的核心工具。8.3 在矩阵优化中的应用在矩阵补全中核范数正则化问题[ \min_X |X|* \quad ext{s.t.} \quad \mathcal{P}\Omega(X) \mathcal{P}_\Omega(M) ]的对偶问题涉及谱范数约束。对偶变量是一个矩阵 ( Y )满足 ( |Y|2 \leq 1 ) 且在观测集上 ( Y{ij} ext{sign}(X_{ij}) )对于非零元素。这个对偶视角是理解矩阵补全恢复保证的关键。注意矩阵补全的对偶问题中谱范数约束 ( |Y|_2 \leq 1 ) 等价于 ( Y ) 的所有奇异值不超过1。这个约束在数值实现中通过奇异值截断来投影。8.4 在深度学习中的应用虽然深度学习中的优化问题通常是非凸的但共轭函数和对偶范数仍然有用。比如在对抗样本生成中FGSM攻击可以看作是对输入施加 ( \ell_\infty ) 约束的优化问题其对偶范数是 ( \ell_1 )。在对抗训练中对偶范数帮助理解不同扰动范数下的鲁棒性边界。另外在神经网络的稀疏化中组LassoGroup Lasso的正则项是 ( \sum_g |\beta_g|_2 )它的对偶范数是 ( \max_g |\theta_g|_2 )。这个对偶范数约束在组级别的变量选择中起作用。9. 进阶话题共轭与对偶的更多玩法9.1 部分共轭与部分对偶有时候我们只对一部分变量做共轭这叫部分共轭。比如对于函数 ( f(x, y) )关于 ( x ) 的部分共轭是[ f^*(y, y) \sup_x { y^T x - f(x, y) } ]这在交替方向乘子法ADMM中很有用。ADMM的推导本质上就是对增广拉格朗日函数做部分共轭。9.2 共轭与Bregman散度Bregman散度定义为[ D_f(x, y) f(x) - f(y) - abla f(y)^T (x - y) ]它和共轭函数有深刻联系( D_f(x, y) D_{f^*}( abla f(y), abla f(x)) )。这个对偶关系在镜像下降Mirror Descent和近端算法中都有应用。9.3 共轭与最优传输在最优传输理论中Kantorovich对偶用到了共轭函数。传输问题的对偶形式涉及两个势函数 ( \phi ) 和 ( \psi )它们满足 ( \phi(x) \psi(y) \leq c(x, y) )。这个对偶推导的核心就是共轭函数。9.4 共轭与信息几何在信息几何中共轭函数用于定义对偶坐标。指数族分布的自然参数和期望参数之间的关系正是通过共轭函数联系起来的。对数配分函数的共轭就是负熵这个对偶关系是信息几何的基石。10. 我个人的实操体会与建议这套工具链我用了大概三年从最开始看定义一头雾水到后来能熟练推导各种对偶问题中间踩了不少坑。最大的体会是不要死记定义要动手算。每学一个新函数的共轭就用数值方法验证一遍每推导一个新对偶问题就用Fenchel不等式检查一遍。这样积累下来你会形成肌肉记忆。另一个建议是从简单例子入手。不要一上来就搞矩阵补全或者深度学习先把 ( \ell_1 ) 和 ( \ell_2 ) 的共轭、对偶范数搞透。这两个是最常用的搞透了之后其他范数都是类似的套路。最后分享一个小技巧在推导对偶问题时先写出拉格朗日函数然后对原变量求下确界。求下确界的过程中你会自然遇到共轭函数的定义。这时候不要急着套公式而是仔细看每一项的结构识别出哪些是共轭哪些是示性函数。识别出来之后对偶问题就水到渠成了。这套工具链的价值在于它给了你一个统一的视角来看待各种正则化方法。不管是Lasso、组Lasso、核范数还是其他什么范数背后的逻辑都是一样的原问题的正则项在对偶问题中变成对偶范数约束原问题的约束通过示性函数编码进目标函数而共轭函数就是连接原问题和对偶问题的桥梁。理解了这个统一框架你看论文和调参的效率会提升一个档次。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑