拉格朗日乘数法可以解决多变量函数在其变量受到一个或多个约束条件时求极值的问题。
它可以将含有n个变量的函数(该函数的变量有k个约束条件)的极值问题转化为含有n+k个变量的方程组的解。
实现该方法过程中引入的一个或一组新的未知数就叫拉格朗日乘子。
在二维直角坐标系中有一点(m, n)和一条直线ax+by+c=0。现在要求点到直线的距离。
可以用拉格朗日乘数法解决:
点到直线的距离即为点到直线所有点中的那个最小距离。
2.1 在直线上随机取一点(x, y),距离函数为 d = ( m − x ) 2 + ( n − y ) 2 , 约 束 条 件 为 a x + b y + c = 0 d=\sqrt{(m-x)^2+(n-y)^2},约束条件为ax+by+c=0 d=(m−x)2+(n−y)2,约束条件为ax+by+c=0;
2.2 构建拉格朗日函数: L ( x , y , λ ) = d 2 + λ ( a x + b y + c ) \mathcal{L}(x, y, \lambda)=d^2+\lambda(ax+by+c) L(x,y,λ)=d2+λ(ax+by+c),则函数d的极值点即为函数 d 2 d^2 d2的极值点,即为 L ( x , y , λ ) \mathcal{L}(x, y, \lambda) L(x,y,λ)函数的极值点(这样构造的目的是为了简化计算);
2.3 将 L ( x , y , λ ) \mathcal{L}(x, y, \lambda) L(x,y,λ)的所有偏微分设为0:
2 ( x − m ) + λ a = 0 2(x-m)+\lambda a=0 2(x−m)+λa=0
2 ( y − n ) + λ b = 0 2(y-n)+\lambda b=0 2(y−n)+λb=0
a x + b y + c = 0 ax+by+c=0 ax+by+c=0
2.4 解得结果为
λ = 2 ( a m + b n + c ) a 2 + b 2 \lambda =\frac{2(am+bn+c)}{a^2+b^2} λ=a2+b22(am+bn+c)
2.5 易求得:
d = ∣ a m + b n + c ∣ a 2 + b 2 d=\frac{|am+bn+c|}{\sqrt{a^2+b^2}} d=a2+b2∣am+bn+c∣
对于离散分布,有x1, x2,…, xn一共n个点,概率分别为p1, p2, …, pn,构建如下的熵函数:
f ( p 1 , p 2 , . . . , p n ) = − ∑ i = 1 n p i log 2 ( p i ) , 约 束 条 件 为 g ( p 1 , p 2 , . . . , p n ) = ∑ i = 1 n p i = 1 f(p1, p2, ..., pn) = -\sum_{i=1}^{n}pi\log_{2}(pi),约束条件为g(p1, p2, ..., pn)=\sum_{i=1}^{n}{pi}=1 f(p1,p2,...,pn)=−∑i=1npilog2(pi),约束条件为g(p1,p2,...,pn)=∑i=1npi=1。
3.1 构建拉格朗日方程:
L ( p 1 , p 2 , . . . , p n , λ ) = f ( p 1 , p 2 , . . . , p n ) + λ ( g ( p 1 , p 2 , . . . , p n ) − 1 ) \mathcal{L}(p1, p2, ..., pn, \lambda)=f(p1, p2, ..., pn)+\lambda (g(p1, p2, ..., pn) -1) L(p1,p2,...,pn,λ)=f(p1,p2,...,pn)+λ(g(p1,p2,...,pn)−1)
3.2 令所有的偏微分为0:
∂ ∂ p i ∣ λ L ( p 1 , p 2 , . . . , p n , λ ) = 0 \frac{\partial}{\partial pi|\lambda} {\mathcal{L}(p1, p2, ..., pn, \lambda)} = 0 ∂pi∣λ∂L(p1,p2,...,pn,λ)=0,
上式的含义是对所有变量 ( p 1 , p 2 , . . . , p n , λ ) (p1, p2, ..., pn, \lambda) (p1,p2,...,pn,λ)分别求偏微分,所以一共有n+1个方程。
3.3 上述方程的解为:
− ( l o g 2 p i + 1 l n 2 ) + λ = 0 -(log_2pi + \frac{1}{ln2})+\lambda=0 −(log2pi+ln21)+λ=0 for every i
3.4 易得 p i = 1 n pi = \frac{1}{n} pi=n1,所以在均匀分布的情况下能获得最大熵。
Question: 求 y = x 2 在 约 束 条 件 x 2 = 1 下 的 最 小 值 。 求y=x^2在约束条件x^2=1下的最小值。 求y=x2在约束条件x2=1下的最小值。
4.1 直觉法,很显然x在取1或-1时,y的值相等,都为1。
4.2 拉格朗日法
4.21 跟上面一样,构建拉格朗日方程:
L ( x , λ ) = x 2 + λ ( x 2 − 1 ) \mathcal{L}(x, \lambda)=x^2+\lambda(x^2-1) L(x,λ)=x2+λ(x2−1)
上述方程对应图形为:
4.22 令所有的偏微分为0:
∂ L ∂ x = 2 x + 2 x λ = 0 \frac{\partial \mathcal{L}}{\partial x}= 2x+2x\lambda=0 ∂x∂L=2x+2xλ=0,
∂ L ∂ λ = x 2 − 1 = 0 \frac{\partial \mathcal{L}}{\partial \lambda}= x^2-1=0 ∂λ∂L=x2−1=0,
容易求出 λ = − 1 时 , \lambda=-1时, λ=−1时,满足条件,此时有两个临界点,如上图所示,但这两个点都是鞍点,需要进一步确定这些点哪个最小值点。
4.23 用数值优化的方法来解决上述问题
构建梯度的平方和的算术平方根函数:
h ( x , λ ) = ( 2 x + 2 x λ ) 2 + ( x 2 − 1 ) 2 h(x,\lambda)=\sqrt{(2x+2x\lambda)^2+(x^2-1)^2} h(x,λ)=(2x+2xλ)2+(x2−1)2
此函数图像为
易知道此函数含有最小值点。用数值方法可以来解决损失函数的鞍点问题。
https://en.wikipedia.org/wiki/Lagrange_multiplier