为什么拉格朗日对偶函数一定是凹函数(逐点下确界)
2018-01-24 18:42
921 查看
转载请注明出处:http://mp.blog.csdn.net/mdeditor
相信很多学习支持向量机(SVM)的同学第一次看到对偶理论时会感觉比较难理解,我打算从这篇文章开始,通过解决对偶理论中的一些难点问题说明对偶理论。
本文讲解:为什么拉格朗日对偶函数一定是凹函数
然后给出拉格朗日函数:
(公式1)
最后给出对偶函数:
(公式2)
我们要证明的是下面的命题:
命题:拉格朗日对偶函数一定是凹函数,且其凹性与最优化函数和约束函数无关。
说明:上述两个公式中,
表示的是m维向量
的第i个分量,而后面的
表示的是
的一个具体值,是一个向量。
要证对偶函数一定是凹函数,根据凹函数的定义,就是要证
(公式3)
根据对偶函数的定义可知,对偶函数是拉格朗日函数在把
和
当做常量,
变化时的最小值,如果拉格朗日函数没有最小值(可以认为最小值为-∞),则对偶函数取值为-∞,所以,可以把对偶函数按照下面的方式表达:
(公式4)
即无穷多个x变化时,拉格朗日函数的最小值。
另外,由于把
和
分开来写,式子太长了,为了简便,记
,接下来证明(公式3):
(公式5)
(公式6)
(公式7)
(公式8)
至此,(公式3)得证,所以原命题得证。
证毕.
(公式5)到(公式6)是因为
中
的值已固定,所以
和
都应该看做常数,所以此时的
是
的仿射函数,而仿射函数是既凸且凹的,对(公式5)右边中的每一个拉格朗日函数都是用其凹性,就可以得到公式6.
而从(公式6)到(公式7)运用的是一个简单的数学原理:
设有两个实数集合a和b:
则对于所有的 i , j 有:
(公式7)到(公式8)由公式4可得。
最后通过图像来解释
上图中,每条直线表示的是一个
。假想有一条平行于上图中y轴方向的直线,这条直线沿着x轴方向平移,这条直线与上图中所有的
相交,这些交点的最小值(y轴方向的值,因为y轴方向对应于
的值,x轴方向对应于每一个xi)就是
,也就是(公式4)要表达的意思。
由于这条直线每到一处,就对应于一个xi,从而逐点逐点地获得
,所以就称对偶函数是一族关于
的仿射函数的逐点下确界
错漏之处热烈欢迎各位批评指正,如需详细讨论可发送邮件至我的邮箱:cyhdmj@aliyun.com
相信很多学习支持向量机(SVM)的同学第一次看到对偶理论时会感觉比较难理解,我打算从这篇文章开始,通过解决对偶理论中的一些难点问题说明对偶理论。
本文讲解:为什么拉格朗日对偶函数一定是凹函数
一、问题描述
首先以不严谨的方式给出标准形式的优化问题(具体请参考《凸优化》——Boyd,第五章),:然后给出拉格朗日函数:
(公式1)
最后给出对偶函数:
(公式2)
我们要证明的是下面的命题:
命题:拉格朗日对偶函数一定是凹函数,且其凹性与最优化函数和约束函数无关。
说明:上述两个公式中,
表示的是m维向量
的第i个分量,而后面的
表示的是
的一个具体值,是一个向量。
二、证明
证明:要证对偶函数一定是凹函数,根据凹函数的定义,就是要证
(公式3)
根据对偶函数的定义可知,对偶函数是拉格朗日函数在把
和
当做常量,
变化时的最小值,如果拉格朗日函数没有最小值(可以认为最小值为-∞),则对偶函数取值为-∞,所以,可以把对偶函数按照下面的方式表达:
(公式4)
即无穷多个x变化时,拉格朗日函数的最小值。
另外,由于把
和
分开来写,式子太长了,为了简便,记
,接下来证明(公式3):
(公式5)
(公式6)
(公式7)
(公式8)
至此,(公式3)得证,所以原命题得证。
证毕.
三、解释证明过程
接下来,解释一下这个证明:(公式5)到(公式6)是因为
中
的值已固定,所以
和
都应该看做常数,所以此时的
是
的仿射函数,而仿射函数是既凸且凹的,对(公式5)右边中的每一个拉格朗日函数都是用其凹性,就可以得到公式6.
而从(公式6)到(公式7)运用的是一个简单的数学原理:
设有两个实数集合a和b:
则对于所有的 i , j 有:
(公式7)到(公式8)由公式4可得。
最后通过图像来解释
上图中,每条直线表示的是一个
。假想有一条平行于上图中y轴方向的直线,这条直线沿着x轴方向平移,这条直线与上图中所有的
相交,这些交点的最小值(y轴方向的值,因为y轴方向对应于
的值,x轴方向对应于每一个xi)就是
,也就是(公式4)要表达的意思。
由于这条直线每到一处,就对应于一个xi,从而逐点逐点地获得
,所以就称对偶函数是一族关于
的仿射函数的逐点下确界
错漏之处热烈欢迎各位批评指正,如需详细讨论可发送邮件至我的邮箱:cyhdmj@aliyun.com
相关文章推荐
- 20140702 赋值构造函数的形参为什么一定用引用。string类的赋值运算函数的注意点
- [置顶] 为什么支持向量机要用拉格朗日对偶算法来解最大化间隔问题
- 为什么数学概念中,将凸起的函数称为凹函数?
- Andrew Ng - SVM【2】一步步迈向核函数——拉格朗日、原问题与对偶问题
- C++析构函数为什么要为虚函数
- 为什么print在python3中变成了函数?
- 为什么C++成员函数不能作为C-Style回调函数?
- 为什么部分函数不能有返回类型
- 初学ML笔记N0.3——凸优化、拉格朗日对偶
- STL中的stack的pop函数为什么不返回值?
- 在定义卷积时为什么要对其中一个函数进行翻转
- 为什么用scanf()函数时name前面有或者没有&都是正确的?
- C#为什么不能像C/C++一样的支持函数只读传参
- VCL里为什么要用类函数代替API,为什么要用CM_消息代替虚函数
- SVM(二)从拉格朗日对偶问题到SVM
- 在C++中用虚函数的作用是什么? 为什么要用到虚函数?
- C语言中用scanf函数输入字符时,为什么要在输入控制符%c前面加空格?
- C++为什么不提倡使用scanf和printf函数
- 为什么Go不支持函数和运算的重载
- 为什么内联函数,构造函数,静态成员函数不能为virtual函数