拉格朗日乘子法

【深度学习】原始问题和对偶问题(六)

∥☆過路亽.° 提交于 2020-03-11 03:13:39
今天要扫盲的知识点是原始问题和对偶问题,这个知识点主要牵涉拉格朗日乘数法。整理这个知识点,主要是为理解下一个知识点( 支持向量机 )做准备的! 文章目录 引言 原始问题 最优化问题 拉格朗日乘数法 举个栗子 拉格朗日求解原始问题 对偶问题 两者关系 Karush Kuhn-Tucher条件,KKT 举个栗子 原始-对偶问题转换求解 总结 引言 原问题,又称原线性规划问题,是指每一个线性规划的原始问题,每个原问题均可以转化为与其对称的对偶问题。原问题与对偶问题是相对的,二者为同类型的规划,构成对偶规划的一般规则如下: 若原问题是极大化问题,那么对偶问题就是极小化问题;若原问题是极小化问题,那么对偶问题就是极大化问题。 在原问题与对偶问题中,约束右端向量与目标函数中系数恰好对换。 对于极小化问题的“≥ ”型约束(极大化问题的“≤ ”型约束),相应的对偶变量有非负限制;对于极小化问的“≤ ”型约束(极大化问题的“≥ ”型约束),相应的对偶变量有非正限制;对于原问题的“=”型约束,相应的对偶变量无正负限制。 对于极小化问题的具有非负限制的变量(极大化问题的具有非正限制的变量),在其对偶中相应的约束为“≤ ”型不等式;对于极小化问题的具有非正限制的变量(极大化问题的具有非负限制的变量),在其对偶问题中相应的约束为“≥ ”型不等式; 对于原问题中无正负限制的变量,在其对偶问题中相应的约束为等式

拉格朗日乘子法 - KKT条件 - 对偶问题

我的未来我决定 提交于 2020-02-28 20:09:41
接下来准备写支持向量机,然而支持向量机和其他算法相比牵涉较多的数学知识,其中首当其冲的就是标题中的拉格朗日乘子法、KKT条件和对偶问题,所以本篇先作个铺垫。 大部分机器学习算法最后都可归结为最优化问题。对于无约束优化问题: \(\min\limits_\boldsymbol{x} f(\boldsymbol{x})\) (本篇为形式统一,只考虑极小化问题),一般可直接求导并用梯度下降或牛顿法迭代求得最优值。 对于含有等式约束的优化问题,即: \[ \begin{aligned} {\min_{\boldsymbol{x}}} & \;\;{f(\boldsymbol{x})} \\ {\text { s.t. }} & \;\;{h_{i}(\boldsymbol{x}) = 0}, \quad i=1,2, \ldots, m \end{aligned} \] 由于等式约束 \(h_i(\boldsymbol{x}) = 0\) 的存在,无法直接求导迭代求解。拉格朗日乘子法是解决此类问题的常用方法,其核心思想是将约束优化转化为无约束优化问题,即将有 \(d\) 个变量和 \(m\) 个等式约束条件的最优化问题转换为一个有 \((d + m)\) 个变量的函数求平稳点的问题。 拉格朗日乘子法 下面画图来直观理解拉格朗日乘子法,先看下左图: 黑色虚线为函数 \(f(x)\) 的等值线

拉格朗日对偶性

倖福魔咒の 提交于 2020-01-16 20:08:43
拉格朗日对偶性 在约束最优化的问题中,常常需要利用拉格朗日对偶性(Language duality)将原始问题转为对偶问题,通过解决对偶问题来得到原始问题的解。 拉格朗日乘数法 拉格朗日乘数法是用来求条件极值的,极值问题可以分为两类: 求函数在给定区间上的极值,对自变量没有其他的要求,这种极值称为无条件极值。 对自变量有一些附加的约束条件限制下的极值,称为条件极值 比如给定椭球 x 2 a 2 + y 2 b 2 + z 2 c 2 = 1 \frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1 a 2 x 2 ​ + b 2 y 2 ​ + c 2 z 2 ​ = 1 ,求这个椭球内接长方体的最大体积,这个问题实际上就是条件极值问题,即在条件: x 2 a 2 + y 2 b 2 + z 2 c 2 = 1 \frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1 a 2 x 2 ​ + b 2 y 2 ​ + c 2 z 2 ​ = 1 下,求 f ( x , y , z ) = 8 x y z f(x,y,z)=8xyz f ( x , y , z ) = 8 x y z 的最大值 这个问题实际上可以先根据条件消去z,然后代入转化为无条件极值问题来处理

学习SVM,这篇文章就够了!(附详细代码)

ε祈祈猫儿з 提交于 2019-12-21 15:14:07
支持向量机 (SVM),一个神秘而众知的名字,在其出来就受到了莫大的追捧,号称最优秀的分类算法之一,以其简单的理论构造了复杂的算法,又以其简单的用法实现了复杂的问题,不得不说确实完美。 本系列旨在以基础化的过程,实例化的形式一探SVM的究竟。曾经也只用过集成化的SVM软件包,效果确实好。因为众人皆说原理复杂就对其原理却没怎么研究,最近经过一段时间的研究感觉其原理还是可以理解,这里希望以一个从懵懂到略微熟知的角度记录一下学习的过程。其实网络上讲SVM算法的多不胜数,博客中也有许多大师级博主的文章,写的也很简单明了,可是在看过之后,总是感觉差点什么,当然对于那些基础好的可能一看就懂了,然而对于像我们这些基础薄弱的,一遍下 来也 只能马马虎虎,过一两天后又忘了公式怎么来的了。 比如说在研究SVM之前,你是否听说过拉格朗日乘子法?你是否知道什么是对偶问题?你是否了解它们是怎么解决问题的?这些不知道的话,更别说什么是KKT条件了。话说像拉格朗日乘子法,在大学里面学数学的话,不应该没学过,但是你学会了吗?你知道是干什么的吗?如果那个时候就会了,那你潜质相当高了。作为一个过来人,我将以简单实例化形式记录自己的学习过程,力图帮助新手级学习者少走弯路。 1、 关于拉格朗日乘子法和KKT条件 1)关于拉格朗日乘子法 首先来了解拉格朗日乘子法,为什么需要拉格朗日乘子法呢?记住,有需要拉格朗日乘子法的地方

拉格朗日乘子法和KTT条件

梦想的初衷 提交于 2019-11-30 16:13:54
    这篇博文中直观上讲解了拉格朗日乘子法和 KKT 条件,对偶问题等内容。     首先从无约束的优化问题讲起,一般就是要使一个表达式取到最小值: m i n f ( x ) m i n f ( x )     如果问题是 m a x f ( x ) m a x f ( x ) 也可以通过取反转化为求最小值 m i n − f ( x ) m i n − f ( x ) ,这个是一个习惯。对于这类问题在高中就学过怎么做。只要对它的每一个变量求导,然后让偏导为零,解方程组就行了。 极值点示意图     所以在极值点处一定满足 d f ( x ) d x = 0 d f ( x ) d x = 0 (只是必要条件,比如 f ( x ) = x 3 f ( x ) = x 3 在 x = 0 x = 0 处就不是极值点),然后对它进行求解,再代入验证是否真的是极值点就行了。对于有些问题可以直接通过这种方法求出解析解(如最小二乘法)。     但是也有很多问题解不出来或者很难解,所以就需要梯度下降法、牛顿法、坐标下降法之类的数值迭代算法了(感知机 、logistic 回归中用到)。     对于这些迭代算法就像下面这张图一样,我们希望找到其中的最小值。一个比较直观的想法是先找一个起点,然后不断向最低点靠近。就先把一个小球放到一个碗里一样。 迭代算法     一开始要找一个起始点

5.6算法-分类-svm-支持向量机

血红的双手。 提交于 2019-11-26 22:37:51
https://blog.csdn.net/u011630575/article/details/78916747 SVM SVM:Support Vector Machine 中文名:支持向量机 学习模型 有监督学习:需要事先对数据打上分类标签,这样机器就知道数据属于哪一类。 无监督学习:数据没有打上分类标签,有可能因为不具备先验知识,或打标签的成本很高,需要机器代替我们部分完成改工作,比如将数据进行聚类,方便后人工对每个类进行分析。 SVM 是有监督的学习模型:可以进行模式识别、分类以及回归分析。 SVM工作原理 示例: 桌面上有两种颜色混乱的小球,我们将这两种小球来区分开,我们猛拍桌子小球会腾起,在腾空的那一刹那,会出现一个水平切面,将两种颜色的球分开来。 原因: 二维平面无法找出一条直线来区分小球颜色,但是在三位空间。我们可以找到一个平面来区分小球颜色,该平面我们叫做超平面。 SVM计算过程: 就是帮我们找到一个超平面的过程,该超平面就是 SVM分类器。 分类间隔 我们在示例中,会找到一个决策面来将小球颜色分离,在保证决策面C不变,且分类不产生错误的情况下,我们可以移动决策面,来产生两个极限位置:决策面A和决策面B,分界线C就是最优决策面,极限位置到最优决策面的距离就是 分类间隔 。 我们可以转动最优决策面,会发现存在多个最优决策面,它们都能把数据集正确分开