机器学习基础:拉格朗日乘子法
在凸优化问题中,拉格朗日乘子法是最常用的方法之一。
先看个例题:求目标函数 f(x,y)=x2+y2\mathrm{f}(\mathrm{x}, \mathrm{y})=\mathrm{x}^{2}+\mathrm{y}^{2}f(x,y)=x2+y2,在约束条件xy=3\mathrm{xy}=3xy=3下的最小值。
这是一个典型的约束优化问题,根据我们中学知识,首先想到的是一个变量用另外一个变量进行替换,再带入目标函数就可以求出极值。
将y=3xy=\frac{3}{x}y=x3带入f(x,y)=x2+y2\mathrm{f}(\mathrm{x}, \mathrm{y})=\mathrm{x}^{2}+\mathrm{y}^{2}f(x,y)=x2+y2 ,可得 f(x)=x2+9x2,然后求f(x)\mathrm{f}(\mathrm{x})=\mathrm{x}^{2}+\frac{9}{\mathrm{x}^{2}} ,然后求 \mathrm{f}(\mathrm{x})f(x)=x2+x29,然后求f(x)的最小值。
这就变成了求一元函数的无约束极值。求导,f′(x)=0\mathrm{f}^{\prime}(\mathrm{x})=0f′(x)=0的点即为极值点。推导可得,在点(3,3)(\sqrt{3}, \sqrt{3})(3,3)和点(−3,−3)(-\sqrt{3},-\sqrt{3})(−3,−3)处,f(x,y)\mathrm{f}(\mathrm{x}, \mathrm{y})f(x,y)的最小值为6 。
更直观一些,将 x2+y2=c\mathrm{x}^{2}+\mathrm{y}^{2}=\mathrm{c}x2+y2=c的曲线族画出来,如图所示,当曲线族中的圆与xy=3xy=3xy=3 曲线相切时,切点到原点的距离最短。也就是说,f(x,y)=cf(x, y)=cf(x,y)=c的等高线和双曲线g(x,y)g(x, y)g(x,y)相切时,可以得到上述优化问题的一个极值。那么,当f(x,y)\mathrm{f}(\mathrm{x}, \mathrm{y})f(x,y)和g(x,y)\mathrm{g}(\mathrm{x}, \mathrm{y})g(x,y) 相切时,x,yx,yx,y的值是多少呢? 该如何求解呢?
在讨论梯度概念时,梯度与等高线的关系描述如下:函数z=f(x,y)z = f ( x , y )z=f(x,y) 在点(x0,y0)(x_0,y_0)(x0,y0)梯度方向与过点(x0,y0)(x_0,y_0)(x0,y0)的等高线f(x,y)=cf(x,y)=cf(x,y)=c在这点的法线方向相同,且从数值较低的等高线指向数值较高等高线,而梯度的模等于函数在这个法线方向的方向导数。这个法线方向就是方向导数取得最大值的方向。
根据梯度与等高线的关系描述,上面问题中f(x,y)f(x,y)f(x,y)和g(x,y)g(x,y)g(x,y)相切时,它们的切线相同,即法向量是相互平行的,因此,可以得到▽f(x,y)=−λ⋅▽g(x,y)\triangledown f(x,y)=-\lambda \cdot \triangledown g(x,y)▽f(x,y)=−λ⋅▽g(x,y) 。分别求偏导,并且加上约束条件 xy=3xy=3xy=3,可以得到方程组:
{∂f∂x=−λ∂g∂x∂f∂y=−λ∂g∂yxy=3\left\{\begin{array}{l} \frac{\partial f}{\partial x}=-\lambda \frac{\partial g}{\partial x} \\ \frac{\partial f}{\partial y}=-\lambda \frac{\partial g}{\partial y} \\ x y=3 \end{array}\right. ⎩⎨⎧∂x∂f=−λ∂x∂g∂y∂f=−λ∂y∂gxy=3
即:
{2x=−λy2y=−λxxy=3\left\{\begin{array}{l} 2 x=-\lambda y \\ 2 y=-\lambda x \\ x y=3 \end{array}\right. ⎩⎨⎧2x=−λy2y=−λxxy=3
求解结果:x=3,y=3,λ=−2\mathrm{x}=\sqrt{3}, \mathrm{y}=\sqrt{3}, \lambda=-2x=3,y=3,λ=−2 或者 x=−3,y=−3,λ=−2\mathrm{x}=-\sqrt{3}, \mathrm{y}=-\sqrt{3}, \lambda=-2x=−3,y=−3,λ=−2 通过上述例子引入拉格朗日乘子法的基本原理,即通过引入拉格朗日乘子λ\lambdaλ 将原来的约束优化问题转化为无约束的方程组问题。
一般步骤
- 求解函数u=f(x,y,z,t)\mathrm{u}=\mathrm{f}(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})u=f(x,y,z,t) 在条件φ(x,y,z,t)=0,ψ(x,y,z,t)=0\varphi(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})=0, \psi(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})=0φ(x,y,z,t)=0,ψ(x,y,z,t)=0下极值。
- 构造函数:F(x,y,z,t,λ1,λ2)=f(x,y,z,t)+λ1⋅φ(x,y,z,t)+λ2⋅ψ(x,y,z,t)\mathrm{F}\left(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t}, \lambda_{1}, \lambda_{2}\right)=\mathrm{f}(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})+\lambda_{1} \cdot \varphi(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})+\lambda_{2} \cdot \psi(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})F(x,y,z,t,λ1,λ2)=f(x,y,z,t)+λ1⋅φ(x,y,z,t)+λ2⋅ψ(x,y,z,t) ,其中,λ1\lambda_{1}λ1、λ2\lambda_{2}λ2 为拉格朗日乘子
- 通过对构造函数求偏导为 0 列出方程组。
- 求出方程组的解,带入即可得目标函数的极值。
【例】已知目标函数为V(x,y,z)=xyz\mathrm{V}(\mathrm{x}, \mathrm{y}, \mathrm{z})=\mathrm{xyz}V(x,y,z)=xyz,在约束条件2xy+2xz+2yz=122 \mathrm{xy}+2 \mathrm{xz}+2 \mathrm{yz}=122xy+2xz+2yz=12下,求体积V\mathrm{V}V的最大值。
解: F(x,y,z,λ)=x3y2z+λ⋅(x+y+z−12)F(x, y, z, \lambda)=x^{3} y^{2} z+\lambda \cdot(x+y+z-12)F(x,y,z,λ)=x3y2z+λ⋅(x+y+z−12)
求偏导可得方程组
{3x2y2z+λ=02x3yz+λ=0x3y2+λ=0x+y+z−12=0\left\{\begin{array}{l}3 x^{2} y^{2} z+\lambda=0 \\ 2 x^{3} y z+\lambda=0 \\ x^{3} y^{2}+\lambda=0 \\ x+y+z-12=0\end{array}\right. ⎩⎨⎧3x2y2z+λ=02x3yz+λ=0x3y2+λ=0x+y+z−12=0
解得唯一驻点 (6,4,2), umux=6912u_{\operatorname{mux}}=6912umux=6912 。
由凸优化问题我们知道:
例如要求解minxf(x)\min_{x}{f(x)}minxf(x),那么就是解方程 ∇f(x)=0\nabla f(x) =0∇f(x)=0,最终的 x∗x^{\ast}x∗ 为最优解。
那么当有约束条件怎么呢?
拉格朗日法就是把一个有约束问题转换成一个无约束问题
优化问题一般有以下几种形式
minxf0(x)minxf0(x)maxxf0(x)s.t. fi(x)≤0,i=1,…,ms.t. fi(x)≥0,i=1,…,ms.t. fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,phi(x)=0,i=1,…,phi(x)=0,i=1,…,p\begin{array}{cllllll} \min _{x} & f_{0}(x) & \min _{x} & f_{0}(x) & \max _{x} & f_{0}(x) & \\ \text { s.t. } & f_{i}(x) \leq 0, \quad i=1, \ldots, m & \text { s.t. } & f_{i}(x) \geq 0, \quad i=1, \ldots, m & \text { s.t. } & f_{i}(x) \leq 0, \quad i=1, \ldots, m \\ & h_{i}(x)=0, \quad i=1, \ldots, p & & h_{i}(x)=0, \quad i=1, \ldots, p & & h_{i}(x)=0, \quad i=1, \ldots, p \end{array} minx s.t. f0(x)fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,pminx s.t. f0(x)fi(x)≥0,i=1,…,mhi(x)=0,i=1,…,pmaxx s.t. f0(x)fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p
最常用的是第一种,求最小值,约束为小于等于。
对于仅含等式约束的优化问题:
minf(x)s.t. hi(x)=0i=1,2,…,n\begin{array}{cl} \min & f(\boldsymbol{x}) \\ \text { s.t. } & h_{i}(\boldsymbol{x})=0 \quad i=1,2, \ldots, n \end{array} min s.t. f(x)hi(x)=0i=1,2,…,n
其中自变量 x∈Rn,f(x)\boldsymbol{x} \in \mathbb{R}^{n}, f(\boldsymbol{x})x∈Rn,f(x) 和 hi(x)h_{i}(\boldsymbol{x})hi(x) 均有连续的一阶偏导数。首先列出其拉格朗日函数:
L(x,λ)=f(x)+∑i=1nλihi(x)L(\boldsymbol{x}, \boldsymbol{\lambda})=f(\boldsymbol{x})+\sum_{i=1}^{n} \lambda_{i} h_{i}(\boldsymbol{x}) L(x,λ)=f(x)+i=1∑nλihi(x)
其中λ=(λ1,λ2,…,λn)T\boldsymbol{\lambda}=\left(\lambda_{1}, \lambda_{2}, \ldots, \lambda_{n}\right)^{\mathrm{T}}λ=(λ1,λ2,…,λn)T 为拉格朗日乘子。然后对拉格朗日函数关于 x\boldsymbol{x}x 求偏导,并令导数等于0再搭配约束条件 hi(x)=0h_{i}(\boldsymbol{x})=0hi(x)=0 解出 x\boldsymbol{x}x, 求解出的所有x\boldsymbol{x}x 即为上述优化问题的所有可能极值点。
拉格朗日函数与原始问题的关系
minxf0(x)s.t. fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p\begin{array}{cl} \min _{x} & f_{0}(x) \\ \text { s.t. } & f_{i}(x) \leq 0, \quad i=1, \ldots, m \\ & h_{i}(x)=0, \quad i=1, \ldots, p \end{array} minx s.t. f0(x)fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p
对应上面优化问题可以写为如下形式:
L(x,λ,ν)=f0(x)+∑i=1mλifi(x)+∑i=1pνihi(x)s.t. λi≥0,i=1,…,m\begin{aligned} \mathcal{L}(x, \lambda, \nu) &=f_{0}(x)+\sum_{i=1}^{m} \lambda_{i} f_{i}(x)+\sum_{i=1}^{p} \nu_{i} h_{i}(x) \\ \text { s.t. } \quad & \lambda_{i} \geq 0, \quad i=1, \ldots, m \end{aligned} L(x,λ,ν) s.t. =f0(x)+i=1∑mλifi(x)+i=1∑pνihi(x)λi≥0,i=1,…,m
λi\lambda_iλi和viv_ivi是两个拉格朗日乘子,由于fi(x)f_i(x)fi(x)是不等式约束,所以λi\lambda_iλi有约束条件必须大于0;hi(x)h_i(x)hi(x)是等式约束,viv_ivi没有约束。
上面式子等价于这个式子:
minxmaxλ,vL(x,λ,ν)s.t. λi≥0,i=1,…,m\begin{array}{rl} \min _{x} \max _{\lambda, v} & \mathcal{L}(x, \lambda, \nu) \\ \text { s.t. } & \lambda_{i} \geq 0, \quad i=1, \ldots, m \end{array} minxmaxλ,v s.t. L(x,λ,ν)λi≥0,i=1,…,m
【证明两式等价:】
记
θp(x)=maxλ,vL(x,λ,ν)s.t.λi≥0,i=1,…,m\theta_{p}(x)=\max _{\lambda, v} \mathcal{L}(x, \lambda, \nu) \\ s.t. \quad \lambda_{i} \geq 0, \quad i=1, \ldots, m θp(x)=λ,vmaxL(x,λ,ν)s.t.λi≥0,i=1,…,m
则θP(x)\theta_{P}(x)θP(x)y有以下性质:
θP(x)={f0(x)for xthat satisfied the origin constraint +∞otherwise \theta_{P}(x)=\left\{\begin{array}{ll}f_{0}(x) & \text { for } x \text { that satisfied the origin constraint } \\ +\infty & \text { otherwise }\end{array}\right. θP(x)={f0(x)+∞ for x that satisfied the origin constraint otherwise
验证上述性质:
- 若存在 x 使得某个 fi(x)>0f_{i}(x)>0fi(x)>0 则我们可令 0≤λi0 \leq \lambda_{i}0≤λi →+∞\rightarrow+\infty→+∞ , 进而有 θp(x)=+∞\theta_{p}(x)=+\inftyθp(x)=+∞
- 若存在 x 使得某个 hi(x)≠0h_{i}(x) \neq 0hi(x)=0 则我们可令 vihi(x)→+∞v_{i} h_{i}(x) \rightarrow+\inftyvihi(x)→+∞ , 进而有 θp(x)=+∞\theta_{p}(x)=+\inftyθp(x)=+∞
- 若 x∈{x∣∀i,vi,λi≥0,λifi(x)≤0,vihi(x)=0}x \in\left\{x \mid \forall i, v_{i}, \lambda_{i} \geq 0, \lambda_{i} f_{i}(x) \leq 0, v_{i} h_{i}(x)=0\right\}x∈{x∣∀i,vi,λi≥0,λifi(x)≤0,vihi(x)=0} 则有 maxλ,vL(x,λ,ν)=f0(x)\max _{\lambda, v} \mathcal{L}(x, \lambda, \nu)=f_{0}(x)maxλ,vL(x,λ,ν)=f0(x)
机器学习基础:拉格朗日乘子法相关推荐
- 机器学习--支持向量机(二)拉格朗日乘子法详解
上节我们从线性回归模型出发详细阐述了支持向量的来源,以及为什么需要寻找支持向量,如何找到这决策函数等问题,最后问题转化为下面的求最大值问题: 先说明一下分类就是如果: 则被分为 ...
- 机器学习中的数学——拉格朗日乘子法(一):等式约束的拉格朗日乘子法
分类目录:<机器学习中的数学>总目录 相关文章: ·拉格朗日乘子法(一):等式约束的拉格朗日乘子法 ·拉格朗日乘子法(二):不等式约束与KKT条件 拉格朗日乘子法是一种寻找多元函数在一组约 ...
- 转 机器学习系列 08:深入理解拉格朗日乘子法、KKT 条件和拉格朗日对偶性
深度理解拉格朗日乘子法.KKT条件与线性规划对偶理论的微妙关系 https://blog.csdn.net/benzhujie1245com/article/details/85270058?utm_ ...
- 机器学习知识点(六)增广矩阵求解拉格朗日乘子法的Java实现
基本的拉格朗日乘子法就是求函数f(x1,x2,...)在g(x1,x2,...)=0的约束条件下的极值的方法.其主要思想是将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得 ...
- 【java机器学习】支持向量机之拉格朗日乘子法解释
什么是拉格朗日乘子法 按照维基百科的定义,拉格朗日乘数法是一种寻找多元函数在其变量受到一个或多个条件的约束时的极值的方法.用数学式子表达为: 简单理解就是,我们要在满足 这个等式的前提下,求 函数的最 ...
- 机器学习中的数学——拉格朗日乘子法(二):不等式约束与KKT条件
分类目录:<算法设计与分析>总目录 相关文章: ·拉格朗日乘子法(一):等式约束的拉格朗日乘子法 ·拉格朗日乘子法(二):不等式约束与KKT条件 现在接着<拉格朗日乘子法(一):等式 ...
- 从拉格朗日乘子法到SVM
前言 本文主要是讲了如何构建SVM的模型,并利用KKT条件构造其对偶型,从而求解问题,并讲述了SVM的硬间隔,软间隔和核函数三个境界.主要参考了周志华的<机器学习>,并在其中补充了自己的想 ...
- 拉格朗日乘子法详解(Lagrange multiplier)
最近在视频的变换编码里推导最优变换(KL变换)时需要用拉格朗日乘子法,之前在机器学习的各种优化问题里也要用到这个方法,特此仔细钻研一番,总结如下: 注:这篇博客讲的很全面,这里部分参考了他的讲解. 注 ...
- 一文详解从拉格朗日乘子法、KKT条件、对偶上升法到罚函数与增广Lagrangian乘子法再到ADMM算法(交替方向乘子法)
最近看了ADMM算法,发现这个算法需要用到许多不少前备知识,在搜索补齐这些知识的过程中感觉网上的资料与总结在零散的同时又不够清晰,在此本文对这一块的内容进行汇总,同时表达自己的一些理解. 目录 拉格朗 ...
最新文章
- 如何用PyTorch进行语义分割?
- 《BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition》笔记
- php 发送post请求json,thinkphp ,php post发送json请求,就收post请求
- bash shell基础之二条件判断
- java tcp链接慢_jmeter tcp长连接性能测试
- 《LabVIEW 虚拟仪器程序设计从入门到精通(第二版)》一导读
- Modelsim SE 下载安装、注册详细教程
- BURP安装Turbo Intruder插件报错问题
- 做个聪明人,迅速提高你智商的22条途径
- pigxCloud微服务项目04——服务端——腾讯云即时通信IM,拉取群历史消息(全量消息、所有群消息)
- 体验一个人自驾游思考人生
- 线段树 +懒标记 + P3372 【模板】线段树 1
- 数据恢复(数据已经恢复)-附带软件Recoverit
- tp5和微信小程序联接mqtt订阅及发布
- 码元,码元速率,波特率,比特率,数据率的理解
- 手机号可以当邮箱使用吗?怎么申请注册手机号邮箱,登录入口在哪儿?
- DIV常用的几种边框样式!(转)
- 豆豆趣事[2015年08月]
- 马云最新演讲:真正的强者,是在最孤立无援的时刻,依然坚持到底
- java计算机毕业设计体育馆场内设施预约系统设计源代码+数据库+系统+lw文档