上一篇文末介绍了一个词,二元性(Duality),那么什么是二元性?
二元性
In mathematical optimization theory, duality means that optimization problems may be viewed from either of two perspectives, the primal problem or the dual problem (the duality principle). The solution to the dual problem provides a lower bound to the solution of the primal (minimization) problem. (Wikipedia)
在数学优化理论中,二元性意味着优化问题可以从两个角度来看,即原始问题或对偶问题(二元性原理)。对偶问题的解决方案为原始(最小化)问题的解提供了下限。
什么是下界(lower bound)?
如果你有一个部分有序的集合 k,下界就是K中小于或等于S的元素。举个例子,
考虑实数的一个子集,
- 因为1小于或者等于2, 4, 8, 12,所以1是S的下界。
- 同样,-3也是S的下界。
- 即时在集合S里面找一个数,2也是S的下界。
同理我们能够想到上界或者上限。
究竟什么是二元性(Duality)
二元性的定义表示如果你有一个最小化的问题,你也可以把它看做一个最大化的问题。当你找到这个问题的最值,它会是最小值问题的一个下界。
为什么要关注二元性?
解决对偶问题(dual problem)比解决原始问题要简单。看图说话
从图中的上半部分,我们想找的全局的最小值就是P。对于下半部分,有最大值D。这幅图中可以很看到,就是一个下界,因为它总是小于或者等于上面图形的任何一点。定义的值为二元差(Duality gap)。在这个例子中,, 我们说这是弱对偶性(weak duality holds)。
在这幅图中,的值为0 (no duality gap),称之为强对偶(strong duality holds)。
带约束条件的优化问题
优化问题
优化问题可以写成如下标准格式:
称为目标方程,我们想要找到使得最小。p个函数是等式约束方程,m个函数是不等约束方程。
我们找的结果必须满足约束条件。
满足约束条件是什么意思?
假如要你解下面的优化问题
显然处取得最小值。
等式约束
在上面的问题上再加一个约束,如下
这时候虽然在0处取得最小值,但是并不满足约束的条件,所以在这里,只有是解。看这个例子,你可能会觉得等式约束是无用的。但是情况并非如此,因为大部分时间优化问题都在多个维度上执行。所以你可以最小化一个函数,当只有一个等式约束。
不等式约束
把上面的等式约束改为不等式约束,如下
同理,我们把图画出来,注意观察x轴的取值
x的取值范围为,对应的取值只在蓝线右边,我们可以得到在处取得最小值。
联合约束
问题进一步复杂化,我们添加多个约束条件
当涉及到多个约束条件是,这些条件必须是不排斥的。看下面的例子,
这样的约束条件是无解的。
优化问题的解是什么?
下面优化问题的解
最优解就是满足所有约束条件的的下界(infimum)。
如何寻找带约束条件优化问题的解?
拉格朗日乘数法(Lagrange multipliers)
在数学优化中,拉格朗日乘子法是一种寻找受限于等式约束的函数的局部最大值和最小值的策略。它只使用于等式约束的优化问题。但是它也适用于求一些简单的不等式约束优化问题。
轮廓线(Contour lines)
如图,3D 图形的中函数的轮廓,
图中线上的每一个点返回同一个值,颜色越深,函数的值越小。再看下面两个例子,
梯度可以可视化为一个向量场,箭头指向函数值增大的方向。如下图
在一个轮廓图中,我们容易画出梯度向量, 他们垂直于轮廓线,指向函数增大的方向,如下图
回到拉格朗日乘数法
看下面的例子,
把目标方程和约束方程用轮廓图表示出来
如果我们把两张图在一张图上画出来,如下,蓝线表示约束方程。其中黑色箭头标识目标函数梯度,白色箭头表示约束方程的梯度。
接下来,我们关心的是在什么地方满足,等价于,换一个表达方式.在轮廓图中画出来,如下,我们说这条线上的点就是可行集合(feasible set).
那么拉格朗日发现了什么?他发现在约束条件下的最小值在两个函数梯度方向相同处取得。下图中画出了可行集和目标函数,其中白色箭头表示目标函数的梯度方向,黑色箭头表示约束函数的梯度方向。
如何将上面结论用数学表达?
拉格朗日说我们想要找最小值,我们需要找满足的点。
是拉格朗日算子,它表示即使目标函数的梯度和约束函数的梯度相同,他们的长度不一定相同。
如何寻找满足的点
由得到。
构造拉格朗日函数
求拉格朗日函数的梯度
我们只需要求就能找到两个梯度平行的点。这里说的是平行,梯度方向可以相反。
使用拉格朗日乘数法解一个例子
我们的问题:
step1:按照上面的构造形式构造拉格朗日函数并求梯度
step2:求梯度等于0的解
解为 ,,
下图验证了解的正确性,
想看拉格朗日乘数法的更多应用,可以看这篇文章。
想要学习更深入学习SVM,这里有一份电子书。
才疏学浅,还未能创造知识,先做知识的搬运工!
https://www.svm-tutorial.com/2016/09/duality-lagrange-multipliers/