首发于 策略算法工程师之路
策略算法工程师之路-凸二次优化

策略算法工程师之路-凸二次优化

目录

1.凸优化

1.1 凸优化定义

1.2 凸优化类型

1).线性规划

2).二次规划

3).二次约束的二次规划

...

2.梯度下降法

3.无约束凸二次优化

3.1 简单无约束凸二次型

3.2 线性回归

4.有约束凸二次优化

4.1 简单有约束优化

4.1.1 简单等式约束

4.1.1 简单不等式约束

4.2 有约束凸二次优化原理

4.2.1 Lagrange乘子法

4.2.2 KKT条件

4.2.3 Lagrange对偶

4.3 SVM

4.4 补贴优化问题(暂无)



1.凸优化

凸优化问题(OPT,convex optimization problem)指定义在凸集中的凸函数的最优化的问题。尽管凸优化的条件比较苛刻,但仍然在机器学习领域有十分广泛的应用。这主要得益于凸优化的优良性质:

1).凸优化问题的局部最优解就是全局最优解。

2).很多非凸问题可以等价或近似转化为凸优化问题(比如拉格朗日对偶)。

3).凸优化问题的研究较为成熟。求解方法也较为成熟。

首先来了解几个概念性的问题。

什么是凸集?

定义: C 是凸集,如果对任意的 x,y\in C 和任意的 \theta \in R 满足 0\leq \theta \leq 1 时, \theta x +(1-\theta) y \in C 恒成立。

直观来讲,任取一个集合中的两点连成一条线段,如果这条线段完全落在该集合中,那么这个集合就是凸集。

什么是凸函数?

定义:定义在 R^{n}->R 上的函数 f 是凸函数,如果它的定义域 D(f) 是一个凸集且对任意的 x,y\in D0 \leq \theta \leq 1 , f(\theta x + (1-\theta y)) \leq \theta x f(x) + (1-\theta x)f(y) 恒成立。直观来讲就是形状看上去“凹”下去的函数,注意可不是看上去“凸”的。


什么是非凸函数?


凸优化的形式化定义:

其中, x 为决策变量, f(x)g_{i}(x) 均为凸函数, h_{j}(x) 为仿射(线性)函数。根据 f(x)g(x) 的不同形式,又可以将凸优化细分为以下几种不同的类型。

1).线性规划

其中目标函数 f(x) 和不等式约束 g(x) 都为仿射(线性)函数。

2).二次规划

其中目标函数 f(x)为凸二次型, g(x) 不等式约束为仿射(线性)函数。

3).二次约束的二次规划

其中目标函数 f(x) 和不等式约束 g(x) 都为凸二次型。本章我们主要关注的是“二次规划”。

说起运筹建模,在实践中工程师通常有意将问题建模为“凸优化”问题,其主要原因是“别的我也不会!”,有些时候与自己的智商妥协也不是一件很丢人的事情而是常态。

上图中是阿里的中间件专家沈询(花名),代表作TDDL(分布式数据库中间件)。当年转正答辩技术环节选的就是TDDL,并且选了其中最难的编译原理部分讲解。因为笃定评委们都不懂,所以就可以随便讲了。即便讲的不对大家也听不出来且还能凸显自己的技术深度。

言归正传,曾经在一次分享中有人问沈询“解决分布式事务最好的方案是什么?”。当时沈询给出的回答是“没有事务”。不愧曾是我的偶像(现在也是),我喜欢这个答案。

简单思考过关于“科学思维”和“工程思维”在面对“难点”时处理思路的不同。在面对“难点”时,工程同学首先应该想到的是如何“逃避”,解决不了的问题就想办法绕过去,因为我们的首要目标是解决业务问题。 而科学家在面对“难点”时,一定是想办法攻克,因为科学家的首要目标为“探索未知世界”。


2.梯度下降法

还是要先简单说下凸优化中常见的“梯度下降法”!

大多数时候我们仅仅知道目标函数是“凸”的,但并不知道最优值(最大值或最小值)在哪。

如前文所说,由于凸优化具有“局部最优解等于全局最优解”的优良性质,因此只要任意选定一个“初始解”,然后沿着“使得目标函数 f(x) 不断减小” 的方向移动,当我们走到“局部最高点”的时候也就走到了“全局最高点”

将上述讨论用数学语言表达。我站在当前位置 x_{k} ,选择了方向 d_{k} ,然后沿着选择的方向行走了 a_{k} 距离,最终到了新的位置 x_{k+1} 。总结成如下公式:

我们希望新的位置的函数值 f(x_{k+1}) 小于(或大于) f(x_{k}) ,只有这样才能一步一步逼近我们的终极目标 min f(x) 。图中好像画反了(成山顶了)!

所以这里至关重要的是方向 d_{k} 的选择。选择错了越努力越痛苦!

注: \bigtriangledown f(x_{k})f(x_{k}) 的梯度向量,如下:


3.无约束凸二次优化

3.1 简单凸二次型

min \frac{x^{2}+y^{2}}{2}

针对 f(x,y)=\frac{x^{2}+y^{2}}{2} ,显然最小值0在 (0,0) 处取得。出于讲解需要这里分别采用无约束最优性条件和梯度下降法求解。

1).无约束最优性条件

所谓无约束最优性条件,是指最优化问题的最优解所要满足的必要条件或充分条件。对于无约束最优性条件通常包含“一阶条件”和“二阶条件”。

一阶条件:如果x¯是局部极小点,则在该点梯度为0。

二阶条件:如果x¯是局部极小点,则在该点Hessian矩阵半正定;如果梯度为0

且Hessian矩阵在x¯微分领域内半正定,则x¯是局部极小点。

f(x,y) 的偏导为0:

2).梯度下降法


3.2 线性回归

简单了解下什么是回归任务? 如下一组房屋价格数据:

把房屋的面积(Living area)记为特征 x_{1} ,把居室的数目记为特征 x_{2} ,价格记为 y 。我们假设满足如下关系:

因此可以建立模型:

接下来就是如何确定 \theta _{1}\theta _{2}\theta _{3} 的值。我们希望第i个样本的预测值 h_{\theta}(x) 与真实值 y 的误差 J(\theta) 越小越好,用数学语言表达如下:

再考虑所有样本的总体误差:

根据前面所讲“梯度下降法”我们需要确定每一步的梯度方向:

最后迭代更新参数直到收敛:

参考资料:

1. [机器学习必知必会]从无约束优化到拉格朗日法

jianshu.com/p/0f368102d

2.回归:线性回归

jianshu.com/p/3a98f3311

3. Machine_learning

github.com/uestc-buddy/

4.通过线形回归了解算法流程

cnblogs.com/xiaoyuanquj


4.有约束凸二次优化

实际上每个人的精力都是有限的,能行走的路程也不是无穷的。因此如何在有限的生命中成就最好的自己,就是“有约束的最优化问题”。

明知道走不到“山顶”,还要继续走吗? 这是一个值得思考的问题。讲一个关于西西弗的故事。

有约束的凸二次优化问题包含:等式约束凸二次优化、不等式约束凸二次优化和混合约束凸二次优化

4.1 简单有约束优化

4.1.1 简单等式约束


4.1.2 简单不等式约束

看了上面的代码,是不是觉得很简单。难点不在代码,而是在于将实际优化问题转化为标准形式的过程。对于简单的凸二次优化问题可以借助常用的优化包(比如上文代码使用的cvxopt等)解决。但是在很多实际工程问题中(比如机器学习、定价补贴等),决策变量和约束条件会非常多。此时通用的求解器基本无法满足需要,还是需要我们在充分了解有约束的凸二次优化求解原理的基础上做面向问题的特殊化处理。

参考资料:

1.Python量化投资教程

wizardforcel.gitbooks.io


4.2 有约束凸二次优化原理

4.2.1 Lagrange乘子法

在面对一个棘手的新问题时,科学家们往往会考虑如何把新问题转化成已知的问题。在本文中无约束的凸优化问题是相对比较成熟的,那有约束的凸优化可以转化成无约束凸优化问题吗? 让我们一起来见证奇迹的时刻。

首先来看等式约束:

以上假设 f(x)g(x) 连续且可导。利用Lagrange乘数法将约束条件放到目标函数中去:

其中 \lambda ( \lambda \geq 0 )称为Lagrange乘数。引入 \lambda 后将约束优化问题转化成为无约束优化问题。

计算 Lx\lambda 的偏导:

联立方程:

解上面的方程组就得到 x^{*} 就是最优解。


4.2.2 KKT条件

将3.2.1小节中的等式约束推广到不等式约束

直观感受下“等式约束”和“不等式约束”的异同。等式约束是一条“边界”而不等式约束是一块“区域”

同样引入Lagarange乘子,将约束放到目标函数中。

假设我们已经知道了满足约束的最优解 x^{*} 。这里 x^{*} 分为两种情况:

(1). x^{*} 位于可行域的边界,称为边界解(boundary solution)。此时约束条件 g(x) \leq 0 是起作用的。由于 x^{*} 位于边界上,此时不等式约束问题等价于等式约束问题。

由3.2.1可知 x^{*} 应满足的必要条件是:

(2). x^{*} 位于可行域的内部,成为内部解(interior solution)。此时约束条件 g(x) \leq 0 是不作用的。此时约束问题等价于无约束问题。

x^{*} 应满足的必要条件是: \bigtriangledown f(x^{*})=0\lambda = 0 (相当于忽略了约束条件 g(x) )。

综合(1)和(2), x^{*} 满足的必要条件为:

如果同时包含等式约束和不等式约束:

定义Lagrange函数:

此时 x^{*} 满足的必要条件为:

参考资料:

1. Eureka:Karush-Kuhn-Tucker (KKT)条件


光说不练假把式,看一个具体的例子。

利用KKT条件求解有约束问题时,不同的问题不一样,没有固定的套路。但总结下来也是有原则的。整个求解过程就是不断“消元”的过程,一般来说是用是将“不容易替换的变量”替换“容易求解的变量”,然后针对“不容易求解的变量”做详细讨论。比如上面问题中的不等式的Lagrange乘子是比较难求解的,最后公式中只剩下变量 \mu


参考资料:

ccjou.wordpress.com/201


4.2.3 拉格朗日对偶

1).原始问题(primal problem)

把原来的问题拆分成了两步,先max后min。并且和原有的问题是等价的。为什么要这样做?这样折腾图啥呢? 肯定不是为了玩数字游戏吧。其实是为了引出对偶问题。

2).对偶问题(dual problem)

读到这里,相信大部分同学都是“一头雾水”,绕了半天这是在干啥?

简单说一下背后的思想。当原始问题较难求解时,如果我们可以找到一个“简单的且结果与原始问题差不多”的问题,我们就可以直接去求解较简单的问题。有点“正难则反”的思想。总之对偶的思想在运筹优化中随处可见,本小节先简单了解下思想。

假设“富士山”存在一个相互“对偶”的山。我的目标是爬到“富士山顶”,如果从山顶一步一步爬,可能穷尽一生也达不到目的地。而如果从“对偶”的山往下走,发现可以更轻松的到达,岂不是一个很好的捷径。脑洞有点大,想象一下就好!

参考资料:

1. 一文理解拉格朗日对偶和KKT条件

jianshu.com/p/52aeaa540

2. [机器学习必知必会]从无约束优化到拉格朗日法

jianshu.com/p/0f368102d

3.约束最优化方法之最优性条件

blog.csdn.net/u01243066


4.3 SVM

接下来讲一个拉格朗日对偶的经典应用,大名鼎鼎的SVM算法。机器学习发展历史上一颗璀璨的明珠。相信很多接触机器学习的同学都是从SVM开始的。SVM是读研生涯接触的最早的一个ML算法,但是工作后从来没有用过。

主要原因为SVM是为小样本学习设计的,而工业界(尤其是互联网领域)不缺少数据,同时SVM训练效率较低且不容易调试,同时不如LR模型可解释行强。所以SVM常见于实验室而在互联网领域鲜有应用。不过SVM将问题建模为“有约束凸二次优化问题”,其求解过程非常具有代表性。

直观来看,SVM的求解目标是上图“中间”那条“分界面”,在将正负样本区分开的同时使得“所有样本”到“分界面”的间隔最大。

上述过程将原有问题通过拉格朗日乘子法转换为对偶问题。

上述过程通过各种消元trick将问题转换成只有一类对偶变量 a^{*} 的形式,减小了求解难度。在实际SVM工具包中通常采用SMO算法。

如果所有变量的解都满足此最优化问题的KKT条件(Karush-Kuhn-Tucker conditions),那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。

根据KKT条件,通过 a^{*} 反求原始变量 w^{*}b^{*} ,如下过程:


参考资料:

1. SVM推导与SMO算法

jianshu.com/p/a9871de2a

2. 【分类战车SVM】第四话:拉格朗日对偶问题(原来这么简单,你也可以轻松学会)

zhuanlan.zhihu.com/p/28

3. SVM(二)拉格朗日对偶问题

cnblogs.com/liqizhou/ar

4.SVM代码实现

seanlee97.github.io/201


4.4 补贴优化问题

敬请期待<<策略算法工程师之路>>。

代做工资流水公司哈尔滨入职流水代办泉州做企业流水打印潮州工作收入证明制作荆州薪资流水单价格沈阳办背调银行流水镇江贷款流水代开盐城制作银行流水单莆田贷款银行流水代做邢台打印对公银行流水邢台对公账户流水样本济南代办工资银行流水许昌对公账户流水打印曲靖个人银行流水代办临沂代开房贷工资流水杭州背调工资流水多少钱淄博房贷收入证明费用广州做银行流水账德阳房贷收入证明价格孝感房贷工资流水 代办南宁打印签证流水沧州银行对公流水多少钱西宁做流水账单开封对公账户流水查询舟山工资代付流水样本无锡打银行流水PS孝感查询对公账户流水湛江银行流水单代开广州打工资流水单太原贷款银行流水宜昌开工资流水app截图香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化