简单总结拉格朗日乘数法

拉格朗日乘数法: 将会介绍下面的概念以及对应关系。

  1. 拉格朗日对偶问题
  2. 凸集 凸函数、
  3. 凹函数
  4. 凸优化
  5. 弱对偶、
  6. 强对偶
  7. KKT条件
  8. Slater条件
  9. 最大熵

将会了解到L1和L2是一个特殊的朗格朗日函数。

将会了解到 拉格朗日乘数法本质上就是一个求解最值问题的方法(传统函数求最值-求导或者求梯度,求导取极值点即可,拉格朗日乘数法加了约束条件)。

1 背景介绍

如何求解带约束的函数最值问题?通过朗格朗日法可以知道,对原来公式进行变形或者重写,只需重写一个新式子即可(然后使用求导,求梯度方法),计算出最值。

科学家已经证明,求原来函数的最值,和朗格朗日函数的最值是一致的。二者等价。

那背后的原理或者思想是什么呢?为什么二者等价。

其核心关键就是梯度为0,即什么时候存在最值?当朗格朗日函数的整体梯度为0时,出现最值。那朗格朗日函数的整体梯度为0时,会出现什么情况?

由上面式子可知,当2个梯度的和为0时,整体梯度为0。则就要求原函数图像与条件函数的梯度出现等大反向共线时才能满足

所以这里的朗格朗日乘数,改变了条件函数的梯度(向量)长度。

这里的g(x)表示约束条件。上面可以表示为一般朗格朗日函数形式。

蓝色线表示原函数图像,黄色线表示条件函数图像。当二者出现相切时,才满足整体梯度为0,此时出现最值。

多个约束情况:


2凸集 凸函数

凸集:集合内任意两点的连线仍在集合内。

作用:凸优化问题有非常好的性质(局部最优 = 全局最优)。

凸函数:

f(θx+(1−θ)y) ≤ θf(x)+(1−θ)f(y)

几何意义:函数图像在弦的下方。

例:函数 x^2

, e^x

, log(1+e^x )等等。

几何意义:函数图像在弦的下方。

凹函数

与凸函数相反:

f(θx+(1−θ)y) ≥ θf(x)+(1−θ)f(y)

即:负凸函数。

在对偶问题中,对偶函数

min L(x,λ,ν) 一定是凹函数(无论原问题是否凸)。

  • 可行域是凸集
  • 任何局部最优解 → 全局最优解

凸函数和凹函数对应值域都是凸集,只是凸函数有最小值,凹函数有最大值。一般求解凹函数都是添加一个负号,变成凸问题,求解它的最小值。二者可以进行变化。

3凸优化

4对偶


对偶函数一定是凹函数,是凸优化问题。

也就是无论遇到什么问题,都可以先找到它的对偶问题,根据对偶问题性质,他是凹函数,可以进行凸优化的方法来解决

原问题的解是P*

对偶问题的解是D*

原问题的解 >= 对偶问题的解

那什么情况 :原问题的解 = 对偶问题的解


原问题的解是P* 》 对偶问题的解是D* 为弱对偶关系

原问题的解是P* = 对偶问题的解是D* 为强对偶关系,即下面这个图:

一个凸优化问题,什么情况满足强对偶关系,必须满足slater条件。

5slater条件

只有满足了slater条件,一个凸优化问题,才是强对偶关系。

x在可行域的内部,不能在边界。即把等于0情况排查。

slater条件是强对偶关系的充分条件。一个凸优化问题满足了slater条件,一定是强对偶关系。

反过来就不一定了,一个强对偶关系的问题,不一定满足slater条件。

6KKT条件

故引出了KKT条件,科学家发现""只要满足了KKT条件,一定是强对偶关系,反过来不一定成立。

满足下面5个条件:则说明满足KKT条件。



KKT 是 Karush--Kuhn--Tucker 的缩写。

这三个名字分别对应三位数学家:

缩写 全名 贡献

K William Karush 1939 年在硕士论文中首次提出条件

K Harold W. Kuhn 1951 年与 Tucker 共同重新发现并推广

T Albert W. Tucker 同上

为什么叫 KKT 而不是 KT?

因为 Karush 最早发现(1939 年),但论文未受关注。

Kuhn 和 Tucker 于 1951 年独立重新发现后,条件才被广泛认知。

为了尊重原始贡献者,后人将 Karush 的名字加入,形成 KKT。

KKT包含了3个类型条件:
1 原问题可行条件
2 对偶问题可行条件
3 互补松弛条件。

7最大熵问题

上述为凸优化问题。求最大熵的时候,去求解他的对偶问题即可。

lanbma可以最后通过人为学习计算,即最后进行调参优化。

8极大似然估计与最大熵

左边是最大熵问题

右边是极大似然估计

左边和右边等价。

原因在于,左边最大熵问题是对偶问题,一定是凸优化问题,一定是一个凹函数。

对应的,右边极大似然估计一定是一个凹函数,极大似然估计和交叉熵方法是等价的。交叉熵方法凸函数

相关推荐
万事大吉CC24 分钟前
Python 笔试输入模板总结
python·算法
lihao lihao33 分钟前
Linux信号
开发语言·c++·算法
大白话_NOI1 小时前
【洛谷 P2249】查找(深基 13. 例 1)+ 详细分析
c++·算法
吠品1 小时前
C++实现m行n列带边框的长方形输出
算法
智者知已应修善业1 小时前
【51单片机2个外部中断显示中断历时,初始化8左移3位共阳数码管】2024-6-6
c++·经验分享·笔记·算法·51单片机
西安邮电大学2 小时前
分治算法详细讲解
java·后端·其他·算法·面试
code bean2 小时前
平衡相关性与多样性:推荐系统中的永恒博弈与 MMR 算法详解
算法
青梅橘子皮2 小时前
Linux---进程控制(2)(进程程序替换)
linux·c++·算法
Shan12052 小时前
经典问题——验证栈序列
数据结构·算法
2501_906565122 小时前
勾股定理证明
算法