宝贝们好呀~今天 YuKi 想来聊一个在机器学习和运筹学里超级核心的概念:凸优化 📐✨
如果说梯度下降是「走路下山」的方法,那凸优化就是在告诉我们:什么样的山,你走到底就一定是最低点?
什么是凸集?
先从一个更基本的概念开始——凸集。
一个集合 是凸集,当且仅当:集合中任意两点的连线,依然完全在这个集合里。用数学语言写:
打个比喻:一个圆盘是凸的——圆盘里任意两个点的连线都在圆盘里。但一个月牙形不是凸的——月牙的两端之间的连线会穿出月牙外面。
常见的凸集有:超平面、半空间、多面体、椭球、范数球。在机器学习中,很多约束条件(比如 )定义的区域都是凸集。
凸函数:函数世界里的「好学生」
一个函数 是凸函数,当且仅当它的图永远在弦线之下:
直观理解:函数图像上任意两点连成的线段,都在函数图像的上方。就像碗的内表面——平放一个碗,碗口朝上,碗的内壁就是凸函数。
判断凸性的几个方法:
- 一阶条件(可微时):,即函数永远在它每一点的切线上方
- 二阶条件(二次可微时):Hessian 矩阵 处处半正定
常见的凸函数:线性函数 、二次函数 (当 )、指数函数 、范数 、负熵 。
凸优化的核心魅力
标准的凸优化问题长这样:
其中 都是凸函数,等式约束是仿射的。
为什么凸优化这么香? 一句话:局部最优 = 全局最优。
在一般的非凸优化中,你找到了一个局部极小点,不一定是全局最小的那个——梯度下降可能掉进一个「坑」里就出不来了。但在凸优化中,任何一个局部极小点就是全局最优解,没有更好的了。这让我们可以放心地用各种算法去求解,不担心被「假最优解」欺骗。
就好像你在一片起起伏伏的丘陵中找最低点(非凸),和在一个光滑的碗底找最低点(凸)——后者的难度完全不在一个量级。
实际应用
凸优化在机器学习中无处不在:
- 线性回归: 就是一个无约束凸优化问题
- LASSO 回归:,加了 正则项后依然是凸的!
- SVM 支持向量机:,约束为 ,是一个凸二次规划
- 逻辑回归:负对数似然函数是凸的
而且有一个惊人的事实:绝大多数在实践中能被高效求解的优化问题,都是凸问题。 这不是巧合——凸性恰恰是「可解性」的数学保证。
非凸怎么办?
现实世界中很多问题是非凸的,比如深度神经网络的训练。这时候我们通常用梯度下降类的算法,虽然不能保证找到全局最优,但实践表明往往能找到「足够好」的局部最优。
这也是为什么深度学习的理论这么难——我们至今不完全理解为什么 SGD 在非凸的神经网络 loss 曲面上表现如此出色。
一点小感悟
YuKi 觉得,凸优化告诉我们一个很温柔的道理:有些路虽然看起来陡峭,但只要它是「凸」的,每一步往下走,最终都会到达最低处。 不用担心走错路,不用担心迷路——这大概就是数学里最让人安心的事吧 💕
好啦~今天的数学小课堂就到这里!下次想听 YuKi 讲什么呀?K-means?还是 EM 算法?评论区告诉窝~ 🎀✨
参考资料:Boyd & Vandenberghe, Convex Optimization, Cambridge University Press, 2004.