HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    kkt点求解(kkt点怎么求)

    发布时间:2023-04-07 17:14:45     稿源: 创意岭    阅读: 142        

    大家好!今天让创意岭的小编来大家介绍下关于kkt点求解的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    kkt点求解(kkt点怎么求)

    一、SVM算法原理

    一、决策面方程

    以二维空间为例,二维空间中任意一条直线方程可以写为

    我们将其向量化,可以得到

    设用向量w代表矩阵a1和a2,用向量x代表矩阵x1和x2,标量γ代表b,则方程可化表示为

    从方程可知,一个n维空间的超平面在二维空间上的表现,可以是一条直线,或者一个曲线(二维空间中只能看到这个n维超平面穿过而无法看到其模样), 超平面方程即是我们的决策面方程

    二、函数间隔和几何间隔

    在SVM监督学习中,我们规定标签数据为+1和-1两个值,这么做的目的, 可以计算出任意一个样本点在超平面方程上的表现结果的符号,与标签符号是否一致来判断分类的正确性 ,为此我们可以引入函数间隔的概念

    但是当我们成比例的缩放w和γ,函数间隔的值也将成比例的变化,可是超平面的位置并没有发生任何变化,所以函数间隔并不是我们想要的分类间隔,为此,我们需要引入几何间隔的概念

    还是以二维空间出发,任意一点到直线的距离可以写成

    我们将其拓展到n维空间,直线方程即是我们的超平面方程,则n维空间中任何一点到超平面的距离可以写成

    为此,我们引入几何间隔概念,其中||w||表示向量w的二范数

    从几何间隔可以看出,就算等比例缩放w和γ,由于除上了||w||使得几何间隔的值不会改变,它只随着超平面位置的变化而变化,因此, 我们要寻找的分类间隔是几何间隔

    三、不等式约束条件

    SVM算法的目的是找到一个将分类效果达到最合理化的超平面,这个超平面即是分类器 。而评估分类器的好坏的标准就是分类间隔的大小

    我们定义分类间隔的距离为d,好的分类器应该让所有样本点到决策面的几何间隔都大于等于d

    化简上式,不等式两边同时除以d可得

    由于||w||和d都是标量,可定义

    则上式可化简为

    在不等式两边同时乘以yi,即将两个式子化简为一个式子(这里体现了正是因为标签数据为+1和-1,才方便将约束条件变成一个约束方程)

    这个约束方程的意义 即是任何样本点到超平面(分类器)的几何间隔都大于等于分类间隔

    四、SVM最优化模型的数学描述

    评估分类器的优劣是分类间隔的大小,且对于任意样本点都满足约束方程

    由约束方程可知,当样本点落在支持向量边界上有如下关系

    则分类间隔d可以表示为支持向量点到超平面的几何间隔

    要让任何样本点都在d之外,即求分类间隔d的最大值,则目标函数可以写成

    为了方便在后续最优化处理中对目标函数的求导,我们将目标函数做等效变化

    由目标函数是二次的,而约束条件是线性的,则 SVM的数学模型即是:不等式约束条件下的二次型函数优化 ,而求解这一类优化问题,接下来我们需要构造 拉格朗乘子函数

    五、引入拉格朗函数

    目标函数是求解在约束条件g(x)下的二次型函数f(x)的最小值,直观上我们希望构造一个函数L(x),使得L(x)在f(x)的可行解区域内的求出的值和f(x)求出的值完全一样,而在f(x)的可行解区域外,L(x)的值又接近无穷大,这么做的目的,使得我们可以用一个函数L(x)来等效表示原问题的g(x)和f(x)

    拉格朗函数的目的,就是将约束条件融合到目标函数中,构造一个新函数来表示目标函数,将有约束的优化问题转化为无约束的优化问题

    下面,我们构造拉格朗函数来表示目标函数

    其中αi是拉格朗日乘子,每一个约束条件对应一个拉格朗日乘子,其中αi大于等于0

    则原优化问题可以转化为

    讨论如下条件(1)(2):

    (1) 当样本点不满足约束条件时,即说明在 可行解区域外

    此时将αi置为正无穷大,那么θ(w)显然也是正无穷大

    (2) 当样本点满足约束条件时,即说明在 可行解区域内

    此时θ(w)的最小值就是原目标函数,于是综上所述,引入拉格朗乘子函数后,可以得到新的目标函数

    我们用p*表示优化目标函数后的最优解,且与最初的目标函数等价

    观察新的目标函数,如果直接求偏导数求解,那么一上来将面对w和b两个未知参数,而αi又是不等式约束,求解过程将非常复杂。换一个角度思考,如果将max和min的位置对调,变成如下新的目标函数

    上式变化使用了 拉格朗日函数的对偶性,交换后的新问题即是原目标函数的对偶问题 ,我们用d*来表示对偶目标函数的最优解,可见d*的求导过程比p*相对容易,且d*<=p*,而当满足下列条件时,d*= p*

    因为目标函数本身已经是一个凸函数,而优化问题又是求解最小值,所以目标函数的最优化问题就是凸优化问题,则接下来就要重点讨论KKT条件

    六、KKT条件的描述

    一个最优化模型能够表示成下列标准形式

    其中f(x)是需要最小化的函数,h(x)是等式约束,g(x)是不等式约束,m和n分别是等式约束和不等式约束的数量

    KKT条件即是规定f(x)的 最优值 必须满足以下(1)(2)(3)条件, 只有满足KKT条件,目标函数的最优化问题依然可以用拉格朗日乘子法解决

    很明显,我们需要优化的目标函数属于带有不等式约束函数g(x),所以条件二显然满足,下面我们来分析条件一和条件三的理论

    七、目标函数的等高线与约束条件的最优值分析(条件一)

    对于KKT条件一的分析,我们假设目标函数是f(x1,x2)的二元函数,它的图像在三维空间里是一个曲面,准确的来说是一个凸曲面

    其中g(x1,x2)是约束方程,要求目标函数f(x1,x2)的最小值,即转化为 求g(x1,x2)=c这条曲线上的一点,使得f(x1,x2)取得最小值,换个比喻,就是在山上(目标函数曲面)寻找一条山路(约束条件曲线)的最低点

    我们画出目标函数的等高线,来分析目标函数最优值和约束条件的关系

    对于研究目标函数z=f(x1,x2),当z取不同的值,即将曲线z投影在(x1,x2)组成的空间中(这里指的是二维空间),也就是曲面的等高线,上图中d1和d2即是两条目标函数的等高线,可以看出,当约束函数g(x1,x2)与目标函数的等高线有共同的交点, 即证明这组值同时满足在目标函数的可行域中,也符合约束条件的约束关系

    如果等高线与g(x1,x2) 相交 ,则是一组目标函数的解,但是这个解一定不是最优解, 因为相交意味着肯定存在其它等高线在该条等高线的内部或者外部 ,可能会使得新的等高线与g(x1,x2)的交点更大或者更小,这就意味着只有当等高线与g(x1,x2) 相切 ,才可能得到最优解(切线可能多条)

    所以最优解必须满足: 目标函数的负梯度方向与约束函数的梯度方向一致

    而上式恒成立的条件就是: 拉格朗日乘子α >= 0 ,且这个式子就是目标函数对各个参数求偏导数的结果,即KKT的第一个条件:目标函数对各个参数的导数为0

    八、分类讨论约束条件和拉格朗日乘子的组合(条件三)

    对于KKT条件三,可以看出,因为所有的约束函数gi(x)<=0,所有的拉格朗日乘子αi>=0,要使得求和后结果为0,要么某个约束函数gi(x)=0,要么其对应的αi=0

    从一个案例出发来分析KKT条件三的逻辑,假设目标函数和约束函数是

    将不等式约束构造出拉格朗日函数,并分别对x1和x2求偏导数

    而KKT的条件三要求最优解满足 ∑α*g(x) = 0,在这个案例里α和g(x)只有一个,结合条件一,可以得到

    根据之前的分析,最优值满足条件三的话,要么α=0,要么g(x)=0

    (i):如果α=0,则x1=1,x2=-2,代入g(x1,x2) =10-1-10*(-2)=29>0,发现这组解违背了约束函数g(x)<0,则舍弃这组解

    (ii): 如果g(x1,x2)=0,则代入x1和x2的表达式到g(x)中,解出α=58/101>0,发现这组解不违背约束函数,则代入α解出x1=130/101,x2=88/101,则这组解有可能是最优解

    综上(i)(ii)讨论,目标函数的最优值符合KKT条件三,也说明了 满足强对偶条件的优化问题的最优值必须满足KKT条件

    九、求解对偶问题

    上面分析了目标函数满足凸优化和KKT条件,则问题转化为求解原问题的对偶问题(即p*=d*)

    根据对偶问题描述,先要求内侧w和b关于L(w,b,α)的最小化值,即求L对w和b的偏导数

    将w和b的偏导数带入拉格朗函数化简得

    整理一下最终化简结果为

    从上述结果可以看出,样本的x和y是已知的,此时的 L(w,b,α)函数只有一个变量,即αi

    我们归纳一下现在的目标函数为

    现在目标函数变成了如上形式,其中αi>=0,这里隐含着一个假设,即数据100%线性可分,但是现实生活中,数据往往是不会那么规则的线性化,为此我们需要引入松弛变量

    十、引入松弛变量

    由于现实世界中的数据都是带有噪音的,也就是数据可能出偏离其正常的位置很远,而出现这种极端现象后往往会影响超平面的选择,也许将无法构造出将数据彻底分开的超平面出来

    所以对于处理这种情况, SVM需要允许(妥协)出某些噪音很大的数据点能够偏离超平面,即允许其出现在超平面的错误的一侧 ,为此我们引入松弛变量C,这样我们的目标函数又变为

    接下来为了研究讨论αi的取值范围,我们加上一个负号将目标函数等价转化为

    十一、讨论拉格朗乘子的取值意义和其值域

    回顾一下最初的约束条件为

    设ui为该约束条件,可以归纳出αi关于约束函数的取值意义

    αi只有满足上述3种情况,才能求出最优解,所以 当αi与约束条件ui冲突的时候,需要更新这些αi ,这也就是满足目标函数的第一个约束限制,即0<=αi<=C

    而同时目标函数还受到第二个约束条件的限制,即

    所以不能只更新一个αi因子,需要同时再次更新第二个αj因子,也就是 α因子总是成对的更新(αi对总是和αj配对),一增一减,此消彼长,才能保证加权和为0的约束 ,同时这也就是下面提及SMO算法的思想和多元函数化简为二元函数,在从二元函数化简为一元函数的难点

    根据这个约束和α因子需要成对更新,假设我们选取的两个拉格朗乘子为α1和α2,则更新之前是old,更新之后是new,且更新前后需要满足和为0的约束

    两个因子同时更新显然非常困难,所以需要先求出第一个αj的解,再用αj的解去表示更新第二个αi的解 ,后文的SMO算法会阐述这一点。因此需要先确定αj的取值范围,假设L和H分别为它的下界和上界,结合目标函数的约束限制来综合讨论L和H的取值关系

    (i):当y1和y2异号时,可以得到

    移项可得a2 = a1 - A,此时α的取值范围如下图所示

    所以此时α的上下界H和L为

    (ii):当y1和y2同号时,可以得到

    移项可得a2 = -a1 + A,此时α的取值范围如下图所示

    所以此时α的上下界H和L为

    综上(i)(ii)的讨论,通过y1和y2的异号或者同号,可以推导出α更新后的上下界分别为

    这个公式显得非常的重要,它将α因子限制在有效的矩形范围内,在SMO算法中,当我们更新完α后,由于α可能会被更新得很大或很小,因此需要经过裁剪来保证α的在约束条件内

    12、SMO算法的思想

    回顾之前第九,第十,第十一步的分析,目标函数为

    目标函数只包含n个变量α的 多元函数 ,且带有两个约束条件,我们的 目的是求出目标函数的最小值,即找到一组α的组合,使得目标函数取得最小值

    由第十一步的分析,我们需要不断更新这n个α因子,通过迭代来逼近函数达到最小值,但是如果一次性更新n个参数,将会有n!种组合,那么时间复杂度将会非常高,为此我们首先想到 坐标上升(下降)法

    来通过一个例子来说明坐标上升法的思路

    可知案例中要求一个三元函数的最大值, 算法的思想是每次迭代时只更新一个维度,通过多次迭代直到收敛来优化函数的最值 ,求出三个变量的偏导数推出其关系

    通过迭代即就可以求出其最值

    SMO算法借鉴了坐标上升(下降)法的思想来优化α因子组合,但是由于目标函数的第二个约束条件有加权和为0的限制,导致每次迭代时候不能只更新一个因子αi,必须同时更新与之配对的另一个因子αj,此消彼长才能保证加权和为0(第十一步中已提及)

    所以SMO算法思想是将原始问题中,求解n个参数的二次规划问题,分解成了多个子二次规划问题来分别求解,每一个子问题只需要求解2个参数,即将多元函数推导为二元函数,再将二元函数推导为一元函数

    13、多元函数推导为二元函数

    目标函数是关于α的N元函数,通过SMO的算法思想,假设每次迭代更新,选取一对α1和α2的组合,其余的乘子不变, 首先需要将α1和α2从目标函数中分离出来 ,也就是将多元函数推导为二元函数

    从N元函数中分离出α1和α2因子

    由于上式推导结果过于复杂,我们定义2个表达式来表示上式常量部分,用来简化上式

    又由于单独存下的常数项对以后的求导没有贡献,所以我们提出单独的常数项定义为Constant

    带入vi和Constant表达式,则结果化简为

    至此,我们将 多元函数推导为含有α1和α2变量的二元函数 ,接下来将这个二元函数推导为一元函数

    14、二元函数推导为一元函数

    我们需要推导出α1和α2的关系,然后用α2来表示α1带入二元函数,就可以推导出关于α2的一元函数了

    由目标函数的第二个约束条件

    同理根据SMO算法思想,从约束条件中分离出α1和α2

    将等式两边同时乘以y1,可推导出α1和α2的关系

    同理,我们定义两个表达式r和s来表示上式的常量部分,用来简化上式关系

    带入r和s后,α1和α2的关系推导为

    下面将α1带入我们的二元函数中,可得

    至此, 我们将二元函数推导为只含有一个变量α2的一元函数 ,接下来终于可以对目标函数求导了

    15、求解一元函数的偏导数,推导出第一个拉格朗乘子的递推关系

    我们对一元函数求α2的偏导数为0

    带入s=y1*y2和y2*y2=1,整理上式可求出α2

    二、请问各位大侠如何做二次凸规划的求解

    二次规划(Quadratic programming),在运筹学当中,是一种特殊类型的最佳化问题。

    [编辑] 简介二次规划问题可以以下形式来描述:

    f(x) = (1 / 2)xTQx + cTx

    受到一个或更多如下型式的限制条件:

    Ex = d

    vT 是 v 的转置。

    如果Q是半正定矩阵,那么f(x)是一个凸函数。如果有至少一个向量x满足约束而且f(x)在可行域有下界,二次规划问题就有一个全局最小值x。 如果Q是正定矩阵,那么全局最小值就是唯一的。如果Q=0,二次规划问题就变成线性规划问题。

    根据优化理论,一个点x 成为全局最小值的必要条件是满足 Karush-Kuhn-Tucker(KKT)条件。当f(x)是凸函数时,KKT条件也是充分条件。

    当二次规划问题只有等式约束时,二次规划可以用线性方程求解。否则的话,常用的二次规划解法有:内点法(interior point)、active set和共轭梯度法等。凸集二次规划问题是凸优化问题的一个特例。

    [编辑] 对偶每个二次规划问题的对偶问题也是二次规划问题。我们以正定矩阵Q为例:

    L(x,λ) = (1 / 2)xTQx + λT(Ax ? b) + cTx

    对偶问题g(λ),可定义为

    我们可用 : 得到L的极小

    x * = ? Q ? 1(ATλ + c),

    对偶函数:

    g(λ) = ? (1 / 2)λTAQ ? 1ATλ ? cTQ ? 1ATλ ? bTλ

    对偶问题为:

    maximize : ? (1 / 2)λTAQ ? 1ATλ ? (ctQ ? 1AT + bT)λ

    subject to :

    计算复杂性当Q正定时,用椭圆法可在多项式时间内解二次规划问题。当Q负定时,二次规划问题是NP困难的(NP-Hard)。即使Q 存在一个负特征值时,二次规划问题就是NP困难的。

    三、支持向量机(SVM)基本原理

    看了很多关于SVM的博客,但是常常只能保存书签之后看,有时候有的博客就突然没了,这里就作为搬运工总结一下之后自己看吧。主要内容来自于:

    支持向量机通俗导论(理解SVM的三层境界)

    线性回归

    给定数据集 , 其中, ,线性回归试图学习到一个线性模型,尽可能地输出正确标记.

    如果我们要用线性回归算法来解决一个分类问题,(对于分类,y 取值为 0 或者 1),但如果你使用的是线性回归,那么假设函数的输出值可能远大于 1,或者远小于 0,就算所有训练样本的标签 y 都是 0 或 1但是如果算法得到的值远大于 1 或者远小于 0 的话,就会感觉很奇怪。所以我们在接下来的要研究的算法就叫做逻辑回归算法,这个算法的性质是:它的输出值永远在 0 到 1 之间。

    所以逻辑回归就是一个分类算法,这个算法的输出值永远在 0 到 1 之间.

    我们先看二分类的LR,具体做法是:利用sigmoid 函数,将每一个点的回归值映射到0,1之间.sigmoid函数特性如下:

    如图所示,令 , 当 z > 0 , z 越大, sigmoid 返回值越接近1(但永远不会超过1). 反之,当z < 0时,z 越小, sigmoid 返回值越接近0(但永远不会小于0).

    支持向量机 ,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为 特征空间 上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

    线性分类器

    给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),这个超平面的方程可以表示为( wT中的T代表转置):

    logistic回归目的是从特征学习出一个0/1分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic函数(或称作sigmoid函数)将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率。

    假设函数:

    其中x是n维特征向量,函数g就是logistic函数。

    图像为:

    在超平面w x+b=0确定的情况下,|w x+b|能够表示点x到距离超平面的远近,而通过观察w x+b的符号与类标记y的符号是否一致可判断分类是否正确,所以,可以用(y (w*x+b))的正负性来判定或表示分类的正确性。于此,我们便引出了函数间隔(functional margin)的概念。

    定义函数间隔 (用表示)为

    而超平面(w,b)关于T中所有样本点(xi,yi)的函数间隔最小值(其中,x是特征,y是结果标签,i表示第i个样本),便为超平面(w, b)关于训练数据集T的函数间隔:

    但这样定义的函数间隔有问题,即如果成比例的改变w和b(如将它们改成2w和2b),则函数间隔的值f(x)却变成了原来的2倍(虽然此时超平面没有改变),所以只有函数间隔还远远不够。

    事实上,我们可以对法向量w加些约束条件,从而引出真正定义点到超平面的距离--几何间隔(geometrical margin)的概念。

    假定对于一个点 x ,令其垂直投影到超平面上的对应点为 x0 ,w 是垂直于超平面的一个向量, 为样本x到超平面的距离,如下图所示:

    根据平面几何知识,有

    其中||w||为w的二阶范数(范数是一个类似于模的表示长度的概念), 是单位向量(一个向量除以它的模称之为单位向量)。

    又由于x0 是超平面上的点,满足 f(x0)=0,代入超平面的方程 ,可得 ,即

    随即让此式 的两边同时乘以 ,再根据 和 ,即可算出 :

    为了得到 的绝对值,令 乘上对应的类别 y,即可得出几何间隔(用 表示)的定义:

    从上述函数间隔和几何间隔的定义可以看出:几何间隔就是函数间隔除以||w||,而且函数间隔y (wx+b) = y f(x)实际上就是|f(x)|,只是人为定义的一个间隔度量,而几何间隔|f(x)|/||w||才是直观上的点到超平面的距离。

    对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值。这个间隔就是下图中的Gap的一半。

    通过由前面的分析可知:函数间隔不适合用来最大化间隔值,因为在超平面固定以后,可以等比例地缩放w的长度和b的值,这样可以使得 的值任意大,亦即函数间隔 可以在超平面保持不变的情况下被取得任意大。但几何间隔因为除上了 ,使得在缩放w和b的时候几何间隔的值 是不会改变的,它只随着超平面的变动而变动,因此,这是更加合适的一个间隔。换言之,这里要找的最大间隔分类超平面中的“间隔”指的是几何间隔。

    于是最大间隔分类器(maximum margin classifier)的目标函数可以定义为

    同时需满足一些条件,根据间隔的定义,有

    回顾下几何间隔的定义 ,可知:如果令函数间隔 等于1(之所以令等于1,是为了方便推导和优化,且这样做对目标函数的优化没有影响),则有 = 1 / ||w||且 ,从而上述目标函数转化成了:

    相当于在相应的约束条件 下,最大化这个1/||w||值,而1/||w||便是几何间隔。

    据了解,

    由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (dual variable) 的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。

    那什么是拉格朗日对偶性呢?简单来讲,通过给每一个约束条件加上一个拉格朗日乘子 ,(Lagrange multiplier),定义拉格朗日函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而只用一个函数表达式便能清楚的表达出我们的问题)

    然后令:

    容易验证,当某个约束条件不满足时,例如 ,那么显然有 (只要令 即可)。而当所有约束条件都满足时,则最优值为 ,亦即最初要最小化的量。

    因此,在要求约束条件得到满足的情况下最小化 ,实际上等价于直接最小化 (当然,这里也有约束条件,就是 ≥0,i=1,…,n) ,因为如果约束条件没有得到满足, 会等于无穷大,自然不会是我们所要求的最小值。

    具体写出来,目标函数变成了:

    这里用 表示这个问题的最优值,且和最初的问题是等价的。如果直接求解,那么一上来便得面对w和b两个参数,而 又是不等式约束,这个求解过程不好做。不妨把最小和最大的位置交换一下,变成:

    交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用 来表示。而且有 ≤ ,在满足某些条件的情况下,这两者相等,这个时候就可以通过求解对偶问题来间接地求解原始问题。

    换言之,之所以从minmax 的原始问题,转化为maxmin 的对偶问题,一者因为 是 的近似解,二者,转化为对偶问题后,更容易求解。

    下面可以先求L 对w、b的极小,再求L对 的极大。

    KKT条件

    ≤ 在满足某些条件的情况下,两者等价,这所谓的“满足某些条件”就是要满足KKT条件。

    要让两者等价需满足strong duality (强对偶),而后有学者在强对偶下提出了KKT条件,且KKT条件的成立要满足constraint qualifications,而constraint qualifications之一就是Slater条件。所谓Slater 条件,即指:凸优化问题,如果存在一个点x,使得所有等式约束都成立,并且所有不等式约束都严格成立(即取严格不等号,而非等号),则满足Slater 条件。对于此处,Slater 条件成立,所以 ≤ 可以取等号。

    一般地,一个最优化数学模型能够表示成下列标准形式:

    其中,f(x)是需要最小化的函数,h(x)是等式约束,g(x)是不等式约束,p和q分别为等式约束和不等式约束的数量。

    KKT条件的意义:它是一个非线性规划(Nonlinear Programming)问题能有最优化解法的必要和充分条件。

    而KKT条件就是指上面最优化数学模型的标准形式中的最小点 x* 必须满足下面的条件:

    我们这里的问题是满足 KKT 条件的(首先已经满足Slater条件,再者f和gi也都是可微的,即L对w和b都可导),因此现在我们便转化为求解第二个问题。

    也就是说,原始问题通过满足KKT条件,已经转化成了对偶问题。而求解这个对偶学习问题,分为3个步骤:首先要让L(w,b,a) 关于 w 和 b 最小化,然后求对 的极大,最后利用SMO算法求解对偶问题中的拉格朗日乘子。

    对偶问题求解的3个步骤

    将以上结果代入之前的L:

    得到:

    具体推导过程是比较复杂的,如下所示:

    最后,得到:

    “倒数第4步”推导到“倒数第3步”使用了线性代数的转置运算,由于ai和yi都是实数,因此转置后与自身一样。“倒数第3步”推导到“倒数第2步”使用了(a+b+c+…)(a+b+c+…)=aa+ab+ac+ba+bb+bc+…的乘法运算法则。最后一步是上一步的顺序调整。

    从上面的最后一个式子,我们可以看出,此时的拉格朗日函数只包含了一个变量,那就是 (求出了 便能求出w,和b,由此可见,则核心问题:分类函数 也就可以轻而易举的求出来了)。

    上述式子要解决的是在参数上 求最大值W的问题,至于 和 都是已知数。要了解这个SMO算法是如何推导的,请跳到下文第3.5节、SMO算法。

    总结

    让我们再来看看上述推导过程中得到的一些有趣的形式。首先就是关于我们的 hyper plane ,对于一个数据点 x 进行分类,实际上是通过把 x 带入到 算出结果然后根据其正负号来进行类别划分的。而前面的推导中我们得到:

    因此分类函数为:

    这里的形式的有趣之处在于,对于新点 x的预测,只需要计算它与训练数据点的内积即可(表示向量内积),这一点至关重要,是之后使用 Kernel 进行非线性推广的基本前提。此外,所谓 Supporting Vector 也在这里显示出来——事实上,所有非Supporting Vector 所对应的系数 都是等于零的,因此对于新点的内积计算实际上只要针对少量的“支持向量”而不是所有的训练数据即可。

    为什么非支持向量对应的 等于零呢?直观上来理解的话,就是这些“后方”的点——正如我们之前分析过的一样,对超平面是没有影响的,由于分类完全有超平面决定,所以这些无关的点并不会参与分类问题的计算,因而也就不会产生任何影响了。

    回忆一下我们通过 Lagrange multiplier得到的目标函数:

    注意到如果 xi 是支持向量的话,上式中红颜色的部分是等于 0 的(因为支持向量的 functional margin 等于 1 ),而对于非支持向量来说,functional margin 会大于 1 ,因此红颜色部分是大于零的,而 又是非负的,为了满足最大化, 必须等于 0 。这也就是这些非Supporting Vector 的点的局限性。

    至此,我们便得到了一个maximum margin hyper plane classifier,这就是所谓的支持向量机(Support Vector Machine)。当然,到目前为止,我们的 SVM 还比较弱,只能处理线性的情况,不过,在得到了对偶dual 形式之后,通过 Kernel 推广到非线性的情况就变成了一件非常容易的事情了(通过求解对偶问题得到最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题”)。

    事实上,大部分时候数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在。在上文中,我们已经了解到了SVM处理线性可分的情况,那对于非线性的数据SVM咋处理呢?对于非线性的情况,SVM 的处理方法是选择一个核函数 κ(⋅,⋅) ,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。

    具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。如图所示,一堆数据在二维空间无法划分,从而映射到三维空间里划分:

    而在我们遇到核函数之前,如果用原始的方法,那么在用线性学习器学习一个非线性关系,需要选择一个非线性特征集,并且将数据写成新的表达形式,这等价于应用一个固定的非线性映射,将数据映射到特征空间,在特征空间中使用线性学习器,因此,考虑的假设集是这种类型的函数:

    这里ϕ:X->F是从输入空间到某个特征空间的映射,这意味着建立非线性学习器分为两步:

    首先使用一个非线性映射将数据变换到一个特征空间F,

    然后在特征空间使用线性学习器分类。

    而由于对偶形式就是线性学习器的一个重要性质,这意味着假设可以表达为训练点的线性组合,因此决策规则可以用测试点和训练点的内积来表示:

    如果有一种方式可以在特征空间中直接计算内积〈φ(xi · φ(x)〉,就像在原始输入点的函数中一样,就有可能将两个步骤融合到一起建立一个非线性的学习器,这样直接计算法的方法称为核函数方法:

    核是一个函数K,对所有x,z,满足 ,这里φ是从X到内积特征空间F的映射。

    来看个核函数的例子。如下图所示的两类数据,分别分布为两个圆圈的形状,这样的数据本身就是线性不可分的,此时咱们该如何把这两类数据分开呢(下文将会有一个相应的三维空间图)?

    事实上,上图所述的这个数据集,是用两个半径不同的圆圈加上了少量的噪音生成得到的,所以,一个理想的分界应该是一个“圆圈”而不是一条线(超平面)。如果用 和 来表示这个二维平面的两个坐标的话,我们知道一条二次曲线(圆圈是二次曲线的一种特殊情况)的方程可以写作这样的形式:

    注意上面的形式,如果我们构造另外一个五维的空间,其中五个坐标的值分别为 ,那么显然,上面的方程在新的坐标系下可以写作:

    关于新的坐标 ,这正是一个 hyper plane 的方程!也就是说,如果我们做一个映射 ,将 按照上面的规则映射为 ,那么在新的空间中原来的数据将变成线性可分的,从而使用之前我们推导的线性分类算法就可以进行处理了。这正是 Kernel 方法处理非线性问题的基本思想。

    再进一步描述 Kernel 的细节之前,不妨再来看看上述例子在映射过后的直观形态。当然,你我可能无法把 5 维空间画出来,不过由于我这里生成数据的时候用了特殊的情形,所以这里的超平面实际的方程是这个样子的(圆心在 轴上的一个正圆)

    因此我只需要把它映射到 ,这样一个三维空间中即可,下图即是映射之后的结果,将坐标轴经过适当的旋转,就可以很明显地看出,数据是可以通过一个平面来分开的

    核函数相当于把原来的分类函数:

    映射成:

    而其中的 可以通过求解如下 dual 问题而得到的:

    这样一来问题就解决了吗?似乎是的:拿到非线性数据,就找一个映射

    四、支持向量机(SVM)

    参考Jerrylead 和 july-支持向量机通俗导论

    再回忆一下逻辑回归:Logistic回归目的是从特征学习出一个0/1分类模型,而 这个模型是将特征的线性组合作为自变量 ,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic函数(或称作sigmoid函数) 将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率

    中间那条线是θ T x=0,logistic回归强调 所有点 尽可能地远离中间那条线。学习出的结果也就中间那条线。

    但是:

    考虑上面3个点A、B和C。从图中我们可以确定A是×类别的, 然而C我们是不太确定的 ,B还算能够确定。这样我们可以得出结论, 我们更应该关心靠近中间分割线的点,让他们尽可能地远离中间线,而不是在所有点上达到最优(引出了下面的函数间隔与几何间隔)

    我想这就是支持向量机的思路和logistic回归的不同点:

    支持向量机考虑局部(不关心已经确定远离的点),

    逻辑回归一个考虑全局(已经远离的点可能通过调整中间线使其能够更加远离,但是也可能使一部分点靠近中间线来换取另外一部分点更加远离中间线。)

    上面已经知道,θ T x=0是分类的线,在svm中,只考虑局部,只考虑θ T x的正负问题,而不用关心g(z)。因此,在这里,用w T x+b代替θ T x,并 对g(z)做一个简化 ,将其简单映射到类别标签y=1和y=-1上。

    这里的y取值为1和-1(在svm中,只考虑局部,只考虑θ T x的正负问题),是为了方便定义:在分类正确的情况下,函数间隔(确信度 )的大小

    比如,在分类正确的情况下,y等于1,wx+b应该为正数越大,则情况越好,是正例的确定度就越大。就如上图的A点。y等于-1,wx+b应该为负数越大,则情况越好是负例的确信度就越大。

    所以, 函数间隔越大,说明分类正确的置信度越大。函数间隔越小 ,比如上图c点,说明越不能确定c点属于哪一类。

    可以为 别的值,只是为了方便。这一点在参考的第二个博客上也已经说明了。

    由上面解释,已知可以用y(wT x + b) 的正负性来判定(或表示)分类的正确性。

    定义函数间隔如下:

    也就是,这个样本点x与超平面之间的间隔(但是现在有些不准确,所以有下面的几何间隔)。

    此时,若根据SVM的思想,最大化这个间隔,就能提高分类正确的确信度了吗?

    答案是否定的,因为,如果成比例的改变w 和b(如将它们改成2w 和2b),则函数间隔的值f(x) 却变成了原来的2 倍( 虽然函数值增大了,达到了目标,但是此时超平面没有改变 ),所以只有函数间隔还远远不够。

    我们真正关心的,其实是“几何上”的点到平面的距离,于是可以用几何知识推理出来的几何间隔。 而不是一开始人们想当然定义的函数间隔。

    事实上,我们可以对法向量w 加些约束条件( 这就是调优问题的思考了 ),从而引出真正定义点到超平面的距离——几何间隔(geometrical margin)的概念。

    又因为x 0 是超平面w T x + b=0上的点,利用向量之间的运算

    再令上式乘上对应的类别y,即可得出几何间隔

    从上述函数间隔和几何间隔的定义可以看出:几何间隔就是函数间隔除以∥w∥,而 函数间隔实际上就是,只是人为定义的一个间隔度量,而几何间隔才是直观上的点到超平面的距离。

    接下来就是我们的目标:寻找一个超平面, 使得离超平面比较近的点能有更大的间距。 也就是我们不考虑所有的点都必须远离超平面,我们关心求得的超平面能够让所有点中离它最近的点具有最大间距。也就是找到最大的几何间隔。

    由上一小节可以知道,我们这里要找的最大间隔分类超平面中的“间隔”指的是几何间隔。

    上面两个式子的意思是( 注意,函数间距上面是折线,几何间距上面是波浪线 ):

    最大化几何间隔

    约束条件是,每个样例的函数间隔都要大于全局的那一个函数间隔(也就是所有训练集里的最小的那个)

    用函数间隔表示几何间隔

    于是得到了这个式子:

    然而这个时候目标函数不是凸函数,约束条件也不是线性的,没法直接代入优化软件里计算。我们还要改写。前面说到 同时扩大w和b对结果没有影响 ,因此,我们将全局的函数间隔值定义为1。于是,上述的函数转变成了

    由于求1/||w||的最大值,相当于求||w||²的最小值,因此结果为:

    因为现在的 目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题 。这个问题可以用现成的QP (Quadratic Programming) 5优化包进行求解。一言以蔽之:在一定的约束条件下,目标最优,损失最小。

    根据前面几个文章的话,SVM作为判别模型,它的的模型,就是 w T x i + b 。参数就是w和b。学习完参数以后,新来的样例作为x i ,得到结果大于1,说明在超平面上面,所以是正例。反之亦然。

    根据SVM的思想,SVM的初步目标函数,就是所有样例的几何间隔尽可能的大

    至此,得到了SVM的目标函数,算是初步解决了SVM的这个问题,用优化包求解得到wb,即可得到具有最大几何间距的超平面,提高分类每个点的确信度,分类目标完成。

    接下来介绍的是手工求解w和b的方法了,一种更优的求解方法。

    从上可以看出 ,就同时扩大w和b就相当于等式两边同时除以函数间隔 γ,而新的w和b仍然是旧的wb的函数,所以最大化仍然可以进行。

    效果等价于,令函数间隔γ=1,综上所述,零γ=1是合理的,而且也方便了原优化问题的计算

    由拉格朗日对偶(线性可分条件下SVM的对偶算法)引入核函数(非线性可分条件下SVM的算法)

    上一篇说到,得到了 如下的线性可分的SVM的目标函数 ,可以利用优化包进行求解。

    此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量(dual variable) 的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法。

    引入对偶的优点:

    因为 引入拉格朗日算子可以求出极值。 (参考最优化方法的解释)

    这种极值问题怎么求

    首先,同样定义拉格朗日公式,希望可以利用拉格朗日算子法求得最优解,得到:

    但是,出现问题了,此时加入的约束条件g已经不再等于0了,所以,此时可以调整算子alpha变成很大很大的 值,使结果负无穷, 这显然是不合理的。

    所以,我们需要 排除在满足条件下,也会无解的情况。

    因此,我们定义下面的函数

    要看这个函数有什么优点,就要看看这个函数相比于L(ω,α,b)有什么变化: 加了max,加了α I 大于等于零。

    所以,当g和h不满足约束时,总可以调整α i 和β i 来使thetap具最大值为正无穷。

    只有当g和h满足约束时,此时g<0,我们可以调整α i 和β i (使α i 等于0,β i 任意),得到最大值,即θ p =f(w)。

    于是函数等价于这样

    于是原来的极值问题min f(w) 就等价于求min θ p 了,

    即:

    也就是说,最小化 θ p ,就是为了得到最小的 f(w),而能有f(w)就说明了满足约束条件。所以这个等价于原来的极值问题。

    至此, 相比于拉格朗日公式L(ω,α,b),现在即加入了拉格朗日算子,又排除了纯粹的拉格朗日公式中出现无穷的情况。

    但是,又出现了新的问题,也就是,如果直接求解,首先面对的就是两个参数(最里面的是max,这个max问题有两个参数),而且alpha也是不等式约束,再在w上求最小值,这个过程并不容易做。那么应该怎么办呢?

    在最优化课程里,当遇到不好解的优化问题时,可以转化为原问题的对偶问题试试。

    此处,d代表对偶。D--dual

    我们定义函数

    θ D 将问题转化为先求L(ω,α,b)关于 ω 的最小值(此时α和β是固定值),之后再求θ D 的最大值。 上来面对的是一个参数,相对简单些。

    相对于原问题,更换了min和max的顺序,得到了它的对偶问题。

    --------------------------------------------------------------------------------------------------------------

    一般的更换顺序的结果是MaxMin(X) <= MinMax(X)。也就是,此时有

    对偶问题已经表示出来了,这个对偶问题也相对原问题好求,那么,这两个问题等价吗?或者说,对偶问题的解是不是原问题的解呢?

    需要用KKT条件来判断了。

    对于拉格朗日算子的深入理解可以看看《最优化方法》,讲义的最后一页。

    含有不等式约束的问题,常常 用KKT条件求得候选最优解

    对于一般化的拉格朗日公式:

    最优值 w 必须满足以下三个条件:

    ----------1、L对 w 求导为零

    ----------2、h(w)=0

    ----------3、α i g i =0 ,i = 1,...,k

    注意此时

    第三个条件表明了KKT的思想:极值会在可行域边界取得。 ----解释:

    -----对于一个特定的自变量w1,当自变量w1在 第 i 个 可行域边界(g i (w1)=0)时,说明此时这个约束是起到了作用的。 这个约束是w1被g i 约束了。此时只能到g i 的平面上(即边界),再多就出界了。。。 而对于最优解来说,就是f(w)达到最优,所以L中,除了f(w)部分,其余应该都等于0,所以此时α>0(或许等于零也可以?疑问)

    ----而此时,w1在其他的约束条件g 非i 下,有g 非i (w1)<0),说明W1可以随意些,说明此时这个约束并没有起到作用,但是作为最优解,为了 除了f(w)部分,其余应该都等于0 ,所以其系数α应该等于零。

    ----------------------------------------------------------------------------------------

    注意:这个是传统最优化问题的一般式,这个问题有k个不等式约束方程,所有的点都要满足这k个不等式约束。 。假设有一百个样本点,只有有三个极值N1,N2,N3,那么说明其余97个点带入这k个方程中去都会小于零。 另外对于这三个极值点,可能会有g i (N1) = 0,除了第i个g以外,g(N1)都小于0 。然后对于极值N2,g j (N2)=0,除了第j个约束以外,其余的g(N2)都小于0。

    而本节一开始讨论的问题,只有一个约束方程(因为参数只有w和b)即:y(w T x+b)>=1,所有的点(一共m个)都要满足这个约束方程。 而关于为什么非支持向量的系数alpha会等于零呢?也就是相当于前面的,k=1(有k个约束条件)的情况下,m个样本点中,非支持向量的约束g<0,为了最优解,除了f(w)应该都等于零,所以alpha应该等于零。

    另外可以参考这段话:

    即,若d* = p* <==> x * 满足KKT条件

    由上面那句话可以知道,

    折腾这么长时间,也就是为了说明,已经知道原问题

    是凸优化问题,所以,只要对偶问题的自变量w满足了KKT条件,那么它就是对偶问题的最优解w * ,同时也是原问题的最优解了。

    所以,由上可知,只要解出了2.1.3中的问题的参数w和b,也就是原问题的解了。

    重新回到SVM的优化问题(其中每个约束式实际就是一个训练样本):

    我们将约束条件改写为拉格朗日的形式:

    由KKT条件可知,只有当函数间隔是1(g=0)的时候,α i >0。此时,这个样例 w i 在约束平面上受到约束 。对于其它的不在线上的样例点(g<0),极值不会在其范围内去的,所以这些样例点前面的系数α i =0.

    实线是最大间隔超平面,假设×号的是正例,圆圈的是负例。在虚线上的点就是函数间隔是1的点,他们前面的系数α i >0, 这三个点被称作 支持向量。

    由上面问题,构造拉格朗日函数如下(没有等式约束,所以没有β):

    ————————————————————————————————

    下面我们按照对偶问题的求解步骤来一步步进行,由2.1.3可知,对偶问题的形式为:

    首先求解L的最小值(最里面的先求),此时αi是固定的,L的最小值只与w和b有关。对w和b分别求偏导数。

    得到

    将上式带回到拉格朗日函数中得到,此时得到的是该函数的最小值(目标函数是凸函数), 即里面的min L已经求出,接下来就是求max了

    代入后,化简过程如下:

    最后得到

    由于最后一项是0,因此简化为

    这里,上式中左右边的向量内积,用方括号表示。

    到这一步,拉格朗日函数只包含了一个变量α i 。接着进行下一步 ,最大化的过程,求得α i 。

    假设求得了α i 就能根据求导得到的结果

    求得w,然后就能得到b。

    b 就是 距离超平面最近的正的函数间隔要等于离超平面最近的负的函数间隔。 (其实,由前面的那个x和圈的图,可以认为b就是截距,这个截距b等于上下两条虚线的截距的平均值。)

    注意,这里的w,b,alpha都是 向量,都是m维的向量

    至于这里的α怎么求得,即上面的最大化问题怎么求解,将留给下一篇中的SMO算法来阐明。

    也就是说,手动解的话,还是需要利用SMO算法,求得α才行。

    ————————————————————————————————

    这里考虑另外一个问题,由于前面求解中得到

    用α i 代替w带入判别模型w T x+b,得到:

    也就是说, 利用判别模型对新来样本进行判别时 ,以前新来的要分类的样本首先根据w和b做一次线性运算,然后看求的结果是大于1还是小于1来判断正例还是负例。大于1,说明在超平面的上面,说明是正例。同理,小于1说明在超平面的下面,说明是负例。

    约束条件是wx+b-1小于等于零,所以判断就是wx+b与1进行大小比较

    现在有了alpha,不需要求出w (那b呢,b怎么求呢,前面已经解释,b是由离超平面最近的间隔和负的函数间隔相等。。。得到的。所以,将新来的样本与训练数据中 支持向量 做内积以后,再确定最大的正数函数间隔以及最小的负数函数间隔,即可。)

    就冲上面这段话,支持向量的系数alpha,也不能等于0。

    另外,那有人会说,与前面所有的样本都做运算是不是太耗时了?其实不然,我们从KKT条件中得到,只有支持向量的α i >0 (不等于零)其他情况α i 是等于零的。 比如,像前面那个x和圈的图,新来的样本只需要和三个支持向量做运算即可

    由此可以看到,求出α i 以后,只需要利用支持向量,就可以来判断新来的样例是正例还是负例了。也许这也是是为什么叫支持向量机吧。

    上面这个公式,为下面要提到的核函数(kernel)做了很好的铺垫。

    下面,先把没求得的alpha放一放,趁着刚刚得到的这个公式的热乎劲,再去看看核函数。

    以上就是关于kkt点求解相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    hokkien翻译(hockey 翻译)

    kkt二阶最优条件(二阶最优化条件)

    最优化kkt条件(kkt条件例题)

    景观设计主题有哪些(景观设计主题有哪些内容)_1

    钢木门十大名牌排行榜(钢木门十大名牌排行榜最新)