前言
本文章是根据法国国立高等电力技术、电子学、计算机、水力学与电信学校 (E.N.S.E.E.I.H.T.) 第七学期课程*“Optimisation”* 总结而来的【部分课程笔记】。碍于本人学识有限,部分叙述难免存在纰漏,请读者注意甄别。
最优化问题解题步骤
1. 建模最优化问题
我们首先需要根据题目的描述对于问题 (P) 进行数学建模。包括问题中提供的任何信息。确定
(1) 我们想要最大化或最小化目标函数,并将其统一转换成最小化问题;
(2) 为目标方程中的变量依照题意添加约束,统一标准化为小于等于约束;
(3) 如果可以,结合图形更加直观。
2. 确定目标函数的定义域 Ω
目标函数的定义域 Ω 的封闭性、有无界性、是否非空 和 凹凸性:必须是一个封闭(closed) 的、有界的(bounded) 非空 (non-empty) 凸区间 (convex interval) (即两端都有端点并包含这些端点的区间,且区间中任意两点的连线上的所有点都属于这个区间)
3. 判断目标函数在定义域 Ω 上的极值情况
-
存在性 (existence):一阶偏导 (梯度) ∇ 检验,评估目标函数在定义域 Ω 中的一阶偏导,简单判断目标函数的极值情况。例如:
f(x1,x2,x3)⇒f(z,z,z)z→∞f→∞ 无全局最大值,
f(x1,x2,x3)⇒f(z,z,z)z→−∞f→−∞ 无全局最小值
-
唯一性 (unicité):二阶偏导 (梯度) ∇2 检验,要求:定义域 Ω 中必须只有一个极值。测试:求目标函数的二阶偏导 ,并在临界数处对其进行评估。如果该值为 <0,则临界数表示严格极大值 (strict maximum)。如果该值为>0,则临界数表示严格极小值 (strict minimum)。
4. 构造拉格朗日乘数法或KKT
下略。
范数
是数学中的一种基本概念。 在泛函分析中,它定义在赋范线性空间中,并满足一定的条件,即 ①非负性;②齐次性;③三角不等式。 它常常被用来度量某个向量空间(或矩阵)中的每个向量的长度或大小。
-
l1范数 :
∥x∥1=i=1∑n∣xi∣
-
l2范数 :
∥x∥2=xTx=i=1∑nxi2
-
l∞范数 :
∥x∥∞=max{∣xi∣:i∈1,2,...,n}
-
lp范数 :
∥x∥p=(i=1∑n∣xi∣p)p1,p∈[1,∞)
凸集
凸集 (Convex set)
给定非空集合 F⊆Rn,如果 ∀x,y∈F,α∈[0,1] 都有 αx+(1−α)y∈F,那么我们就称这个 F 为 Rn 中的一个凸集,即集合中的任意两点的连线仍然属于该集合。
凸组合 (Convex combination)
x1,x2,...,xk 的凸组合:
λ1x1+λ2x2+...+λkxk
其中,λ1,λ2,...,λk≥0,∑i=1kλi=1
黑塞矩阵 (Hessain)
在之前的学习中我们已经知道,一阶导数,也就是目标函数的梯度,反映了函数值随着自变量 x 变化的速率情况。所谓二阶导数,就是在一阶导数的基础上再求导数,反映了一阶导数的变化情况。
例如对于二次型函数 f(x)=x2,它的一阶导数就是 dxdf(x)=2x,二阶导数为 dx2d2f(x)=2
将其推广,对于一般的多元函数 f(x):Rn→R, 对其求一阶偏导数 (partial),一阶偏导为向量称作梯度 (gradient):
∇f(x)=⎣⎢⎢⎢⎢⎡∂x1∂f∂x2∂f⋮∂xn∂f⎦⎥⎥⎥⎥⎤
我们再对一阶导数 \frac{\part f(x)}{\part x} 对于 xi 求偏导,我们可以得到
∇(∂xi∂f)=∇2f(x)=⎣⎢⎢⎢⎢⎡∂x1∂∂x1∂f∂x1∂∂x2∂f⋮∂x1∂∂xn∂f∂x2∂∂x1∂f∂x2∂∂x2∂f⋮∂x2∂∂xn∂f⋯⋯⋱⋯∂xn∂∂x1∂f∂xn∂∂x2∂f⋮∂xn∂∂xn∂f⎦⎥⎥⎥⎥⎤←HessianMatrix
黑塞矩阵是对梯度再求一次偏导,所以它是 n×n 的方阵,满足对称性 Hij=Hji
例:对于 f(x,y)=5x+8y+xy−x2−2y2
∇f(x,y)=[∂x∂f∂y∂f]=[5−2x+y8+x−4y]H(x)=[211−4]
对于二次函数,黑塞矩阵为常数矩阵。
黑塞矩阵的意义
如果一个函数的黑塞矩阵是正定 (positive definite) 的,即特征值大于 0,也即目标函数在所有可行方向 d 上的二阶导数都大于 0。我们就可以得出 f(x) 是一个严格的凸函数,其极值就是极小值,而且也是**全局的最小值**。
矩阵的正定
正定矩阵首先是一个对称阵。以下我们介绍一种判断矩阵是否正定的方法,Sylvester’s Criterion:
Sylvester’s Criterion
各阶行列式(顺序主子式)都大于0 ⇒ 矩阵正定 ≻0
⎣⎡2−10−12−10−12⎦⎤⇒∣∣2∣∣>0∣∣∣∣2−1−12∣∣∣∣>0∣∣∣∣∣∣2−10−12−10−12∣∣∣∣∣∣>0
无约束优化问题的最优性条件
无约束优化问题: minf(x)
最优解的定义:
-
局部最优解:对于一个解 xˉ,在 xˉ 的临域空间 Ns(xˉ) 内 f(xˉ) 的值是最大或最小的。
∀x∈Ns(xˉ),f(x)≥f(xˉ)或f(x)≤f(xˉ)
-
全局最优解:对于一个解 xˉ,在任意n维空间 Rn 内 f(xˉ) 的值是最大或最小的。
∀x∈Rn,f(x)≥f(xˉ)或f(x)≤f(xˉ)
-
严格局部最优解:对于一个解 xˉ,在 xˉ 的临域空间 Ns(xˉ) 内 f(xˉ) 的值是严格最大或最小的(不包含等于情况)。
∀x∈Ns(xˉ),f(x)>f(xˉ)或f(x)<f(xˉ)
-
严格全局最优解:对于一个解 xˉ,在任意n维空间 Rn 内 f(xˉ) 的值是严格最大或最小的(不包含等于情况)。
∀x∈Rn,f(x)>f(xˉ)或f(x)<f(xˉ)
最优性条件
考虑无约束优化问题: minf(x)
-
必要条件:若 x∗ 是最优解,则 x∗ 有如下性质:
(1)∇f(x∗)=0目标函数在 x∗的位置时梯度为零(2)∇2f(x∗)⪰0目标函数在 x∗的位置时黑塞矩阵是半正定的
-
充分条件:
若∇f(x∗)=0,∇2f(x∗)≻0⇒则x∗是严格最优的
无约束优化:线搜索 和 信赖域
考虑无约束优化问题: minf(x)
迭代下降算法的描述:
给定一个初始点 x0 ,我们可以判断 x0 是否是我们需要找的点,如果不是,我们要产生点列 {xk}k=1∞ ,并且满足 f(xk+1)<f(x) “下一个点的函数值比当前点的函数值小”。我们有两种策略:线搜索 (Line search) 和 信赖域 (Trust region)
线搜索方法
算法描述
- 给定初始点 x0
- 判断 x0 是否满足【终止条件】;是,则终止
- 当前点为 xk,首先找到【下降方向 dk】(从这个点出发,有一段步长的距离,目标函数值会减小的方向)
- 确定【步长 αk>0 】,使得 f(xk+αkdk)<f(x)
- 我们就得到了下一个点 xk+1:=xk+αkdk;转第 2 步
- 终止条件:∥∇f(xk)∥2≤E,其中 E 是一个很小的正整数,意味着当梯度趋近于 0
- 下降方向 dk 的选择:最速下降、共轭梯度等
- 步长 αk 的选择:我们令 ϕ(α):=f(xk+αdk),步长 αk=minϕ(α),α≥0
- 算法结束后会给我们一个点列 {xk},我们需要关心点列的收敛性和收敛速度
信赖域方法
- 当前点为 xk,首先决定“活动范围 Δ” ∥d∥2≤Δ
- 再决定“活动方向”
无约束优化:最速下降
收敛速度
设当前点列 {xk} 收敛到 x∗,若存在极限
k→∞lim∥xk−x∗∥2∥xk+1−x∗∥2=β
- 当 0<β<1 时,则称点列 {xk} 为线性收敛
- 当 β=0 时,则称点列 {xk} 为超线性收敛
若存在某个 p≥1,有
k→∞lim∥xk−x∗∥2p∥xk+1−x∗∥2=β<+∞
则称点列 {xk} 为p阶收敛
- 当 p>1 时,p阶收敛必为超线性收敛
最速下降法
也叫做梯度下降法。【基本思想】是选择 xk 处的负梯度方向作为搜素方向,即 $d_k = -\nabla f(x_k) $
- 优点:简单直观;收敛;搜素方向只需计算 $-\nabla f(x_k) $
- 缺点:收敛速度慢(线性搜索);Zigzag现象(路径是“之”字形);不具备“在有限步内求得凸二次函数最优解”的特性
约束优化:KKT 条件
一阶必要条件 : 最优解→KKT点
假设 x∗ 是问题 P 的局部最优解,且 x∗ 某处的约束规范 (constraint qualification) 成立,则存在 λ,μ 使得
x∈R2minf(x)s.t.∀i∈{1,2,...,l}:hi(x)=0且∀j∈{1,2,...,m}:gj(x)≤0可行集S(E)={x∣满足s.t.}
-
∇f(x∗)+i=1∑mλi∇gi(x∗)+i=1∑lμi∇hi(x∗)=0
-
∀i∈{1,2,...,m}:λi≥0
-
∀i∈{1,2,...,m}:gi(x∗)≤0
-
∀i∈{1,2,...,m}:hi(x∗)=0
-
∀i∈{1,2,...,m}:λigi(x∗)=0
二阶充分条件 : KKT点→最优解
假设 x∗ 满足上述的 KKT 条件,我们定义一个函数 L(x)=f(x)+∑μihi(x)+∑λigi(x)),可知:
- ∇xL(x∗)=0KKT条件中的第 1 条
- L(x∗)=f(x∗)+∑μihi(x∗)+∑λigi(x∗))=f(x∗)+0+0⇒L(x∗)=f(x∗)
- ∀x∈S(E),L(x)≤f(x)
有以下结论:
- 由 2, 3 可知,若 x∗ 是 L(x) 的最优解,则x∗ 也是 P 的最优解:f(x∗)=L(x∗)≤L(x)≤f(x)
- 若 ∇xxL(x∗)⪰0,∀x∈S(E),则 x∗ 是 P 的全局最优解
- 若 ∇xxL(x∗)⪰0,∀x∈{S(E)∩临域NS(x∗)},则 x∗ 是 P 的局部最优解
- 若 ∇xxL(x∗)≻0,则 x∗ 是 P 的严格局部最优解
约束优化:对偶理论
考虑如下一般形式的约束优化问题:
(P):x∈R2minf(x)s.t.⎩⎪⎨⎪⎧hi(x)=0,∀i∈{1,2,...,l}gj(x)≤0,∀j∈{1,2,...,m}x∈X可行集S(E)={x∈X∣满足s.t.}
其中 X 是“集合约束”,如果:
- X=Rn 所研究的问题 P 就是在 n 维实数域上的连续优化问题,就可以运用以上知识
- X=Z+n 所研究的问题 P 就是在 n 维整数(或非负整数)域上的连续优化问题,就可以运用以上知识
- X={0,1}n 所研究的问题 P 就是在 n 维 0-1 集合上的离散整数优化问题
对偶问题的意义
原问题(P)构建对偶问题(D)
- 如果原问题 (P) 是非凸问题,我们很难求解这一类
NP-hard
问题,我们就可以构造一个和原问题 (P) 的关系紧密又简单的对偶问题 (D) 来求解;
- 在线性规划问题中的对偶问题;
- 鲁棒优化,锥优化
拉格朗日对偶问题
(P):x∈R2minf(x)s.t.⎩⎪⎨⎪⎧hi(x)=0,∀i∈{1,2,...,l}gj(x)≤0,∀j∈{1,2,...,m}x∈X可行集S(E)={x∈X∣满足s.t.}
我们引入拉格朗日函数:
L(x,λ,μ)=f(x)+i=1∑lμihi(x)+i=1∑mλigi(x))
此时我们对拉格朗日函数 L 求最小值,得到拉格朗日对偶函数 (dual function):
d(λ,μ)=x∈Xmin(L(x,λ,μ))=x∈Xmin{f(x)+i=1∑lμihi(x)+i=1∑mλigi(x)}≤x∈S(E)min{f(x)+i=1∑lμihi(x)+i=1∑mλigi(x)}≤x∈S(E)min{f(x)}
- 对于 ∀(λ,μ),λ≥0 必有 d(λ,μ)≤v(P),即 d(λ,μ) 是 v(P) 的下界,所以我们要找出 d(λ,μ) 的【最大值】
此时我们就可以给出拉格朗日问题的对偶问题 (D) :
(D):maxd(λ,μ)s.t.λi≥0,∀i∈{1,2,...,m}
写成以下形式:
(D):λ≥0maxx∈Xmin(L(x,λ,μ))交换x∈Xminλ≥0max(L(x,λ,μ))
经过推导,问题 (D) 可转化成原问题 (P):
(P):x∈R2minf(x)s.t.⎩⎪⎨⎪⎧hi(x)=0,∀i∈{1,2,...,l}gj(x)≤0,∀j∈{1,2,...,m}x∈X
弱对偶定理
在之前拉格朗日对偶问题中,“对于 ∀(λ,μ),λ≥0 必有 d(λ,μ)≤v(P),即 d(λ,μ) 是 v(P) 的下界,所以我们要找出 d(λ,μ) 的最大值”。我们可以推导到一般:
- 设 $ v (\mathcal{P})$ 是原问题 (P) 的最优值,$ v (\mathcal{D})$ 是对偶问题 (D) 的最优值,则 $ v (\mathcal{D}) \le v (\mathcal{P})$
推论:假设 xˉ∈S(E),(λˉ,μˉ),λˉ≥0且d(λˉ,μˉ)=f(xˉ),则 $ v (\mathcal{P}) = v (\mathcal{D}) ; 且 ; \bar x,(\bar \lambda,\bar \mu) ; 是; v (\mathcal{P}) ; 和 ; v (\mathcal{D}) ; 的最优解$