拉格朗日乘数法

拉格朗日乘数法

等式约束

  • 作为一种优化算法,拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数
  • 以上是从别人的博客中摘过来的, 通俗地理解就是拉格朗日乘数法将目标优化函数与约束条件合并成了一个函数,这个函数没有约束,下面举一个例子讲解,唤醒高数学过的拉格朗日

    • 这里例子也是从别人博客摘过来的
    • 目标优化函数: \(f(x, y, z)=8xyz\)
    • 约束条件: \(s.t.{{x^2}\over{a^2}}+{{y^2}\over{b^2}}+{{z^2}\over{c^2}}=1\)
    • 使用拉格朗日乘数法的思想, 将多个式子转变成为一个没有约束的式子
      • \(F(x, y, z, \lambda)=f(x, y, z)+\lambda[{{x^2}\over{a^2}}+{{y^2}\over{b^2}}+{{z^2}\over{c^2}}-1]\)
      • \(F\)分别对\(x\), \(y\), \(z\), \(\lambda\)求偏导, 令他们的偏导为0
      • \({{{\partial}F}\over{\partial}x}=8yz+{{2\lambda{x}}\over{a^2}}=0\) (1)
      • \({{{\partial}F}\over{\partial}y}=8xz+{{2\lambda{y}}\over{b^2}}=0\) (2)
      • \({{{\partial}F}\over{\partial}z}=8yz+{{2\lambda{z}}\over{c^2}}=0\) (3)
      • \({{{\partial}F}\over{\partial}{\lambda}}={{x^2}\over{a^2}}+{{y^2}\over{b^2}}+{{z^2}\over{c^2}}-1=0\) (4)
      • 联立方程求出最有的\(x\), \(y\), \(z\)

不等式约束与拉格朗日对偶式

  • 拉格朗日乘数法的核心思想是不变的, 不管是等式约束还是不等式约束, 但是在不等式约束使用拉格朗日乘数法的前提是不等式约束符合KKT条件, 这个不等式约束在高等数学中没有讲过
  • 例子
    • 目标优化函数: \(minf(x)\)
    • 约束条件(不是这种形式的要转换成这种形式)
      • \(g(x)<=0\)
      • \(h(x)=0\)
    • 构造拉格朗日\(L(x, a, b)=f(x)+ag(x)+bh(x)\), 其中\(a>=0\), \(g(x)<=0\), \(h(x)=0\)
    • 我们要求的是\(minf(x)\), 现在就是见证奇迹的时刻了
      • 因为\(h(x)=0\), 所以\(L(x, a, b)=f(x)+ag(x)\)
      • 因为\(a>=0\), \(g(x)<=0\), 所以\(ag(x)<=0\), 所以\(maxL(x, a, b)=f(x)\), 因为\(ag(x)<=0\), 所以要想\(L(x, a, b)\)最大, 则需要让\(ag(x)=0\), 这个时候右侧就只剩下了\(f(x)\), 所以\(max_aL(x, a, b)=f(x)\), 那么优化目标\(minf(x)\)就成了\(min_xmax_aL(x, a, b)\), 注意\(max_a\)是对a这个拉格朗日因子变量求\(L(x, a, b)\)求最大值
    • 除此之外, 因为不等式约束满足了KKT(要求h(x)=0, a(g(x))=0), 所有有这个结论, \(min_xmax_aL(x, a, b)=max_amin_xL(x, a, b)=minf(x)\), 现在来推一遍

      • \(max_amin_xL(x, a, b)=max_amin_x(f(x))+max_amin_x(ag(x))\)
      • 因为\(a\)是在拉格朗日中加入的变量, \(f(x)\)与a没有任何关系, 所有\(max_amin_x(f(x))=min_x(f(x))\)
      • 所有\(max_amin_xL(x, a, b)=min_x(f(x))+max_amin_x(ag(x))\)
      • 进一步的, \(max_amin_xL(x, a, b)=min_x(f(x))+max_amin_x(ag(x))=min_x(f(x))+max_a(0)\)
        • 我们知道
          \[ ag(x)=\begin{cases} 0 & if & a=0 & or & g(x)=0 \\ -\infty & otherwises \end{cases} \]
        • 如果\(minag(x)\)取到\(\infty\)\(maxmin(ag(x))\)为负数, 但是如果\(minag(x)取0\), 则\(maxmin(ag(x))\)为0, 这个才是最大值
      • 所以在进一步的, \(max_amin_xL(x, a, b)=min_x(f(x))+max_amin_x(ag(x))=min_x(f(x))+max_a(0)=min_x(f(x))\)得到KKT结论
      • 以上就是对偶式推导(SVM需要对偶式, 如果不适用求解困难)

    ## 作用

      + 将原始的问题转换成可以使用SMO算法的形式, 使用SMO算法求解方程

转载于:https://www.cnblogs.com/megachen/p/10016464.html

展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读