一、什么是数学优化
1.1 数学优化问题分类
实际工作中大量的决策问题,如计算广告中的部分机制策略问题、物流行业的路径规划问题甚至机器学习中的优化问题,都可以表示为数学优化问题,或者数学优化问题的变化形式如多目标优化问题。因此,接下来一段时间将会持续更新数学优化中的凸优化问题和整数规划问题相关知识总结
数学优化问题可以写成如下形式:
m i n i m i z e f 0 ( x ) s u b j e c t t o f i ( x ) ≤ b i , i = 1 , 2 , . . . , m ( 1 ) \begin{array}{l} minimize f_{0}(x) \\ subject {\,} to f_{i}(x) \leq b_{i},i=1,2,...,m (1) \end{array} minimize f0(x)subjectto fi(x)≤bi,i=1,2,...,m (1)
向量
x
=
{
x
1
,
.
.
.
,
x
n
}
x=\{x_{1},...,x_{n}\}
x={x1,...,xn}称为问题的优化变量,函数
f
0
:
R
n
→
R
f_{0}:R^{n} \rightarrow R
f0:Rn→R称为目标函数,函数
f
i
:
R
n
→
R
,
i
=
1
,
2
,
.
.
.
,
m
f_{i}:R^{n} \rightarrow R,i=1,2,...,m
fi:Rn→R,i=1,2,...,m称为约束函数,常数
b
1
,
.
.
.
,
b
m
b_{1},...,b_{m}
b1,...,bm称为约束上限或者约束边界。如果在所有满足约束的向量中向量
x
∗
x^{*}
x∗对应的目标函数值最小,则
x
∗
x^{*}
x∗称为问题的最优解
线性规划是数学优化中的重要一类。若优化问题(1)中的目标函数和约束函数都是都是线性函数,线性函数定义如下:
f i ( α x + β y ) = α f i ( x ) + β f i ( y ) ∀ x , y ∈ R n ∀ α , β ∈ R n ( 2 ) \begin{aligned} f_{i}(\alpha x + \beta y)&=\alpha f_{i}(x) + \beta f_{i}(y) \\ \forall x, y & \in R^{n} \\ \forall \alpha, \beta & \in R^{n} (2) \end{aligned} fi(αx+βy)∀x,y∀α,β=αfi(x)+βfi(y)∈Rn∈Rn (2)
则这类优化问题成为线性规划问题;否则,就是非线性规划问题
除了按照线性/非线性划分外,还可以从另外一种角度来区分数学优化问题,即是否是凸优化问题。凸优化问题中的目标函数和约束函数都是凸函数:
f i ( α x + β y ) ≤ α f i ( x ) + β f i ( x ) x , y ∈ R n α , β ∈ R n α + β = 1 α > 0 β > 0 ( 3 ) \begin{aligned} f_{i}(\alpha x + \beta y)& \leq \alpha f_{i}(x) + \beta f_{i}(x) \\ x, y & \in R^{n} \\ \alpha, \beta & \in R^{n} \\ \alpha + \beta &= 1 \\ \alpha & >0 \\ \beta & > 0 (3) \end{aligned} fi(αx+βy)x,yα,βα+βαβ≤αfi(x)+βfi(x)∈Rn∈Rn=1>0>0 (3)
比较(2)和(3)很容看出,凸性是比线性更为一般的性质,因此,可以将凸优化问题看作线性规划问题的扩展
下面首先简要介绍两类应用广泛的凸优化问题,最小二乘问题和线性规划问题;然后对凸优化问题的使用进行简单总结
1.2 最小二乘问题
最小二乘问题没有约束条件,形式如下:
m i n i m i z e f 0 ( x ) = ∣ ∣ A x − b ∣ ∣ 2 2 = ∑ i = 1 k ( a i T x − b i ) 2 ( 4 ) minimize f_{0}(x)=||Ax-b||_{2}^{2}=\sum_{i=1}^{k}(a_{i}^{T}x-b_{i})^{2} (4) minimize f0(x)=∣∣Ax−b∣∣22=i=1∑k(aiTx−bi)2 (4)
上式的求解可以转换为求解一组线性方程:
( A T A ) x = A T b (A^{T}A)x=A^{T}b (ATA)x=ATb
可得解析解
x
=
(
A
T
A
)
−
1
A
T
b
x=(A^{T}A)^{-1}A^{T}b
x=(ATA)−1ATb。最小二乘问题可在有限时间内进行求解,时间复杂度与
n
2
k
n^{2}k
n2k成正比
在实际问题中,有时需要对最小二乘中的每一项进行加权,这就是加权最小二乘问题:
∑ i = 1 k w i ( a i T x − b i ) 2 \sum_{i=1}^{k}w_{i}(a_{i}^{T}x-b_{i})^{2} i=1∑kwi(aiTx−bi)2
加权系数都大于0,它反映了求和项对解的影响程度
正则化也是最小二乘问题中的一项常用技术,它通过在成本函数中增加一些多余的项来实现:
∑ i = 1 k ( a i T x − b i ) 2 + ρ ∑ i = 1 n x i 2 ( 5 ) \sum_{i=1}^{k}(a_{i}^{T}x-b_{i})^{2}+\rho \sum_{i=1}^{n}x_{i}^{2} (5) i=1∑k(aiTx−bi)2+ρi=1∑nxi2 (5)
当 x x x的取值较大时,增加的项对其施加一个惩罚,得到的解比只优化第一项时更加符合实际。在统计估计中,当待估计向量 x x x的分布预先知道时,可以采用正则化方法
1.3 线性规划
正如前面所述,线性规划的目标函数和约束函数都是线性函数,如下表述:
m i n i m i z e c T x s u b j e c t t o a i T x ≤ b i , i = 1 , 2 , . . . , m \begin{array}{l} minimize c^{T}x \\ subject {\,} to a_{i}^{T}x \leq b_{i},i=1,2,...,m \end{array} minimize cTxsubjectto aiTx≤bi,i=1,2,...,m
线性规划的解并没有一个简单的解析表达式,但有很多求解线性规划问题的方法,如单纯形法、内点法等
在很多情况中,原始的优化问题并不是线性规划问题的标准形式,但是可以转换为一个等价的线性规划问题,这里举个例子来说明
Chebyshev逼近问题额形式如下:
m i n i m i z e m a x i = 1 , . . . , k ∣ a i T x + b i ∣ ( 6 ) minimize max_{i=1,...,k}|a_{i}^{T}x+b_{i}| (6) minimize maxi=1,...,k∣aiTx+bi∣ (6)
上式与最小二乘问题非常相似,不同点在于前者在优化差值的绝对值中最大的一项,后者在优化差值的平方和。求解(6)式相当于求解下面的线性规划问题:
m i n i m i z e t s u b j e c t t o a i T x − t ≤ b i a n d − a i T x − t ≤ − b i \begin{array}{l} minimize t \\ subject {\,} to a_{i}^{T}x-t \leq b_{i} {\,} and {\,} -a_{i}^{T}x-t \leq -b_{i} \end{array} minimize tsubjectto aiTx−t≤biand−aiTx−t≤−bi
因此,可通过求解线性规划问题进而求解Chebyshev逼近问题
1.4 凸优化问题的实践建议
凸优化问题的形式如(3)所示。和线性规划类似,凸优化问题的解没有一个明确的解析表达式,但存在很多有效的算法进行求解,如内点法
使用凸优化的难点和技巧在于判别问题是否属于凸优化问题以及表述问题,一旦实际问题被表述为凸优化问题的形式,解决问题就只是一项技术了
二、非线性优化
非线性优化问题与线性优化问题的区别是,它的目标函数或者约束函数是非线性函数,而且不一定是凸函数的优化问题。非线性优化问题还没有有效的求解方法,现在用于求解一般非线性规划问题的方法都是在放宽某些指标的情况下进行求解
2.1 局部优化
在局部优化中,不再搜索使目标函数值最小的最优可行解,而是寻找局部最优解
此外,需要确定优化变量的初始值。初始值的选取非常重要,对最终得到的局部最优解有很大的影响;局部优化方法对算法的参数值也比较敏感,通常需要针对某个具体的问题进行求解
2.2 全局优化
全局优化致力于搜索优化问题的最优解,付出的代价是效率。全局优化问题在某些场景下非常有用,如工程设计中安全性第一的最坏情况分析问题。目标函数值是效用函数,函数值越小,情况越坏,优化问题是寻找最坏情况下的参数值。如果在最差值的情况下,系统仍能正常运行,就认为系统是安全可靠的
关注公众号:老刘聊广告,获取更多知识总结和广告领域前沿算法