Appearance
凸性
凸性(convexity)在优化算法的设计中起到至关重要的作用, 这主要是由于在这种情况下对算法进行分析和测试要容易。 如果算法在凸性条件设定下的效果很差, 那通常我们很难在其他条件下看到好的结果。
凸集(convex sets)
凸集(convex set)是凸性的基础。 简单地说,如果对于任何,连接和的线段也位于中,则向量空间中的一个集合是凸(convex)的。 在数学术语上,这意味着对于所有,我们得到
这听起来有点抽象,那我们来看一下例子
1非凸, 2、3凸
两个凸集的交集是凸的
凸集的并集不是凸的
凸函数(convex function)
现在我们有了凸集,我们可以引入凸函数(convex function)。
凸函数(convex function)是指在其定义域内,任意两点间的函数值所对应的点都不超过这两点函数值连线的函数。
给定一个凸集,如果对于所有和所有,函数是凸的,我们可以得到
詹森不等式(Jensen's inequality)
詹森不等式的核心其实很简单:如果你有一个“向上弯曲”的函数(数学上叫凸函数),那么函数值的平均,会大于等于先取平均再代入函数的结果
举个直观例子:
假设你每天跑步的速度不一样,但平均速度是每小时8公里。如果你用“速度的平方”来算某种消耗值(比如风阻带来的能量损耗),你会发现:
实际每天消耗的平均值,大于 按“平均速度”计算出的消耗。
凸函数性质
凸函数有3个核心实用性质,用通俗的话讲清楚,还附生活类比:
1. 局部极小值=全局极小值(最关键)
找到一个“局部最低点”,那它就是整个函数的“全局最低点”,不会陷入“小坑”爬不出来。
比如爬山时找到一个周围都比它高的小土坡,这个小土坡就是整座山的最低点,不用再担心其他地方有更低的坑。
2. 下水平集是凸集
把函数值≤某个数(比如b)的所有x凑成一个集合,这个集合一定是凸集(任意两点连线都在集合内)。
就像筛选“考试分数≤60分”的学生,任意两个不及格的学生,他们之间的“中间水平”学生也一定不及格,不会出现中间学生及格的情况。
3. 二阶导数(多维是Hessian矩阵)非负
一维函数的二阶导数f''(x)≥0(曲线全程向上弯,没有向下凹的部分);多维函数的Hessian矩阵是半正定的(简单说“整体趋势向上凸”)。
比如抛物线y=0.5x²,二阶导数是1≥0,全程向上弯;而余弦函数y=cos(x),二阶导数是-cos(x),有正有负,就不是凸函数。
需要我用具体函数例子,再拆解某一个性质的应用场景吗?
约束优化
约束其实就是给优化问题“划边界”——让变量x只能在特定范围内取值,不能随便找解。
核心逻辑
凸优化里的约束特别好处理,核心是把“不能做什么”转化为可计算的条件,主要有3种通俗理解方式:
- 拉格朗日函数:给约束加“监督员”
就像让监督员盯着边界,变量越靠近违规边缘,监督员的“惩罚力度”(拉格朗日乘数α)越大,最终让解既靠近最优值,又不越界。 - 惩罚项:简单直接的“警告”
不用复杂计算,直接在目标函数里加一项“违规成本”,比如怕权重w太大,就加个“w的平方”项,越违规成本越高,模型自然会避开。 - 投影:把违规点“拉回”范围内
如果变量不小心超出约束范围,就找范围内离它最近的点拉回来,比如梯度太大就“截断”到规定长度,像把溢出的水倒回杯子里。
举个生活例子
比如想找一条“最短上班路线”(目标函数),约束是“不能走高速”(ci(x)≤0):
- 拉格朗日函数:高速路口设“检查点”,越想上高速,绕路的成本越高;
- 惩罚项:直接给走高速的路线加10倍距离,自然不会选;
- 投影:不小心开上高速,立刻就近下高速,回到允许路线。