约束最优化问题:原问题和对偶问题,以及拉格朗日因子的符号

更多专业的人工智能相关文章,微信搜索  : robot-learner , 或扫码

 

最优化问题(Optimization)是人工智能和机器学习的最底层的基石和明珠。系统性的讲最优化问题在一篇文章中实在无法办到。

 

喜欢最优化问题的读者不妨先关注一下这个公众号,因为后面我们会用一个系列来讨论最优化问题。

 

 

今天我们简单的讨论一下,约束最优化问题中常常预见的几个名词关系,比如原问题(primal problem),对偶问题(dual problem), KKT约束条件,和拉格朗日符号等。他们之间的关系是什么?

 

1.

 

什么是最优化问题? 比如我们要找到最佳的变量值x0,从而使得下列的方程达到最小值:

 

             

上面式子表的的意思就是一个最小化问题,即寻找最佳的变量,从而使得f(x)方程的值最小。

如果f(x)满足凸函数特性(convex function),上面问题是相对容易的。

 

2.

 

但是问题来了,有时候我们需要对变量x做一些约束,比如在一定的距离内找到短的路径等。最小化问题就成了约束最小化问题。用公式表达就是这个意思:

 

 

 

上式的意思是:我们仍然要找到x使得f(x)最小,但是x也必须满足条件 h(x)<=0。这个约束条件在实际情况中很普遍。但是却使得最优化问题不再具有凸函数特性,从而大大增加了寻找最值的难度。

 

3.

 

这个问题的救星就是原问题和对偶问题的关系。上面的式子称为原问题或者primal problem,我们可以把这个问题转化为一个标准的拉格朗日dual problem 或者对偶问题来解决:

 

 

 

 

上面式子中,g(λ)= L(x,λ) 以x作为变量的最小值  , 并且 L(λ) = f(x) + λh(x) 叫做拉格朗日式子。λ就是新引入的限制因子。这个形式的表达式在机器学习算法中很常见。如果要对算法中的参数做一些约束,很多时候就是加上这种形式的限制因子。

 

需要注意的是上面的对偶问题可以证明只是为原问题提供了一个下限:假设 f* 是f(x)的最小值,g*是g(λ)的最小值,那么存在这样的的关系 f* >= g*。 但在满足一定的条件下,如KKT条件,可以证明 原问题和对偶问题等价即 f* = g*。

 

为什么要解决对偶问题?因为有的时候对偶问题更好解决,并且在一定条件下,两者等价。即使条件不满足,我们仍然获得一个下限,在实际问题中通常可行。

 

我们可以注意到上面的对偶问题中,其实是先求拉格朗日式子最小值,再求最大值。如果我们把顺序颠倒一下,先求max 再求min, 则这个问题完全等价于原问题:

 

 

 

4.

 

我们注意最小化问题中的条件,一个是 h(x)<=0, 另一个是λ>=0,并且在拉格朗日式子中λ前面的符号是正的。如果你的限制条件 h(x)>=0, 那么λ前面的符号需要改为负的。

 

为什么一定要这样?因为对偶问题提供的是原问题的一个下限答案。 在最小化问题中,只有提供下限才有意义, 如果提供的是一个上限,那么直接用无穷大就好了。

 

 

为什么我们只讲最小化问题,而不是最大化问题?因为最大化问题只需前面添加一个负号,就可以转化为最小化问题了。

 

 

上面也说到了,对偶问题很多时候只是一个下限。但实际问题中没有多大关系。另外,在利用机器学习算法解决问题时候,我们只是需要利用约束条件来限制一下参数以求稀疏化的目的。所以λ都是我们事先给定的或者用validation的方法来挑选。所以上面的有约束的对偶问题就进一步简化为:

 

 

这个形式大家就更加熟悉了。

你可能感兴趣的:(机器学习算法和原理)