SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))

关于支持向量机里的拉格朗日乘子法有很多文章,作为学习笔记这里就不详细描述了,只记录一些一般文章里跳过的难以理解部分
Support Vector Machine wiki : https://en.wikipedia.org/wiki/Support_vector_machine

  1. 拉格朗日乘子法和KKT条件
    1.1 对于无约束优化问题中,如果一个函数f是凸函数,那么可以直接通过f(x)的梯度等于0来求得全局极小值点。
    1.2 对于等式约束,以下例子来说明:
    SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
    SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
    令g(x, y) 为约束条件,我们需要求f(x, y)的min/max value. 用下面的图来直观理解:
    SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
    f(x, y)是中间的圆,随着x和y变大会不断外扩,两条蓝线就是g(x, y) = 0的曲线
    他们相切的时候就是min/max value(不详细解释,很多文章可以看)
    相切意味着梯度方向相同,这里经常会跳过一段,梯度向量的表达方式:
    SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
    SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
    就是矩阵形式求偏导,既然他们方向一致,那么我们就有:
    SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
    把方程都联立起来,我们就有:
    SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))

SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
这就是Lagrange multiplier. 而很多地方都会直接跳到下面的方程,我看了蛮久才理解:
SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
其实就是分别对x, y,λ求偏导,能够得到上面的方程组(仔细比较),算是反向构思?注意λ和上面是反过来的
SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))

多个约束条件:
SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))

1.3 不等式约束和KTT条件
极值在约束域内,显然我们直接求导就能找到极值,跟约束域无关。
接着讨论极小值点落在可行域内(不包含边界)
SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))
在那个极值点上两个图像的梯度应该是相反的,于是我们能得到:
走到极小值点的时候,g(x)的梯度和f(x)的负梯度同向。因为极小值点在边界上,这个时候g(x)等于0,直接贴结论了,很多文章描述这块,还是比较好懂的
SVM-支持向量机理解(一)拉格朗日乘子法(Lagrange multiplier))