机器学习方法篇(12)------拉格朗日乘子法

来源:互联网 发布:matlab gui 编程实例 编辑:程序博客网 时间:2024/05/18 00:18

● 每周一言

不忘初心,方得始终。

导语

上一节讲到SVM的优化公式,并提到SVM在强大的数学理论背景之下有着十分高效的训练方法。本节就先讲讲其中的一个关键知识点——拉格朗日乘子法,为之后深入讲解SVM做准备。

拉格朗日乘子法

在机器学习中,模型的优化目标通常是最小化损失函数的值,即loss最小。从数学角度看,这类优化问题又可以分为以下三种情况:
1. 无约束优化问题:min L(x);
2. 等式约束优化问题:min L(x);s.t. h_i(x) = 0,i =1, …, n;
3. 不等式约束优化问题:min L(x);s.t. g_i(x) <= 0,h_i(x) = 0,i =1, …, n。

如果是凸优化(简单地说就是集合内任意连线均属于该集合,SVM是凸优化问题),对于第一种情况,可以直接求导得出最优解。

对于带等式约束的第二种情况,常用的求解方法就是本文要讲的拉格朗日乘子法。这里不妨借用一个例子来阐明什么是拉格朗日乘子法。

有如下等式约束的凸优化问题,求解f的最小值:

fig1

如果不带等式约束,f直接对x1、x2、x3求偏导等于0即可。而在有等式约束的条件下,拉格朗日乘子法的作用就是帮助我们去掉这些等式,具体方式为把这些约束分别乘一个系数加到目标函数f当中去,如下图所示:
fig2

这样处理,既保证了两个等式约束在不影响原函数值的情况下保持成立,又使优化问题变成了第一种不带约束的情况。因此,可以直接f对x1、x2、x3求偏导,得到如下式子:
fig3

把上式的x1、x2和x3分别带入两个等式约束中,便得到一个关于α1和α2的二元一次方程组,求解得到α1 = −0.39,α2 = −1.63,再带入上式就得到了x1、x2和x3的解。

不过,朴素的拉格朗日乘子法只能解决等式约束优化问题。对于第三种情况关于不等式的约束优化问题,需要使用拉格朗日乘子法的加强版——KKT条件。而SVM的优化问题正属于这第三种情况。关于KKT条件我下节再讲,敬请期待。

文中举例来源:http://blog.csdn.net/on2way/article/details/47729419

结语

感谢各位的耐心阅读,后续文章于每周日奉上,敬请期待。欢迎大家关注小斗公众号 对半独白

face

原创粉丝点击