A-08 拉格朗日对偶性
目录
更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/
拉格朗日对偶性
在约束最优化问题中,拉格朗日对偶性(Lagrange duality)可以将原始问题转换为对偶问题,然后通过求解对偶问题的解得到原始问题的解。
一、原始问题
1.1 约束最优化问题
假设\(f(x),c_i(x),h_j(x)\)是定义在\(R^n\)上的连续可微函数,则约束最优化问题的原始问题为
\[
\begin{align}
& \underbrace{min}_{x\in{R^n}}f(x) \\
& s.t. \, c_i(x)\leq0,\quad{i=1,2,\cdots,k} \\
& h_j(x)=0,\quad{j=1,2,\cdots,l}
\end{align}
\]
如果不考虑约束条件,约束问题就是
\[
\underbrace{min}_{x\in{R^n}}f(x)
\]
因为已经假设\(f(x),c_i(x),h_j(x)\)连续可微,直接对\(f(x)\)求导取0,即可求出最优解,但是这里有约束条件,因此得想办法去掉约束条件,而拉格朗日函数正是干这个的。
1.2 广义拉格朗日函数
为了解决上述原始问题,引入广义拉格朗日函数(generalized Lagrange function)
\[
L(x,\alpha,\beta)=f(x)+\sum_{i=1}^k\alpha_ic_i(x)+\sum_{j=1}^l\beta_jh_j(x)
\]
其中\(x=(x^{(1)},x^{(2)},\cdots,x^{(n)})^T\in{R^n}\),\(\alpha_i\geq0,\beta_j\)是拉格朗日乘子。
如果把\(L(x,\alpha,\beta)\)看作是关于\(\alpha_i,\beta_j\)的函数,求其最大值,即
\[
\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)
\]
由于\(\alpha_i,\beta_j\)作为拉格朗日乘子已经可知,因此可以把\(L(x,\alpha,\beta)\)看作是关于\(x\)的函数
\[
\theta_P(x)=\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)
\]
其中下标\(P\)表示原始问题。
1.3 约束条件的考虑
假设给定某个\(x\)。
- 如果\(x\)违反原始问题的约束条件,即存在某个\(i\)使得\(c_i(w)>0\)或存在某个\(j\)使得\(h_j(w)\neq0\),则有
\[
\theta_P{(x)}=\underbrace{max}_{\alpha,\beta:\alpha_i\leq0}[f(x)+\sum_{i=1}^k\alpha_ic_i(x)+\sum_{i=1}^l\beta_jh_j(x)] = +\infty
\]
因为如果某个\(i\)使得约束条件\(c_i(x)>0\),则可以令\(\alpha_i\rightarrow{+\infty}\);如果某个\(j\)使得\(h_j(x)\neq0\),则可以使得\(\beta_jh_j(x)\rightarrow{+\infty}\)。 - 如果\(x\)满足原始问题的约束条件,\(h_j(x)=0\)并且\(\alpha_ic_i(x)\leq0\),因此\(\theta_P{(x)}\)的最大值即为\(f(x)\),即\(\theta_P{(x)}=f(x)\)。
通过对约束条件的考虑即可得
\[
\theta_P{(x)} =
\begin{cases}
f(x), & \text{$x$满足约束条件} \\
+\infty, & \text{其他}
\end{cases}
\]
所以如果考虑极小化问题
\[
\underbrace{min}_x\theta_P{(x)}_{x} = \underbrace{min}_{x}\,\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta) = \underbrace{min}_{x}f(x)
\]
它与原始问题是等价的,其中\(\underbrace{min}_{x}\,\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)\)被称作广义拉格朗日函数的极小极大问题。
通过广义拉格朗日函数的极小极大问题,可以定义原始问题的最优值
\[
p^*=\underbrace{min}_x\theta_P(x)
\]
这一节主要通过使用拉格朗日函数把原始约束问题转化为无约束问题,即将约束问题无约束化。
二、对偶问题
定义一个关于\(\alpha,\beta\)的函数
\[
\theta_D(\alpha,\beta)=\underbrace{min}_xL(x,\alpha,\beta)
\]
其中等式右边是关于\(x\)的函数的最小化,即确定了\(x\)的值,最小值只与\(\alpha,\beta\)有关。
如果极大化\(\theta_D(\alpha,\beta)\),即
\[
\underbrace{max}_{\alpha,\beta}\theta_D(\alpha,\beta)=\underbrace{max}_{\alpha,\beta}\underbrace{min}_{x}L(x,\alpha,\beta)
\]
上述就是原始问题的对偶问题,其中\(\underbrace{max}_{\alpha,\beta}\underbrace{min}_{x}L(x,\alpha,\beta)\)也称为广义拉格朗日函数的极大极小问题。
该对偶问题的原始问题为
\[
\underbrace{min}_x\theta_P{(x)}_{x} = \underbrace{min}_{x}\,\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)
\]
原始问题是先固定\(L(x,\alpha,\beta)\)中的\(x\),优化出参数\(\alpha,\beta\),再优化\(x\);对偶问题是先固定\(\alpha,\beta\),优化出\(x\),然后再确定\(\alpha,\beta\)。
对偶问题的最优值为
\[
d^*=\underbrace{max}_{\alpha,\beta}\theta_D(\alpha,\beta)
\]
三、原始问题和对偶问题的关系
3.1 定理1
如果原始问题和对偶问题都有最优解,则
\[
d^* = \underbrace{max}_{\alpha,\beta}\underbrace{min}_xL(x,\alpha,\beta)\leq\underbrace{min}_x\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)=p^*
\]
因为对任意的\(\alpha,\beta,x\),都有
\[
\theta_D(\alpha,\beta)=\underbrace{min}_xL(x,\alpha,\beta)\leq{L(x,\alpha,\beta)}\leq\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)=\theta_P(x)
\]
即
\[
theta_D(\alpha,\beta)\leq\theta_P(x)
\]
由于原始问题和对偶问题都有最优值,所以
\[
\underbrace{max}_{\alpha,\beta}\theta_D(\alpha,\beta)\leq\underbrace{min}_x\theta_P(x)
\]
即
\[
d^*=\underbrace{max}_{\alpha,\beta}\underbrace{min}_xL(x,\alpha,\beta)\leq\underbrace{min}_x\underbrace{max}_{\alpha,\beta}L(x,\alpha,\beta)=p^*
\]
上述说明了原始问题的最优值不小于对偶问题的最优值,但是我们要通过对偶问题来求解原始问题,就必须得使原始问题的最优值与对偶问题的最优值相等。
3.2 推论1
通过定理1可以推出:假设\(x^*,\alpha^*,\beta^*\)分别是原始问题和对偶问题的可行解,如果\(d^*=p^*\),则\(x^*,\alpha^*,\beta^*\)分别是原始问题和对偶问题的最优解。
当原始问题和对偶问题的最优值相等\(d^*=p^*\),如果使用对偶问题比求解原始问题简单,则可以用对偶问题求解原始问题。
3.3 定理2
对于原始问题和对偶问题,假设函数\(f(x)\)和\(c_i(x)\)是凸函数,\(h_j(x)\)是仿射函数(注:仿射函数是一阶多项式构成的函数,\(f(x)=Ax+b\),\(A\)是矩阵,\(x,b\)是向量);并且假设不等式约束\(c_i(x)\)是严格可行的,即存在\(x\),对所有的\(i\)有\(c_i(x)<0\),则存在\(x^*,\alpha^*,\beta^*\),使\(x^*\)是原始问题的解,\(\alpha^*,\beta^*\)是对偶问题的解,并且会有
\[
p^*=d^*=L(x^*,\alpha^*,\beta^*)
\]
3.4 定理3(KTT条件)
对于原始问题和对偶问题,假设函数\(f(x)\)和\(c_i(x)\)是凸函数,\(h_j(x)\)是仿射函数;并且假设不等式约束\(c_i(x)\)是严格可行的,即存在\(x\),对所有的\(i\)有\(c_i(x)<0\),则\(x^*\)是原始问题的解,\(\alpha^*,\beta^*\)是对偶问题的解的充分必要条件是\(x^*,\alpha^*,\beta^*\)满足下面的Karush-Kuhn-Tucker(KKT)条件
\[
\begin{align}
& \nabla_xL(x^*,\alpha^*,\beta^*)=0 \\
& \nabla_\alpha{L(x^*,\alpha^*,\beta^*)}=0 \\
& \nabla_\beta{L(x^*,\alpha^*,\beta^*)}=0 \\
& \alpha_i^*c_i(x^*)=0,\quad{i=1,2,\cdots,k} \\
& c_i(x^*)\leq0,\quad{i=1,2,\cdots,k} \\
& \alpha_i^*\geq0,\quad{i=1,2,\cdots,k} \\
& h_j(x^*)=0,\quad{j=1,2,\cdots,l}
\end{align}
\]
其中\(\alpha_i^*c_i(x^*)=0,\quad{i=1,2,\cdots,k}\)是KKT的对偶互补条件,由该条件可知:如果\(\alpha_i^*>0\),则\(c_i(x^*)=0\)。
A-08 拉格朗日对偶性的更多相关文章
- 3. 支持向量机(SVM)拉格朗日对偶性(KKT)
1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量 ...
- 拉格朗日对偶性(Lagrange duality)
目录 拉格朗日对偶性(Lagrange duality) 1. 从原始问题到对偶问题 2. 弱对偶与强对偶 3. KKT条件 Reference: 拉格朗日对偶性(Lagrange duality) ...
- 简易解说拉格朗日对偶(Lagrange duality)(转载)
引言:尝试用最简单易懂的描述解释清楚机器学习中会用到的拉格朗日对偶性知识,非科班出身,如有数学专业博友,望多提意见! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不 ...
- 简易解说拉格朗日对偶(Lagrange duality)
引言:尝试用最简单易懂的描述解释清楚机器学习中会用到的拉格朗日对偶性知识,非科班出身,如有数学专业博友,望多提意见! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不 ...
- 支持向量机(SVM)基础
版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...
- SVM支撑向量机原理
转自:http://blog.csdn.net/v_july_v/article/details/7624837 目录(?)[-] 支持向量机通俗导论理解SVM的三层境界 前言 第一层了解SVM 1分 ...
- 06机器学习实战之SVM
对偶的概念 https://blog.csdn.net/qq_34531825/article/details/52872819?locationNum=7&fps=1 拉格朗日乘子法.KKT ...
- 支持向量机通俗导论(理解SVM的三层境界)(ZT)
支持向量机通俗导论(理解SVM的三层境界) 原文:http://blog.csdn.net/v_JULY_v/article/details/7624837 作者:July .致谢:pluskid.白 ...
- 支持向量机通俗导论(理解SVM的三层境界)【非原创】
支持向量机通俗导论(理解SVM的三层境界) 作者:July :致谢:pluskid.白石.JerryLead. 出处:结构之法算法之道blog. 前言 动笔写这个支持向量机(support vecto ...
随机推荐
- [在线+源码]vue全家桶+Typescript开发一款习惯养成APP
# vue-ts-daily 基于Vue.js的2.5.13版本和TypeScript编写的模仿原生应用的WebApp. [源码地址](https://github.com/xiaomuzhu/vue ...
- sql 删除完全表中完全重复的数据保留一条
1.删除完全重复数据 原始数据: 期望数据: delete result from (select ROW_NUMBER () over(partition by id order by id) r, ...
- Jenkins流水线(pipeline)实战之:从部署到体验
关于Jenkins流水线(pipeline) Jenkins 流水线 (pipeline) 是一套插件,让Jenkins可以实现持续交付管道的落地和实施. 关于blueocean Blue Ocean ...
- Hive的动态分区
关系型数据库(如Oracle)中,对分区表Insert数据时候,数据库自动会根据分区字段的值,将数据插入到相应的分区中,Hive中也提供了类似的机制,即动态分区(Dynamic Partition), ...
- Eclipse中maven项目报错:org.springframework.web.filter.CharacterEncodingFilter
写了一个demo,发现在tomcat中部署完项目,启动时报错. 1,问题描述 2,解决办法 1)程序在部署完成后报错,说明是程序是编译通过的,即编译编译路径Java Build Path没问题.2)此 ...
- Jmeter安装图文及入门教程
一.JMeter介绍 JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域.它可以用于测试静态和动态资源,例如 ...
- 16 (OC)* UIAnimation和CoreAnimation
目录 一 Core Animation 二 核心动画 2.1 基础动画 2.2 关键帧动画 2.3 动画组 2.4 转场动画 2.5 逐帧动画 三 UIView动画封装 3.1 基础动画 3.2 弹簧 ...
- C# 缓存的实现
缓存的实现 我们不是做第三方比如Redis等的缓存实现,而是根据实际情况,基于C#上做一些环境变量的保存,方便项目使用. 1.系统全局变量 很多时候,在系统运行开始,需要对系统的运行参数进行保存,以便 ...
- 提交任务到spark(以wordcount为例)
1.首先需要搭建好hadoop+spark环境,并保证服务正常.本文以wordcount为例. 2.创建源文件,即输入源.hello.txt文件,内容如下: tom jerry henry jim s ...
- java处理emoji(转)
最近对接ios.安卓客户端,需要处理emoji等表情符号,网上总结: 1.过滤掉emoji表情符 2.修改数据库的编码格式等,让其支持存储emoji 以下分别对两种方案进行描述: 第一种:过滤掉emo ...