最优化笔记

[toc]


凸性

集合

凸集

【定义】集合CRn凸,指的是x0,x1C,θ[0,1],(1θ)x0+θx1C

其中,「(1θ)x0+θx1」指的是「x1,x0两点连接成的线段」,这是一个常用的表述技巧。那么,凸集的定义的人话版本,就是「一个集合中任意两点连接成的线段,也在集合中」。

对于一些凸集 {Ci}iI,以下运算的结果仍然是凸集,这样的运算叫「保凸运算」:

  1. 【交】是凸集。即:任意个凸集的交集是凸集。这里的「任意个」可以是不可数无穷个。

  2. 【直积】上的凸集。

  3. 【加权和】如果 都是上的凸集,,那么 是凸集。

  4. 【仿射】如果上的凸集,,则是凸集。其实,所谓仿射,也就是线性变换再加上一个平移。

有一些比较常见的凸集,需要知道他们的表示方法:

  1. 【超平面】,其中。称为超平面的法向量。

  2. 【半空间】,也就是一个超平面把空间分成两个半空间(以及超平面自身)

  3. 【多面体】,也就是有限多个半空间的交集。

  4. 【子空间】.这个和高代里面的子空间是一个意思,也就是元素的线性组合仍在子空间中。

  5. 【仿射集/线性流形/仿射子空间】对于子空间,存在,则是仿射集。称的线性维数为的仿射维数,记作。其实就是说,子空间不是必须要通过点吗,那么把子空间平移了以后,它不通过点了,虽然不再是子空间了,但是仍然是线性的,也是凸集。

    例如: 的任意一个特解。。所以说,一般来说可以用一个非齐次线性方程组的解集来表示仿射集。

  6. 【球体】,其中是范数,.

  7. 【椭球体】,其中是对称正定矩阵,

    例如:

    是对称正定矩阵,且,故是凸集。

  8. 【凸函数的下水平集】,其中是凸函数,是凸集,

还有一类特殊的集合,叫做「锥」。

【定义】称为「锥形的」,当且仅当。如果还是凸集,称为「锥」。

常见的锥有:

  1. 【第一卦限】
  2. 【二阶锥】
  3. 【对称矩阵、半正定矩阵、正定矩阵】

集合的内部和闭包

集合的闭包记作,指的是集合中的点列的极限的集合。

例如:对于集合,点列,其极限为,所以在集合的闭包中。

闭包是包含的最小闭集。

集合的内部记作,指的是集合中,存在以其为中心的球体也在集合中的点构成的集合。

例如:对于集合,对于点,无论半径取何值,球体中的一点总是大于,从而不在集合中,所以不在的内部。

内部是包含在中的最大开集。

但是有时候,对于一个凸集,其内部是空集。比如在中的平面。此时,无法用内点来对进行分析,但是就直观来看,并不是一个很「空」的集合。这时候需要定义「相对内部」,也就是在的仿射包中定义的内部。例如,在中有一个集合,它是一个圆形。那么它的仿射包就是包含这个圆形的二维平面。在中,这个圆形集合的内部是空集。但是如果只在仿射包中看,这个圆形集合的内部就不是空集了。从仿射包看的所谓「内部」,就是「相对内部」。

对于集合,其仿射包为,定义相对内部: 看这个可能很晕。其实就是说,在中存在一些点,它们满足一个条件,这个条件就是「在中存在以这些点为中心的球包含于」。我们把这些点的集合称为的相对内部。相对内部和内部的区别,就是把「球」所存在的空间,从变成了的仿射包。

组合和包

凸组合指的是: 其中。有没有发现这个定义特别像前面「凸集定义」的一部分。在二维空间中,凸组合可以看作经过两个点的线段。所以凸集的定义也可以表示为:中的点的凸组合也都属于,那么是凸集。

如果集合不是凸集,那么称包含的最小凸集的凸包,记作。可以证明: 看着很复杂,其实就是中的任意有限个点的凸组合的集合。

仿射组合指的是: 其中.相比于「凸组合」,「仿射组合」只是删去了「」的条件。在二维空间中,仿射组合相当于经过两个点的直线。

对于仿射包的定义和生成,也和凸包类似。仿射包记作

通过仿射包,可以定义任意集合的维数。对于任意非空集合,称其仿射包的仿射维数是的仿射维数,记作

锥组合指的是: 其中.相比于「凸组合」,「锥组合」只是删去了「」的条件。在二维空间中,锥组合相当于经过两个点的射线。

对于锥包的定义和生成,也和凸包类似。锥包记作

可以总结一下:

组合类型 系数限制 集合名称 样例
线性组合 无限制 向量子空间
仿射组合 仿射集/线性流形/仿射子空间 仿射超平面
锥组合 第一卦限
凸组合 凸集 单纯形

凸函数

梯度和海森矩阵

这俩东西后面有用。

梯度: 海森矩阵: 简单理解,梯度就是一阶导,海森矩阵就是二阶导(曲率)。

常见函数的梯度:

,其中是依赖于维向量,$r(x)=A$

凸函数

对于凸集上的函数,如果: 其实就是:函数线上的两点之间的连线,一定在函数线以上。

凸函数的性质有:

  1. 函数在凸集上是凸函数,等价于其上镜图是凸集。

  2. 函数在凸集上是凸函数,则有Jensen不等式: 其中

    证明:令 因为是凸函数,所以其上镜图是凸集,所以其上镜图上的点的凸组合是在上镜图里,有:

  3. 函数上凸,当且仅当,关于上凸。

  4. 函数在凸集上是凸函数,则其在的相对内部上连续。如果有界闭集,那么上Lipschitz连续(比一致连续更强的连续)。

  5. 函数一阶偏导连续,那么它在凸集上是凸函数,当且仅当

  6. 函数二阶偏导连续,那么它在内部非空的凸集上是凸函数,当且仅当半正定。

  7. 函数在凸集上是凸函数,有:是凸集。即:使得小于一个定值的的取值范围是凸集,这个范围叫做下水平集。

  8. 函数在凸集上是凸函数,则的所有局部极小点都是全局极小点,而且局部极小点组成的集合是凸集。如果是严格凸的,那么最多有一个极小点。

和凸集一样,有时候直接确定函数是不是凸函数比较难,因此可以利用保凸运算:

  1. 【锥组合】凸函数的锥组合是凸函数。即:对于上的凸函数是凸函数。
  2. 【仿射替换】对于上的凸函数的仿射,则上的凸函数。
  3. 【上确界】对于上的凸函数是凸函数。
  4. 【单调复合】上凸,上凸且单增,则上凸。

解和算法的基本性质

本节主要讨论无约束最优化问题 其中元实函数,的子集(在本章,在大部分情况下就是)。

可行方向和一阶条件

优化的基本思想是目标函数沿着某个方向可以看作一元函数,于是就可以利用一元函数的微积分。对于向量,如果存在,使得,那么称处的可行方向。此时,多元函数转化为一元函数,其导数(方向导数)为: 【一阶必要条件】设是连续可微的,如果是局部极小点,那么对于处的任何可行方向,有: 梯度向量的方向是函数增长最快的方向,其与可行方向的内积非负,表示从出发,在所有可行方向上移动,都会增长。

特别的,如果的内点,此时所有方向都是可行方向,所以对所有的都有一阶必要条件条件,容易发现这时的一阶必要条件实际上是

对于一元函数来说,它就是「一阶导数为零」。

将满足这种条件的点称为「驻点」。

二阶条件

【二阶必要条件】设是二阶连续可微的,如果是局部极小点,那么对于处的任何可行方向,有:

  1. 如果,则

如果是集合的内点,这两个条件就变成

  1. 半正定

如果正定,那么是严格局部极小点。

线搜索法

线搜索法指的是在当前迭代点处,根据收集到的信息选择一个有待进一步探测的方向,然后在这个方向上进行一维搜索得到合适的步长,进而得到下一个迭代点的过程。后续的梯度下降法、共轭梯度法、牛顿法、拟牛顿法都是线搜索法。

已知初始估计 .设 ,则第 次迭代:

  1. 根据某种近似函数确定设 处的搜索方向设 ,
  2. 线搜索: 求解关于 的一元函数极小化问题

​ 得到步长

不同的线搜索法之所以不同,核心区别在于的选取。具体来说,由函数的二次近似 只要正定,那么就一定是下降方向。正是不同的导致了不同的搜索方向。

所谓的精确线搜索,指的是精确求解。其重要性质为: 精确线搜索的运算量经常很大,所以大多数情况下都会用非精确线搜索,即不精确求解,转而使用别的方法确定。如果的选择不合理,则可能会出现算法无法找到最优解的情况。

对于一元函数,想要求其最小值。选取初始点

左图中有,算法收敛于

右图中有,算法有两个聚点

假设是使得,即成立的最小正数,从上述两个例子可以看出,的选择不能太过靠近区间的两个端点。有一些法则给出了选取需要满足的条件。

Armijo条件

定义一次函数 其中是由设计者自由选定的参数。于是这个一次函数是一条完全由确定的直线,称为「线」。

如果对应的函数值在线以下,则认为不太大。再选取参数「缩短因子」,如果将扩大倍以后,对应的函数值不再在线以下,则认为不太小。写成数学表达式,有:

Goldstein测验

「不太大」的条件不变,将「不太小」的条件改为: 这要求。在上面的图中,也就是两条经过的虚线之间的范围,即

Wolfe准则

如果不是二次函数,则Goldstein测验可能使得真正的极小点不满足条件(看上面的图)。此时仍然保持「不太大」条件不变,把「不太小」条件改为 这就是Wolfe准则。

无约束优化方法

梯度下降法

梯度下降法的基本格式是: 即线搜索法中让处的负梯度。

梯度下降法是怎么想到的呢?其实有两种解释。

  1. 函数值在负梯度方向下降最快

  2. 极小化函数在附近的二次泰勒展开

梯度下降法有全局收敛性:假设与初始点 关联的 的下水平集

是紧的(有界闭集), 并且 在包含 的某开集上连续可微. 那么对于步长满足Armijo法则的梯度下降法来说,

  1. 迭代轨迹不离开
  2. 除非得到驻点;否则 严格单调递减
  3. 轨迹有聚点, 并且每个聚点均是 的驻点.

接下来分析在满足三种特殊情况的条件下,梯度下降法的复杂性。所谓的复杂性一般指的是一个不等式,衡量了迭代步时,所得到的值有多接近局部极小点。这三种特殊情况分别是:

  1. 任何具有Lipschitz(李普希茨)梯度的函数
  2. 任何具有李普希茨梯度的凸函数
  3. 任何具有李普希茨梯度的强凸函数

在此之前,需要定义「李普希茨梯度」和「强凸函数」。

【Lipschitz梯度】 设 . 称函数 的梯度在开集 上是 Lipschitz的,如果

的梯度在集合 上是 Lipschitz的,如果存在开集 使得 的梯度在开集 上是 Lipschitz的.

Lipschitz梯度这个名字可能有点容易让人误解。它并不是一种特殊的梯度,而指的是函数的梯度满足某种条件。

如果函数的梯度满足Lipschitz条件,也称为这个函数是光滑的。函数是光滑的等价于函数的Hesse矩阵的谱范数不大于,即: 从直观上来说,-光滑性质保证了函数的梯度的变化速率是受限的,可以理解为函数的斜率在任意两点之间的变化都有一个上界,这使得优化算法在更新变量时,能对目标函数的变化有一定的控制。

【强凸函数】设 . 称定义在凸集 上的函数 关于范数 —强凸的(strong convex), 如果对每个 和每个 其实就是比凸函数的定义多了一个

从直观上来说,强凸性是凸性的加强版,它要求函数不仅仅是凸的,还得有一定的曲率(例如:不是强凸函数),这样的曲率保证了函数在全局上有唯一的最优解,一般来说,强凸函数的越大,函数的「盆地」越深,优化算法收敛的也越快。

具有Lipschitz(李普希茨)梯度的函数

【二次上界】:设的梯度是L-Lipschitz的,那么: 如果设,则上面的式子可以写作(按项对应): 由二次上界,可以得到关于梯度下降法的两个结论:

  1. 对于常数步长,梯度下降法是下降算法

  2. 对于常数步长,梯度下降法满足

为了证明这个结论,只需要让二次上界定理中的即可。 ,右式为负;当

由这两个结论,可以推出具有Lipschitz(李普希茨)梯度的函数上梯度下降法的复杂度:

的梯度是 Lipschitz的, 且 存在极小点 .记 , 则步长为 的 GD 迭代满足

这里的「复杂度」是用「前步中函数的梯度的最小范数」表示的。当这个范数是零时,意味着找到了驻点。这个范数越小,就越接近驻点。

代入,有: 对于,写出这个不等式然后求和,消除中间的项,有: 证毕。

具有李普希茨梯度的凸函数

是凸函数, 梯度是 Lipschitz的, 且 是它的极小点. 那么步长为 的 GD迭代满足

这里的「复杂度」是用「当前迭代点的函数值和局部极小值的差」表示的。这个差越小,就越接近驻点。

具有李普希茨梯度的强凸函数

关于强凸函数有如下结论:

  1. 强凸的当且仅当 是凸的.
  2. . 则 在凸集 上是1强凸的当且仅当

  1. . 则 在内部非空的凸集 上是 -强凸的当且仅当

-强凸的, 它的梯度是 Lipschitz的, 且 的极小点. 那么步长为 的 GD迭代满足

其中 .

牛顿法

考虑二次连续可微的函数,对其进行泰勒展开: 正定时,有唯一极小点。将极小点作为新迭代,由此得到基本牛顿法: 关于牛顿法,有二次收敛定理:假设 上是 -Lipschitz的,且局部极小点 处的Hesse矩阵 正定, 即存在 使得 . 如果初始点 满足

那么 , 牛顿法是良定义的, 且由它产生的序列至少二次收敛到 .

但是在使用上,基本牛顿法存在一些问题。

  1. 正定,但是牛顿增量很大,导致局部二次近似失效
  2. 不正定

在这两种情况下,基本牛顿法会失效,因此需要寻求将其修正的方法。常用方法是对于,取 计算的特征值,设是让特征值大于常数的最小非负整数,然后沿方向 进行线搜索。

共轭梯度法

【定义:正交/共轭】已知对称正定矩阵,定义两个向量的内积: 如果两个向量的内积为,则称其为正交或者共轭向量。

共轭方向法的提出是为了求解正定的非齐次线性方程组: 其等价于下面的优化问题: 求解的步骤如下:

给定初始点和共轭方向,令: 其中, 即求解: 有: 那么有: 将共轭方向组写成矩阵:那么有:

  1. 可逆(因为是线性无关组)
  2. 是对角矩阵,对角线元素是,其余是零(因为是共轭方向组)
  3. ,即,其中是第个分量为一,其余分量是零的单位坐标向量

设: 则有: 因为是对角阵,所以这是一个变量可分离的二次函数。

考虑迭代出的最终 即:在空间的共轭方向法,实际上就是在空间按坐标轴搜索,而且在空间的函数是变量可分离的二次函数。于是,点列有如下特征:

  1. ,其中,是共轭方向组的前个向量张成的线性子空间,平移后得到的仿射空间。

共轭方向法的问题是在求解前需要给出共轭方向组。共轭梯度法则是利用梯度构造共轭方向组。共轭梯度法的基本结构如下:

  1. 给定初始点,记,开始迭代

  2. 如果函数梯度已经足够小,即,终止

  3. 计算:

  4. ,计算,使得它和之前的所有方向都共轭。

现在的问题就是怎么算。可以借助矩阵理论中的施密特正交化方法,容易想到,其实是在之前的方向的线性组合,即: 有: 因为共轭性,其它项都一定是零,即: 有: 注意到:时,

分析分子,因为,有: 代入: 因为 所以 因为

所以时,

所以有: 而且,步长公式可以化简为: 进一步简化:

这个简化的目的是排除原问题的影响,以便适用于任何函数(但是这时只能改用其它精确线搜索法)

共轭梯度法的过程如下:

次梯度

为了讨论次梯度和次微分,引入扩展实值函数:

. 称

的上镜图(epigraph),记作. 如果 中的凸集,称 上的凸函数. 称 上的投影是 上的有效域(effective domain), 记作

简单来说,上镜图就是函数图像上面的部分,有效域就是函数的「定义域」。

如果凸函数满足有效域非空,且,那么称这个函数为「正常凸函数」,这个假设叫做「正常假设」。

设函数在凸集上凸,则其扩展实值表示为: 从这个函数可以看出有效域和定义域的区别,在这里,定义域是,有效域是

【次梯度】称向量 是凸函数 在点 的次梯度(subgradient), 如果

的次梯度的全体称作 处的次微分(subdifferential),记作 . 如果 , 称 处次可微 (subdifferentiable).

其中是一个关于的仿射函数,次梯度中不等式的含义,就是这个仿射函数的图像是上镜图在点处的非竖直支撑超平面。

其中处的次梯度,处的次梯度。

对于凸函数,如果处可微,那么,反之,如果处的次梯度唯一,那么可微。

是凸函数. 那么 是闭凸集. 对于 . 对于 非空, 这时 沿方向 的方向导数存在,并且

最后, 是非空有界闭凸集当且仅当 .此时对每个 有限.

如果忘了,这里的是「相对内部」,是「内部」。

最优性条件:设 是凸的.

  1. 的极小点当且仅当 .
  2. 是非空凸集,则 上的极小点的充分条件是:存在 使得 。如果ri 与 ri 相交, 或者当 是多面体时 ri( 与C相交, 该条件是必要的.

约束优化问题(KKT条件)

【特别注意】课件和PPT里的KKT条件和拉格朗日函数,是乘以等式约束的,是乘以不等式约束的,我这个笔记一开始写错了,后来将错就错,全部是相反的。

考虑有如下格式的优化问题: 其中,所有的都是可微的。称为等式约束、称为不等式约束、称为集合约束。

把常用的不可微分函数转变为可微分函数的技巧:

假如是问题的局部最优解,而且在处满足某个「适当的条件」,则存在使得: 这一组条件被称为KKT条件。为了对KKT条件建立一个直观印象,有:

考虑如图所示的二维平面优化问题。红色的曲线是三个约束函数等值线,绿色虚线是等值线,在最左边这个点取到最小值。那么,在这个点,观察三条蓝色的向量。可以发现,的负梯度应当是的线性组合,而且组合系数都是正数。这就是KKT条件的第一条式子的来历。我们发现,这个条件目前并没有「起作用」,所以它的梯度对应的线性组合系数是零。KKT条件的第五条式子,即 正是在标记哪些条件在「起作用」。如果起作用了,那么;否则,如果没起作用,那么,此时有。我们管「起作用」了的约束条件叫做「积极约束」。用记号: 表示积极约束(的标号)的集合。

KKT条件是「一阶必要条件」,即凡是局部最优解都满足KKT条件,但是满足KKT条件的不一定是局部最优解。

简单介绍一下证明KKT条件的思路:

  1. 如果是局部最优解,那么。其中,都是一些方向的集合。

    是使得目标函数下降的方向的集合,即和目标函数的梯度的内积小于零: 是「切向锥」,即从开始,往哪些方向稍微挪动一点,不会离开可行域的范围:

  2. 因为很难求,所以另外定义一个「看起来像可行的方向的集合」 构造它的方法是「排除显然不可能的方向」,例如,让上升的方向()以及让变化的方向

  3. 在某些「适当的条件」下,有。此时,有: 这其实是KKT条件的某种等价表述。

之前提到的那个「适当的条件」叫做「约束品性」,常见的约束品性有:

  1. 正则性(线性无关约束品性,LICQ):设点满足,对于处的所有和积极约束,如果梯度向量是线性无关的,称是约束的正则点。如果是局部最优解而且是正则点,那么KKT条件成立。

  2. Slater条件。若Salter条件成立,原问题的最优解是KKT点,相应的乘子是对偶问题的最优解。

  3. MFCQ:如果是集合约束的内点且是局部极小点、都是一阶连续函数、如果梯度线性无关,且存在向量使得 满足MFCQ。

  4. 线性CQ:如果是集合约束的内点且是局部极小点,都是一阶连续函数,如果是仿射函数、都是凸函数,那么满足KKT条件。

如果满足:

  1. 都是凸函数
  2. 是线性函数

那么,原问题是凸问题,而且KKT点就是全局最优点。

现在的问题是,这两个条件实在是太强了,有没有弱一点的条件,也能说明KKT点是最优点?

二阶必要条件

假设对于KKT点 考虑一个函数: 注意,因为满足了KKT条件,所以这个函数里面只有是变量,都是常量。这个函数有什么性质?

  1. 。这就是KKT条件的第一条
  2. 。因为KKT条件的第五条,所以第二项是零;因为KKT条件的第四条,所以第三项是零。
  3. ,其中是原问题的可行解集。因为在可行解集里总有

由2和3知:如果的最优解(最小值),那么是原问题的最优解。

对于无约束问题,其二阶条件有:

  1. 半正定,那么是原问题的全局最优解
  2. 中的一个的邻域里半正定,那么是原问题的局部最优解
  3. 正定,那么是原问题的严格局部最优解。

接下来重点考虑第三项。正定,也就是说有二次型: 那么这个条件能不能再弱一点呢?这个二次型或许不需要对任何都正定。回忆证明KKT条件时用的的集合,它是「看起来像可行的方向的集合」。只要看起来不是可行方向,那么就可以不考虑这个。于是,有: 那么这个条件能不能再再弱一点呢?对于大于,如果,则沿着移动,会导致小于零,而这意味着目标函数的值上升。定义 其中, 二阶必要条件的最终表述为:

假如满足KKT条件,为相应的乘子, ,若,则是原问题的严格最优解。

灵敏度分析

对于一般的约束问题,有局部正则点,加入松弛变量: 设函数,即在加入松弛变量后,问题的最优值关于松弛变量的函数。则有:

【例】问题 原问题的最优解显然是,此时等式约束对应的系数新问题的最优解是,那么有 对C求导,有:

对偶问题

考虑一般的约束问题: 记录可行集,即满足所有约束条件的集合为

如果问题比较难于求解,例如是非凸问题,我们试图寻找一个和关系紧密,又比较简单的问题

引入拉格朗日函数: 和对偶函数,即在集合约束满足的前提下对拉格朗日函数求最小值: 给一组,在里面就有一个的最小值;给另一组,就会对应另一个最小值,这样一来,我们把这个最小值写成的函数。接下来研究 函数的特征,有: 其中,表示问题的最优值,即问题最优值的下界。由此,我们可以说,是对问题的下界的估计。对下界的估计必然是越大越好,于是,有:

我们把这个问题叫做「对偶问题」,记作。因为对偶函数一定是一个凹函数,所以极大化凹函数的对偶问题一定是一个凸问题。接下来分析一下对偶问题和原问题的关系。对偶问题可以写作: 如果我们把两个求最值换一下顺序: 其中,是很容易取到正无穷的。因为如果,因为无上界,所以可以取到正无穷。如果,因为无上下界,所以也可以取到正无穷。那么有: 然后求外层的最小值,显然我们不关心正无穷的情况,那么有: 我们发现,这就是原问题

【例】考虑线性规划问题:

有: 对偶问题为:

接下来,讨论一下对偶问题的几何解释。为点,即取向量的第一个分量;,即取坐标的第二个分类。考虑原问题: 那么有: 对偶问题为:

如图所示是原问题的解。红色阴影区域即原问题的可行区域,绿色的点就是原问题的最优解。

那么已知,如何求?假如说,有,那么有直线: 我们尽可能地把直线往下移动,而且让其至少有一部分在以内,

蓝色圆圈处的点就是已知时的

现在,我们要改变,求时的最大值,有:

图中,浅蓝色的直线表示了不同的计算过程。最终,在深蓝色直线处取得最大值,我们发现它刚好是,即有:

那么这是巧合吗,是否永远有呢?很遗憾,这是巧合。这是因为我们的集合刚好是一个性质特别特别好的集合。如果它长得丑一点,比如:

如图所示是原问题的解。红色阴影区域即原问题的可行区域,绿色的点就是原问题的最优解。

接下来在这个附近变化,观察一下对偶问题的解。浅蓝色直线过小的情况,自不必说;深蓝色直线是最优解的情况。这时如果有人问,如果继续增大,那么不会和轴交在更高的地方吗?这里我画出了继续增大的灰色直线,我们发现,这时,它和轴的交点并不是(请复习的计算方法),而与他平行的下面那条蓝色直线才是和对应的真正的直线。

我们可以发现:

这个结论叫「弱对偶定理」。关于的条件,有如下充分条件:

  1. 原问题是凸问题:即是凸函数、是线性函数、是凸集
  2. (Slater条件)在集合约束的内部存在一点,使得,或:
  3. (松弛Slater条件)在集合约束的相对内部中存在一点,使得对所有非仿射的,对所有仿射的,且.

为了理解这个条件,观察下面的两个图像:

(a)图中虽然满足第一个条件(问题是凸问题),但是不满足第二个条件,这样的话,其对偶问题无解。

(b)图中虽然不满足第一个条件(不是凸集),但仍然是强对偶的,这说明了上述的条件只是充分条件,而非必要条件。

罚函数法

对于只有等式约束的优化问题: 如果约束函数是非线性函数,会导致求解的困难。这时,我们考虑把约束优化问题转换为无约束优化问题。主要思路是给目标函数增加一个和约束有关的惩罚项,当离可行点越远,惩罚项就越大。

一个直观的想法是增加二次惩罚项,则问题变成: 这个无约束优化问题的解是约束优化问题的下界。假设这个无约束优化问题的最小值是。显然,是关于的单调递增函数。

记罚函数项目为,产生的无约束优化问题的目标函数为

【例】利用罚函数法求解: 对应的无约束优化问题为: 求其一阶必要条件,即,有: 解得 经验证,其海森矩阵是正定矩阵。将,有:

可以看出,由罚函数法得到原问题的关键步骤就是

用计算机计算的算法一般如下:

  1. 取初始迭代点,初始参数,终止条件为一较小正数,迭代计数器,更新倍数

  2. 为初始点,计算无约束优化问题: 得到解

  3. 如果,说明惩罚项已经足够小,算法终止。

  4. 更新,转第2步

假如步骤2每次都可以得到无约束优化问题的全局最优解,那么这个算法有以下的性质:

【性质1】对于迭代形成的点列,有

  1. 无约束优化问题目标函数序列单调递增
  2. 罚函数序列(在常用的二次罚函数情况下,也可以写成)单调递减
  3. 约束优化问题目标函数序列单调递增

【性质2】点列的任意一个聚点都是约束优化问题的全局最优解。

【性质3】现在无需步骤2每次都可以得到无约束优化问题的全局最优解,只需要得到平稳点,即,产生点列,其聚点为,假设线性无关,那么是约束优化问题的KKT点。

对于一般的约束优化问题: 可以定义罚函数为:

乘子法

在罚函数法的运算中,为了收敛,有时会取到非常大的值,这对数值计算来说是不利的。为什么会出现这样的现象呢?我们考虑真正意义上的收敛的情况,即时。此时,对无约束优化问题: 所求解出来的点一定满足一阶条件,即,即: 因为,所以后项为零,则有: 对比一般约束优化问题的KKT条件: 可以发现,为了罚函数法收敛,我们提了一个比KKT条件强得多的要求(即),这在绝大多数的约束优化问题中都是不现实的。因此,我们可以做一个「妥协」,即放松这个最终的条件,以期待罚函数法有更好的收敛性能。

考虑增广拉格朗日函数: 利用增广拉格朗日函数求解的计算机算法步骤如下:

  1. 取初始迭代点,初始参数,终止条件为一较小正数,迭代计数器,更新倍数

  2. 为初始点,计算无约束优化问题: 得到解

  3. 如果,说明惩罚项已经足够小,算法终止。

  4. 更新,转第2步.

算法的核心问题是如何更新。我们的最终目标是在收敛时满足KKT条件,即 在算法第2步,得到,即: 整理一下,有: 对比它和KKT条件,很容易想到: 写成向量形式,就是: 有定理:假如且满足二阶充分条件,则存在使得对任意上的严格局部极小点。

障碍法(内点法)

障碍法(也称内点法),用所谓的“障碍函数”代替不等式约束,并将它加到优化问题的目标函数中。如果一个集合存在内部,而且可以从内部逼近任何边界点,我们称这样的集合为「稳健的」。

假设约束优化问题的可行域是稳健的,其内部为,定义障碍函数,满足:

  1. 连续
  2. 随着趋向于的边界,趋向于正无穷

的障碍函数。常用的障碍函数有:

约束要求是负数。当越来越靠近,即越来越靠近边界时,趋向于无穷大。以下默认讨论对数障碍函数。

与之相关的一个概念叫解析中心,它是问题: 的最优解。

将约束优化问题改写为: 因为目标函数在的边界处的值接近无穷大,所以适用于无约束优化问题的迭代下降法等方法可以用来求解这个问题。

越来越小时,函数的图像越「尖锐」

因此,构造一个越来越小,趋向于0的正数序列,找到序列使得: 就是一种可行的算法。这称为「原始内点法」。这个序列的每个聚点都是原始约束优化问题的全局极小点。


本站的运行成本约为每个月5元人民币,如果您觉得本站有用,欢迎打赏:


最优化笔记
https://suzumiyaakizuki.github.io/2024/10/03/最优化/
作者
SuzumiyaAkizuki
发布于
2024年10月3日
许可协议