凸优化问题
分类:
机器学习优化
一、无约束优化
对于无约束的优化问题,直接令梯度等于0求解。
如果一个函数是凸函数,那么可以直接通过的梯度等于0来求得全局极小值点。
二、有约束优化
- 若三个函数都是线性函数,则该优化问题称为线性规划。若任意一个是非线性函数,则称为非线性规划。
- 若目标函数为二次函数,约束条件全为线性函数,称为二次规划。
- 若为凸函数,为凸函数,为线性函数,则该问题称为凸优化。注意这里不等式约束则要求为凸函数,若则要求为凹函数。
1.只含有等式约束
对于含有等式约束的优化问题,拉格朗日乘子法,构造拉格朗日函数,令偏导为0求解。
(1)优化问题是凸优化
通过下图两个条件求得的解就是极小值点(而且是全局极小)
(2)优化问题不是凸优化
上面两个条件只是极小值点的必要条件,还需要附加多一个正定的条件才能变成充要条件
2.只含有不等式约束
对于含有不等式约束的优化问题,同样构造拉格朗日函数,利用KKT条件求解。
对于不等式约束,和等式约束不一样,可以在平面上画出一条等高线,而是一个区域,很多个等高线堆叠而成的一块区域,我们把这块区域称为可行域。
- (不考虑可行域限制时的)极小值点落在可行域内(不包含边界)
这个时候可行域的限制不起作用,相当于没有约束,直接的梯度等于0求解,这个时候(因为落在可行域内)。
- (不考虑可行域限制时的)极小值点落在可行域外(包含边界)
可行域的限制起作用,极小值点应该落在可行域边界上即,类似于等值约束,此时有的梯度和的负梯度同向。
总结以上两种情况,可以构造拉格朗日函数来转换求解问题。
(1)优化问题是凸优化
对于不等式约束的优化,需要满足三个条件,满足这三个条件的解x*就是极小值点。
这三个条件就是著名的KKT条件,它整合了上面两种情况的条件。
特别注意:优化问题是凸优化的话,KKT条件就是极小值点(而且是全局极小)存在的充要条件。
(2)优化问题不是凸优化
约束问题不是凸优化,KKT条件只是极小值点的必要条件,不是充分条件,KKT点是驻点,是可能的极值点。也就是说,就算求得的满足KKT条件的点,也不一定是极小值点,只是说极小值点一定满足KKT条件。
不是凸优化的话,还需要附加多一个正定的条件才能变成充要条件,如下图所示
3.既有等式约束也有不等式约束
4.凸优化的应用
参考文献:
【1】Lagrange Multipliers and the Karush-Kuhn-Tucker conditions
【2】拉格朗日对偶性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现