原文地址:http://blog.sina.com.cn/s/blog_62b0682a0101epol.html
在学习最大熵模型和SVM的过程中,我们看到,前者需要求解满足所有已知条件并且使得熵最大的模型,后者需要求解满足间隔一致性约束条件并且使得几何间隔最大的超平面,归结起来其求解问题都是带约束的极值问题,其解决方法一般采用拉格朗日对偶原理,对于概率性问题也可以用极大似然法来求解。下面简单介绍拉格朗日对偶原理和似然函数。
约束条件可以分成不等式约束条件和等式约束条件,只有等式约束条件的问题我们在高等数学课程中已经学习过了,其解决方法是直接将等式约束加入原问题构造出拉格朗日函数,然后求导即可。现在考虑更加一般性的问题:带不等式约束和等式约束的极值问题如何构造拉格朗日函数求解。
带不等式约束的极值问题定义如下:
这里面还需要说明一下凸函数的几条性质:
1.对于定义域上可微函数f,若f得导数单调不减,则f是凸函数;
2.如果凸函数存在极小值,则一定是全局极小值,也即凸函数的局部最小点就是全局最小点;
3.严格凸函数的全局最小点唯一;
4.如果满足约束条件的可行域是有界的,凸函数优化有解。
一般,我们定义的目标函数都是凸函数,再利用拉格朗日对偶性求解全局最优解。正是由于凸函数满足以上性质,便于我们求解问题,而不用考虑复杂情况。
引入一般化的拉格朗日公式:
下面的步骤将拉格朗日函数和最初的函数f等价起来:
定义函数:
这里的P代表primal,表示原始问题。假设给定某个w,如果w违反原始问题的约束条件,即或者
,那么我们总是可以调整
和
来使得
有最大值为正无穷。而只有g和h都满足约束时,
为f(w)。总结下来就是:
看到了没,这样就把拉格朗日函数和f联系在了一起。
令=
,现在我们的任务就是求解
,如果直接求解这个问题会很复杂,因此一般不会直接求解,而是引入对偶问题,利用对偶问题的解作为原始问题的解。
原始问题向对偶问题的转换过程如下:
D的意思是对偶(dual)。
将拉格朗日函数转换成两个参数的a和b的函数,并在此基础上求解最大值:
表示对偶问题的值:
原始问题的值和对偶问题的值满足公式:d*<=p*,如果等式成立,则它们的解是相同的。
1.假设函数f和g是凸函数,h是仿射函数,并且假定不等式约束g是严格可行的,也即存在w,满足所有的不等式约束,则原始问题和对偶问题有解,并且解相同。其解相同的充要条件是解满足KKT条件: