• Lagrange Multipliers 拉格朗日乘数法(含 KKT 条件)


    最优化问题通常是指对于给定的某一函数,求其在指定作用域上的全局最小值,一般情况下,最优化问题一般分为三种情况:

    (1)无约束条件

    对于无约束条件的优化问题中,如果一个函数 f 是凸函数,那么可以直接通过 f(x) 的梯度等于 0 来求得全局极小值点。

    为了避免陷入局部最优,人们尽可能使用凸函数作为优化问题的目标函数。

    凸集定义:欧式空间中,对于集合中的任意两点的连线,连线上任意一点都在集合中,我们就说这个集合是凸集。

    凸函数定义:对于任意属于 [0,1] 的 a 和任意属于凸集的两点 x, y,有 f( ax + (1-a)y ) <= a * f(x) +(1-a) * f(y),几何上的直观理解就是两点连线上某点的函数值,大于等于两点之间某点的函数值。凸函数的任一局部极小点也是全局极小点

    半正定矩阵的定义:特征值大于等于 0 的实对称矩阵。

    半正定矩阵的充要条件:行列式( n 阶顺序主子式)等于 0,行列式的 i 阶顺序主子式>=0,i 从 1 到 n-1

    凸函数的充要条件:如果 f(x) 在开凸集 S 上具有二阶连续偏导数,且 f(x) 的海塞矩阵(二阶偏导的矩阵)在 S 上处处半正定,则 f(x) 为 S 上的凸函数。

    (2)等式约束条件

    解决方法就是拉格朗日乘数法,下面就用例子引出这个方法。

    在这里插入图片描述

    假设我们想要求一个多元函数 f ( x , y ) = x 2 y f(x,y) = {x^2}y f(x,y)=x2y 的最大值,将其可视化如上图所示,是一个蓝色的类似于马鞍的曲面。但同时我们约束 x 2 + y 2 = 1 {x^2} + {y^2} = 1 x2+y2=1,反映到函数曲面上就是红色的曲线,求 f ( x , y ) f(x,y) f(x,y) 的最大值也就是求红色曲线上最高的点。

    在这里插入图片描述

    我们可以用等高线来描述函数 f ( x , y ) = x 2 y f(x,y) = {x^2}y f(x,y)=x2y,每一条等高线就是函数取同一个值的点的连线,例如下面分别为 x 2 y = 1 {x^2}y = 1 x2y=1 x 2 y = 0.1 {x^2}y = 0.1 x2y=0.1 的等高线:

    在这里插入图片描述

    在这里插入图片描述

    显然, x 2 y = 1 {x^2}y = 1 x2y=1 与红色圆不相交,说明它不满足 x 2 + y 2 = 1 {x^2} + {y^2} = 1 x2+y2=1 的约束条件。 x 2 y = 0.1 {x^2}y = 0.1 x2y=0.1 虽然与红色圆相交了,但我们希望找到最大的值,使得函数 f ( x , y ) = x 2 y f(x,y) = {x^2}y f(x,y)=x2y 与红色圆是正好相切的。我们可以把约束条件当作是函数 g ( x , y ) = x 2 + y 2 g(x,y) = {x^2} + {y^2} g(x,y)=x2+y2 的一条等高线,则画出两个函数 f 与 g 的等高线与梯度如下:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    根据梯度向量的性质可知,梯度向量是垂直于等高线的,在两个函数 f 和 g 相切的位置,两者的等高线在切点处是重合的,因此 f 和 g 在切点处的梯度向量 ∇ f \nabla f f ∇ g \nabla g g 方向相同,只有大小上的不同,两者的比值用系数 λ 表示,被称为拉格朗日乘数

    在这里插入图片描述

    在这里插入图片描述

    如果分别求出 f 和 g 的梯度向量 ∇ f \nabla f f ∇ g \nabla g g,代入到 ∇ f = λ ∇ g \nabla f = \lambda \nabla g f=λg 中,可以得到两个方程,再加上约束条件,共三个方程,可以求解三个变量 x、y 和 λ,过程如下:

    在这里插入图片描述

    下面再引出拉格朗日函数,实际上就只是在写法上更为紧凑而已

    在这里插入图片描述

    假设我们想求函数 R ( x , y ) = x 2 e y y R(x,y) = {x^2}{e^y}y R(x,y)=x2eyy 的最大值,约束条件为函数 B ( x , y ) = x 2 + y 2 = b B(x,y) = {x^2} + {y^2} = b B(x,y)=x2+y2=b,所谓的拉格朗日函数就是 L ( x , y , λ ) = R ( x , y ) − λ ( B ( x , y ) − b ) L(x,y,\lambda ) = R(x,y) - \lambda (B(x,y) - b) L(x,y,λ)=R(x,y)λ(B(x,y)b)

    在这里插入图片描述

    之所以这么做,是因为对 L ( x , y , λ ) L(x,y,\lambda ) L(x,y,λ) 求梯度 ∇ L \nabla L L 再令它等于 0 的话,就能得到三条方程,实际上就是基于 ∇ R = λ ∇ B \nabla R = \lambda \nabla B R=λB 和初始条件得到的那三条方程。

  • 相关阅读:
    Java开发中的工作流程和步骤
    力扣:133. 克隆图(Python3)
    安全渗透测试之网络基础知识(IP地址)
    C++(20):通过[[likely]]和[[unlikely]]优化编译switch
    【SNMP】snmp trap 与介绍、安装、命令以及Trap的发送与接收java实现
    Karl Guttag:AR眼镜应根据用途来设计,VST并未解决技术难题
    运维实战100:CDH5.16.2升级至CDH6.3.2
    windows消息分类PostMessage、SendMessage
    示例 方法的重载 221107
    Qt开发技术:Q3D图表开发笔记(三):Q3DSurface三维曲面图介绍、Demo以及代码详解
  • 原文地址:https://blog.csdn.net/cnhwl/article/details/125902320