Skip to content

凸性

凸性(convexity)在优化算法的设计中起到至关重要的作用, 这主要是由于在这种情况下对算法进行分析和测试要容易。 如果算法在凸性条件设定下的效果很差, 那通常我们很难在其他条件下看到好的结果。

凸集(convex sets)

凸集(convex set)是凸性的基础。 简单地说,如果对于任何,连接的线段也位于中,则向量空间中的一个集合(convex)的。 在数学术语上,这意味着对于所有,我们得到

这听起来有点抽象,那我们来看一下例子

1非凸, 2、3凸

alt text

两个凸集的交集是凸的

alt text

凸集的并集不是凸的

alt text

凸函数(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种通俗理解方式:

  1. 拉格朗日函数:给约束加“监督员”
    就像让监督员盯着边界,变量越靠近违规边缘,监督员的“惩罚力度”(拉格朗日乘数α)越大,最终让解既靠近最优值,又不越界。
  2. 惩罚项:简单直接的“警告”
    不用复杂计算,直接在目标函数里加一项“违规成本”,比如怕权重w太大,就加个“w的平方”项,越违规成本越高,模型自然会避开。
  3. 投影:把违规点“拉回”范围内
    如果变量不小心超出约束范围,就找范围内离它最近的点拉回来,比如梯度太大就“截断”到规定长度,像把溢出的水倒回杯子里。

举个生活例子

比如想找一条“最短上班路线”(目标函数),约束是“不能走高速”(ci(x)≤0):

  • 拉格朗日函数:高速路口设“检查点”,越想上高速,绕路的成本越高;
  • 惩罚项:直接给走高速的路线加10倍距离,自然不会选;
  • 投影:不小心开上高速,立刻就近下高速,回到允许路线。

京ICP备2024093538号-1