最优化的基本概念
一般来说,最优化算法研究可以分为: 构造最优化模型、确定最优化问题的类型和设计算法、实现算法或调用优化算法软件包进行求解.最优化模型的构造和实际问题紧密相关,比如说,给定二维欧几里得(Euclid)空间的若干个离散点,假定它们可以通过一条直线分成两部分,也可以通过一条曲线分成两部分.那么分别使用直线与曲线所得到的最优化模型是不同的.在确定模型之后,我们需要对模型对应的优化问题进行分类.
这里, 分类的必要性是因为不存在对于所有优化问题的一个统一的算法.因此我们需要针对具体优化问题所属的类别,来设计或者调用相应的算法求解器.最后就是模型的求解过程.同一类优化问题往往存在着不同的求解算法.对于具体的优化问题,我们需要充分利用问题的结构,并根据问题的需求(求解精度和速度等)来设计相应的算法.
另外,根据算法得到的结果,我们可以来判别模型构造是否合理或者进一步地改进模型.如果构造的模型比较复杂,那么算法求解起来相对困难(时间慢或者精度差).此时算法分析可以帮助我们设计替代模型,以确保快速且比较精确地求出问题的解.这三个部分的研究对于形成完备的最优化体系是必要的.实际应用导出的各种各样的最优化模型给最优化学科不断注入新鲜的血液,对现有的优化算法进行挑战并推动其向前发展.最优化算法的设计以及理论分析帮助实际问题建立更鲁棒稳定的模型.模型与算法相辅相成,使得最优化学科不断发展.
连续和离散优化问题
最优化问题可以分为连续和离散优化问题两大类.连续优化问题是指决策变量所在的可行集合是连续的,比如平面、区间等.如稀疏优化问题的约束集合就是连续的.离散优化问题是指决策变量能在离散集合上取值,比如离散点集、整数集等.常见的离散优化问题有整数规划,其对应的决策变量的取值范围是整数集合.
在连续优化问题中,基于决策变量取值空间以及约束和目标函数的连续性,我们可以从一个点处目标和约束函数的取值来估计该点可行领域内的取值情况.进一步地,可以根据邻域内的取值信息来判断该点是否最优.离散优化问题则不具备这个性质,因为决策变量是在离散集合上取值.因此在实际中往往比连续优化问题更难求解.实际中的离散优化问题往往可以转化为一系列连续优化问题来进行求解.比如线性整数规划问题中著名的分支定界方法,就是松弛成一系列线性规划问题来进行求解.因此连续优化问题的求解在最优化理论与算法中扮演着重要的角色.
无约束和约束优化问题
最优化问题的另外一个重要的分类标准是约束是否存在.无约束优化问题的决策变量没有约束条件限制,即可行集合 X = Rn.相对地,约束优化问题是指带有约束条件的问题.在实际应用中,这两类优化问题广泛存在.无约束优化问题对应于在欧几里得空间中求解一个函数的最小值点.比如在ℓ1 正则化问题中,决策变量的可行域是 Rn,其为一个无约束优化问题.
因为可以通过将约束罚到目标函数上转化为无约束问题,所以在某种程度上,约束优化问题就是无约束优化问题.很多约束优化问题的求解也是转化为一系列的无约束优化问题来做,常见方式有增广拉格朗日函数法、罚函数法等.尽管如此,约束优化问题的理论以及算法研究仍然是非常重要的.主要原因是,借助于约束函数,我们能够更好地描述可行域的几何性质,进而更有效地找到最优解.对于典型的约束和无约束优化模型.
随机和确定性优化问题
伴随着近年来人工智能的发展,随机优化问题的研究得到了长足的发展.**随机优化问题是指目标或者约束函数中涉及随机变量而带有不确定性的问题.**不像确定性优化问题中目标和约束函数都是确定的,随机优化问题中总是包含一些未知的参数.在实际问题中,我们往往只能知道这些参数的某些估计.随机优化问题在机器学习、深度学习以及强化学习中有着重要应用,其优化问题的目标函数是关于一个未知参数的期望的形式.因为参数的未知性,实际中常用的方法是通过足够多的样本来逼近目标函数,得到一个新的有限和形式的目标函数.由于样本数量往往非常大,我们还是将这个问题看作相对于指标随机变量的期望形式,然后通过随机优化方法来进行求解.
相比于确定性优化问题,随机优化问题的求解往往涉及更多的随机性.很多确定性优化算法都有相应的随机版本.随机性使得这些算法在特定问题上具有更低的计算复杂度或者更好的收敛性质.以目标函数为多项求和的优化问题为例,如果使用确定性优化算法,每一次计算目标函数的梯度都会引入昂贵的复杂度.但是对于随机优化问题,我们每次可能只计算和式中的一项或者几项,这大大减少了计算时间.同时我们还能保证算法求解的足够精确.
线性和非线性规划问题
线性规划是指目标函数和约束函数都是线性的.当目标函数和约束函数至少有一个是非线性的,那么对应的优化问题的称为非线性规划问题.线性规划问题在约束优化问题中具有较为简单的形式.类似于连续函数可以用分片线性函数来逼近一样,线性规划问题的理论分析与数值求解可以为非线性规划问题提供很好的借鉴和基础.
线性规划问题的研究很早便得到了人们的关注.在 1946—1947 年,GeorgeBernard Dantzig 提出了线性规划的一般形式并提出了至今仍非常流行的单纯形方法.虽然单纯形方法在实际问题中经常表现出快速收敛,但是其复杂度并不是多项式的.1979 年,Leonid Khachiyan 证明了线性规划问题多项式时间算法的存在性.1984 年,Narendra Karmarkar 提出了多项式时间的内点法.后来,内点法也被推广到求解一般的非线性规划问题.目前,求解线性规划问题最流行的两类方法依然是单纯形法和内点法.
凸和非凸优化问题
凸优化问题是指最小化目标函数和可行域分别是凸函数和凸集.如果其中有一个或者两者都不是凸的,那么相应的最小化问题是非凸优化问题.因为凸优化问题的任何局部最优解都是全局最优解,其相应的算法设计以及理论分析相对非凸优化问题简单很多.
在实际问题的建模中,我们经常更倾向于得到一个凸优化模型.另外,判断一个问题是否是凸问题也很重要.比如,给定一个非凸优化问题,一方法是将其转化为一系列凸优化子问题来求解.此时需要清楚原非凸问题中的哪个或哪些函数导致了非凸性,之后考虑的是如何用凸优化模型来逼近原问题.在压缩感知问题中, ℓ 0 ℓ_0 ℓ0范数是非凸的,原问题对应的解的性质难以直接分析,相应的全局收敛的算法也不容易构造.利用 ℓ 0 ℓ_0 ℓ0范数和 ℓ 1 ℓ_1 ℓ1 范数在某种意义上的等价性,我们将原非凸问题转化为凸优化问题.在一定的假设下,我们通过求解 ℓ 1 ℓ_1 ℓ1范数对应的凸优化问题得到了原非凸优化问题的全局最优解.
全局和局部最优解
在求解最优化问题之前,先介绍最小化问题的最优解的定义.
**定义 1.1 (**最优解) 对于可行点 x ˉ \bar x xˉ(即 x ˉ ∈ X \bar x \in \mathcal X xˉ∈X),定义如下概念:
(1) 如果 f ( x ˉ ) ⩽ f ( x ) f(\bar x) ⩽ f(x) f(xˉ)⩽f(x), ∀ x ∈ X ∀x ∈ \mathcal X ∀x∈X,那么称 x ˉ \bar x xˉ