内容主要来源于 大数据文摘
1 高数教材中拉格朗日乘子法的泛化
1.1 高数教材中的拉格朗日乘子法
我们大学时讲了这个计算条件极值的方法,运用拉格朗日乘数法(乘子法)
{minf(x)s.t.hi(x)=0i=1,2...,n
第一行就是目标函数,第二行是约束函数。我们就是想在h(x)=0一系列函数的约束下,求f(x)的最小值。我们可以用(1)式中的方法求解
min[f(x)+∑i=1nλihi(x)](1)
这当然是个很简单的事件了。但是这是绝对是个特例。你看啊,上面的约束条件都是等式,但事实上很多情况都是不等式。这就是我们的拉格朗日乘数法(乘子法)的扩展KKT问题。
1.2 KKT(Karush–Kuhn–Tucker conditions)问题
在1.1中,约束机制的泛化了的就是KKT。KKT的名字让人的意思不明所以,其实就是一般约束优化问题极值点一阶必要条件:
如果 x∗ 是约束条件的局部最小,那么有如下条件
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪s.t.gi(x)=0i=1,2...,ps.t.hj(x)⩽0j=1,2...,q∇f(x∗)=∑i=1pμi∇gi(x∗)+∑j=1qλj∇hj(x∗)λ∗j⩾0j=1,2...,qλ∗jhj(x∗)=0j=1,2...,q
因为可以利用正负号更改最大最小,大于等于号,所以上式基本可以表达所有情况。
但一定要注意大于号的方向。
那么这就是变成解 x∗ 的行为。(同时也要注意,上式仅仅是必要条件。)
为什么”极值点’一阶‘必要条件”?在第三个式子解出的 x∗ 是驻点,我们同时需要判断二阶Hassion矩阵。这个式子是怎么来?还得从凸函数好好说起。
2 凸函数
我按照点集的观点重新审视下点线面。初中时,遇到一种四边形的说法“凸四边形”,“凹四边形”。老师讲凸四边形就是“四个角都凸出来的,如平行四边形梯形等;凹四边形就是有角凹进去了的四边形,如下图”。
这么说的确很容易理解,但不是数学语言。详细描述这个问题很复杂,可以先从点集入手。
2.1 仿射,凸集
基础:过两点 x1,x2 的直线表示为 x=θx1+(1+θ)x2,θ∈R ,即 Ax=b 的解。我们借助直线定义仿射。
如果一个集合 C∈Rn 是仿射的,则过C中两点间的直线(注意不是线段)也在C中,例如上面的 x=θx1+(1+θ)x2,θ∈R 注意 C∈R
如果一个集合 C∈Rn 是凸的,则过C中两点间的线段(注意不是直线段)也在C中。即对于任意 x1,x2∈C ,有 x=θx1+(1+θ)x2,1⩾θ⩾0 注意 C∈R
下图中左边是凸的,右边不是凸的
2.2 凸函数
2.3凸函数的性质
- 一元二阶可微的函数在区间上是凸的,当且仅当它的二阶导数是非负的;这可以用来判断某个函数是不是凸函数。如果它的二阶导数是正数,那么函数就是严格凸的,但反过来不成立。根据上节课的经验,当一元变为多元时,可以判断Hassion矩阵是否正定。
- 保凸运算(这个很重要)
- f是凸函数,自变量的线性组合,f(Ax+b)也是凸函数
- f1,⋯,fm 为凸函数, w1,⋯,wm≥0 ,则 ∑mi=1wifi 也是凸函数
- f1,⋯,fm 为凸函数,逐点最大 f(x)=sup{f1(x),⋯,fm(x)} 也是凸函数。这条性质跟实际应用时可以给正则化一个解释。加了正这则化的凸函数也是凸函数,所以正则化对原函数的解题方法无影响。
- g,h为凸函数,扩展的h非递减(这条性质很重要)。则f(x)=h(g(x))也是凸函数。
- 对于凸函数f的 α 水平子集 Sα={x|f(x)≤a} 是凸集。水平子集是凸集的函数不一定是凸函数。这样的函数称为拟凸函数。
2.2 凸优化问题
还是回到上面我们的条件极值问题,我们这里加上几个条件,让它变成的功能强大的函数:
minimizef(x){s.t.gi(x)=0i=1,2...,ps.t.hj(x)⩾0j=1,2...,q
但我们做了额外要求:
1. 目标函数是凸函数我们的目标函数f(x)是凸函数
2. 不等式约束函数也是凸函数,这里要注意不等号的方向。有些数不等号方向不同,这里一定要注意。这条要求的实质条件是
围成的可行域交集是个凸集。由于具有不同的形式,在后面推导KKT的过程会有不同。
3. 等式约束(这里的
gj(x) )必须是仿射的。
这就是在一个凸集上极小化一个凸的目标函数问题。
凸优化问题的局部最优等于全局最优
我们费尽心思搞的凸优化形式,目的就是就求目标函数在可行域上的的极值。这里是可行域,因为还会有正无穷或负无穷(但我们视为可行域是空的,如求y=x的极值)。
凸优化里面,KKT不仅仅是必要条件,而是充分必要条件
具体原因还得详细解释下KKT的由来。
3 KKT(Karush–Kuhn–Tucker conditions)问题的解释——对偶问题
3.1 普通的条件极值问题
首先我们不管什么凸函数不凸函数。还是熟悉的条件极值问题。
注意:目标函数*“最小化问题”*与h函数的*“不等号方向”*是配对的;
上面的同样的式子为了普遍性,故意不转化成这种情况。
minimizef(x){s.t.gi(x)=0i=1,2...,ps.t.hj(x)⩽0j=1,2...,q
然后我们用拉格朗日法合并目标函数与约束:
L(x,μ,λ)=f(x)+∑pi=1μigi(x)+∑qj=1λjhj(x)
这下我们知道
L(x,μ,λ) 是关于
μ,λ 的仿射函数。
当
λ⩾0,x0 为一个区域内符合条件的点时,我们取区间D内x的逐点最小值,就是下确界inf,有:
g(μ,λ)=infx∈DL(x0,μ,λ)=f(x0)+∑i=1pμigi(x0)+∑j=1qλjhj(x0)
L(x,μ,λ) 是关于
μ,λ 的仿射函数(我们暂定算凹的),那么
g(μ,λ) 应该算凹(或者仿射)吧,但肯定是非凸的。
我们还知道了
f(x0) 后面的项一个负数,一个零。肯定有
g(μ,λ)⩽f(x0)+∑i=1pμigi(x0)+∑j=1qλjhj(x0),↓g(μ,λ)⩽f(x0)
这样区间内x的最优解
x∗ 肯定有
g(μ,λ)⩽f(x∗)=p∗
3.2 对偶问题
那么任意一个相似条件极值(我没说凹凸性)都可以求它的对偶问题,且这个对偶问题是个凸优化问题:
maximizeg(μ,λ)s.t.λ⩾0
设整理这里最优值为
d∗ ,那么
d∗⩽p∗
但是当“强对偶”现象情况发生时,等号成立。
什么时候“强对偶”现象发生?
答:原问题是个凸优化问题。。。
在经过一些不重要的证明(我懒不想写)我们得到凸优化求全局极值的充分必要条件就是KKT。。。。