当前位置: 首页 > 编程日记 > 正文

最优化:拉格朗日乘子法

作者:桂。

时间:2017-03-27 20:26:17

链接:http://www.cnblogs.com/xingshansi/p/6628785.html 

声明:欢迎被转载,不过记得注明出处哦~


【读书笔记06】

前言

看到西蒙.赫金的《自适应滤波器原理》第四版第四章:最速下降算法。最速下降法、拟牛顿法等都是求解准则函数(即无约束优化问题)的算法,这就需要有一个前提:怎样得到无约束准则函数?联想到之前看维纳滤波:无约束维纳滤波、约束维纳滤波,提到了拉格朗日乘子,将有限制条件的优化问题转化为无限制的优化问题,可见拉格朗日乘子搭建了一个桥梁:将有限制的准则函数,转化为无限制准则函数,进而借助最速下降法、拟牛顿法等求参算法进行求解,在这里汇总一下拉格朗日乘子法是有必要的,全文包括:

1)含有等式约束的拉格朗日乘子法;

2)拉格朗日对偶方法;

内容为自己的学习记录,其中多有参考他人,最后一并给出链接。

一、含有等式约束拉格朗日乘子法

对于含有约束的优化问题,可以在约束域内对准则函数搜索最优解,但如果约束较为复杂搜索起来显然不那么容易,如果借助某种方式将约束问题转化为无约束问题,求解则更为方便一些,这也是拉格朗日乘子法的魅力所在。本段内容为维纳滤波一文的开头部分。

  A-只含一个等式约束的最优化

实函数$f\left( {\bf{w}} \right)$是参数向量${\bf{w}}$的二次函数,约束条件是:

${{{\bf{w}}^H}{\bf{s}} = g}$

其中$\bf{s}$是已知向量,$g$是复常数。例如在波束形成应用中${\bf{w}}$表示各传感器输出的一组复数权值,$\bf{s}$是一个旋转向量。假设该问题是一个最小化问题,令$c\left( {\bf{w}} \right) = {{\bf{w}}^H}{\bf{s}} - g = 0 + j0$可以描述为:

所谓拉格朗日乘子法,就是引入拉格朗日乘子:将上述约束最小化问题转化为无约束问题,定义一个新的实函数:

$h\left( {\bf{w}} \right) = f\left( {\bf{w}} \right) + {\lambda _1}{\mathop{\rm Re}\nolimits} \left[ {c\left( {\bf{w}} \right)} \right] + {\lambda _2}{\mathop{\rm Im}\nolimits} \left[ {c\left( {\bf{w}} \right)} \right]$

现在定义一个复拉格朗日乘子:

$\lambda  = {\lambda _1} + {\lambda _2}$

$h({\bf{w}})$改写为:

$h\left( {\bf{w}} \right) = f\left( {\bf{w}} \right) + {\mathop{\rm Re}\nolimits} \left[ {{\lambda ^*}c\left( {\bf{w}} \right)} \right]$

至此,无约束优化问题转化完成,利用偏导求参即可,其实这是一个简化的形式,分别求解$\lambda _1$、$\lambda _2$也是一样的。

  B-包含多个等式约束的最优化

实函数$f\left( {\bf{w}} \right)$是参数向量${\bf{w}}$的二次函数,约束条件是:

${{{\bf{w}}^H}{\bf{s_k}} = g_k}$

其中$k = 1,2...K$,方法同单个约束情况相同,求解伴随方程:

$\frac{{\partial f}}{{\partial {{\bf{w}}^*}}} + \sum\limits_{k = 1}^K {\frac{\partial }{{\partial {{\bf{w}}^*}}}\left( {{\mathop{\rm Re}\nolimits} \left[ {\lambda _k^*{c_k}\left( {\bf{w}} \right)} \right]} \right)}  = {\bf{0}}$

此时与多个等式约束联合成方程组,这个方程组定义了${\bf{w}}$和拉格朗日乘子${\lambda _1}$、${\lambda _2}$...${\lambda _K}$的解。

如果含有不等式约束,或者说既有等式约束、又有不等式约束呢?

二、拉格朗日对偶问题(Lagrange duality)

  A-原始问题

给出约束优化问题模型:

其中${h_i}\left( x \right) = 0,\;i = 1,...q$也可写成矩阵形式:${\bf{Ax}} = {\bf{b}}$.该模型为原始问题

该模型利用拉格朗日乘子可以松弛为无约束优化问题:

$\min \;\;L\left( {x,\lambda ,v} \right) = {f_0}\left( x \right) + \sum\limits_{i = 1}^m {{\lambda _i}{f_i}\left( x \right) + \sum\limits_{i = 1}^q {{v_i}{h_i}\left( x \right)} } $

该模型为对偶问题。约束${{\lambda _i}} \ge 0$,则$\sum\limits_{i = 1}^m {{\lambda _i}{f_i}\left( x \right)}  \le 0$,即:

$L\left( {x,\lambda ,v} \right) \le {f_0}\left( x \right)$

为了逼近$f_0(x)$,首先针对${\lambda ,v}$对其最大化:

但由于该问题只是对${\lambda ,v}$的约束,无法避免违反约束$f_i(x)>0$,从而导致$J_1(x)$无穷大:

可以看出将$J_1(x)$极小化即可得解:

这是原始约束极小化问题变成无约束极小化问题后的代价函数,简称原始代价函数。定义原始约束极小化问题的最优解:

这就是原始最优解(Optimal primal value).

给出两点凸函数性质:

性质1:无约束凸函数$f(x)$的任何局部极小点$x^*$都是该函数的一个全局极小点;

性质2:如果$f(x)$是强凸函数,则极小化问题$\min f(x)$可解,且其解$x$唯一。

但这里存在一个问题:如果$f_0(x)$不是凸函数(也非凹),便没有性质1、性质2,即使设计了优化算法,可以得到某个局部极值点,但不能保证它是一个全局极值点。

如果可以:将非凸目标函数的极小化转换成凹目标函数的极大化,局部极值点便是全局极值点。实现转换的手段便是——对偶方法。

  B-对偶方法

考虑构造另一个目标函数:

这个模型是原问题的对偶问题,根据上式:

得到对偶目标函数:

由此可见:${J_D}\left( {\lambda ,v} \right)$是$x$的凹函数,即使$f_0(x)$不是凸函数(凹函数同理,本文仅以凸为例).此时任何一个局部极值点都是一个全局极值点。至此:原约束极小化问题转化为对偶目标函数的无约束极大化算法设计,这一方法就是:拉格朗日对偶法

记对偶目标函数最优值(简称对偶最优值)为:

${d^*} = {J_D}\left( {{\lambda ^*},{v^*}} \right)$

给出两点性质:$\max$为凸函数,$\min$为凹函数,与$f(.)$内部形式无关。

性质1:函数$f\left( x \right) = \max$ { ${x_1},{x_2},...,{x_n}$} 在${{\bf{R}}^n}$上是凸函数。

证明

对任意$0 \le \theta \le 1$,函数$f(x) = \max_i x_i$满足:

性质2:函数$f\left( x \right) = \min$ { ${x_1},{x_2},...,{x_n}$} 在${{\bf{R}}^n}$上是凹函数。

证明与上同。

  C-对偶目标函数与原目标函数关系

首先写出原最优值与对偶最优值的关系:

字面理解:瘦子里的胖子,体重不会超过胖子里的瘦子。分析其理论:

对于极值点$x^*$,恒有:

可以看出$\mathop {\min \;}\limits_x L\left( {x,\lambda ,v} \right)$是$p^*$的下界,而$d^*$自然是下界中最大的那个(最接近原始最优解):

事实上对任何一个非负实值函数$f(x,y)$,总有:

既然是下界,就必然有差距,定义$p^*-d^*$为对偶间隙(duality gap).我们称${p^*} \ge {d^*}$为弱对偶性(weak duality).

  D-Slater定理

首先给出凸优化定义:

形式:

其中$h_i(x)$是形如$h_i(x) = a^{T}_ix = b_i$的仿射函数。相对上面讨论的优化问题,凸优化问题有三个附加要求:

  • 目标函数必须是凸的;
  • 不等式函数约束必须是凸的;
  • 等式约束必须是仿射的;

凹凸可以转化:对于凹函数$f$,$-f$即为凸函数。

与weak duality对应的是strong duality(强对偶性):${p^*} = {d^*}$,给出Slater定理:

如果原不等式优化问题为凸优化问题,且满足Slater条件:

  • $f_i(x) < 0$,$i=1,2,...,m$;
  • $h_i(x) = 0$,$i=1,2,...,q$;

则${p^*} = {d^*}$。

  E-KKT条件

首先给出KKT(Karush-Kuth-Tucker,KKT)条件:

1)、2)、3)都容易理解,对于4)主要是防止$f_i(x)>0$的出现,从而设置一个障碍;5)因为$x^*$是最优值,只要偏导存在,该式成立——平稳点存在。

可以得出:

对于一般性优化问题

  • KKT是原问题转化为对偶优化问题的必要条件(局部极小解一阶必要条件);
  • 如果约束条件满足凸优化定义,仅仅$f_0(x)$为一般函数,则 原问题准则函数 和 对偶准则函数 的极值点通常不一致。

对于凸优化问题

  • 满足KKT条件的店,那么它们分别是 原问题准则函数对偶准则函数 的极值点并且 strong duality 成立。

证明可以参考:pluskid大神的文章。

总结一下:

  1. 对偶问题可以将准则函数转化为凸函数;
  2. KKT为凸优化判定提供了依据;
  3. 对偶转化、KKT以及Slater并不限于凸优化问题。

参考:

  • 张贤达:矩阵分析与应用
  • http://blog.pluskid.org/?p=702

转载于:https://www.cnblogs.com/xingshansi/p/6628785.html

相关文章:

在Asp.Net中从sqlserver检索(retrieve)图片

介绍&#xff1a;这篇文章是我写的"如何把图片存入sqlServer中"的后续。我建议你在读这篇文章之前先看看那篇。和存储图片相比&#xff0c;读取图片就要简单多了。输出一副图片我们要做的就是使用Response对象的BinaryWrite方法。同时设置图片的格式。在这篇文章中&a…

华为鲲鹏产业生态加速算力升级,企业数字化转型在山西吹响号角

2020年&#xff0c;新基建风口已至&#xff0c;建设数字基础设施&#xff0c;打造数字产业生态是其关键与核心&#xff0c;而算力底座将成为其重要的运行支撑。数字化浪潮大背景下&#xff0c;鲲鹏计算产业生态&#xff0c;充满巨大的想象与发展空间。从企业数字化转型角度来看…

隐藏TabBar

在项目中经常遇到隐藏tabBar,实力很多种方法&#xff0c;可以解决不同情况下问题1&#xff1a;//隐藏tabBar WebViewController *webVc [[WebViewController alloc] init]; webVc.hidesBottomBarWhenPushed YES; [self.navigationController pushViewController:web…

Linux下安装JDK和Eclipse

安装Eclipse时前需要确保系统中已经具备Java运行环境&#xff0c;本文以干净系统初次安装Eclipse为例&#xff0c;同时安装JDK和Eclipse. 1.下载JDK压缩包&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/index.html  假设保存位置为&#xff1a;/hom…

如何在ASP.Net 中把图片存入数据库

介绍 可能有很多的时候&#xff0c;我们急需把图片存入到数据库当中。在一些应用程序中&#xff0c;我们可能有一些敏感的资料&#xff0c;由于存储在文件系统&#xff08;file system&#xff09;中的东西&#xff0c;将很容易被某些用户盗取&#xff0c;所以这些数据不能存…

人类偏好的“可塑性”,从博弈说起

作者 | 斯图尔特罗素来源 | 《AI新生》出品 | AI科技大本营经济学家通过为人类受试者提供选择来套取他们的偏好。该技术广泛应用于产品设计、营销和交互式电子商务系统中。例如&#xff0c;汽车设计师向受测试者提供具有不同油漆颜色、座位安排、后备厢大小、电池容量、杯架等选…

基于python的一个运维自动化的项目(进度更新)【已开源】

文章已经转到 http://xiaorui.cc 个人博客里&#xff0c;欢迎浏览 !!!交流Python & Golang 可以加群 278517979 .

关于Android方法数量限制的问题

限制Android方法数量的原因是&#xff1a; Android应用以DEX文件的形式存储字节码文件&#xff0c;在Dalvik字节码规范里&#xff0c;方法引用索引method referenceindex只有16位,即65536个。 Op & Format Mnemonic / Syntax Arguments 6e..72 35c invoke-kind {vC, vD…

asp.net中显示DataGrid控件列序号的几种方法

在aps.net中多数据绑定的控件很多&#xff0c;论功能来说&#xff0c;应该属DataGrid最为齐全&#xff0c;但它没有提供现成的显示记录序号的功能&#xff0c;不过我们可以通过它所带的一些参数来间接得到序号&#xff0c;下面来看看怎样得到和显示序号值计算方式如下&#xff…

一口气看完45个寄存器,CPU核心技术大揭秘

作者 | 轩辕之风O来源 | 编程技术宇宙头图 | CSDN下载自视觉中国自1946年冯诺伊曼领导下诞生的世界上第一台通用电子计算机ENIAC至今&#xff0c;计算机技术已经发展了七十多载。从当初专用于数学计算的庞然大物&#xff0c;到后来大型机服务器时代&#xff0c;从个人微机技术蓬…

用友公司Java面试题(含答案)

为什么80%的码农都做不了架构师&#xff1f;>>> 用友公司Java面试题&#xff08;含答案&#xff09; 1.Hashtable和HashMap有什么区别&#xff1f; a.Hashtable是继承自陈旧的Dictionary类的&#xff0c;HashMap继承自AbstractMap类同时是Java 1.2引进的Map接口…

使用memcache做web缓存

为什么80%的码农都做不了架构师&#xff1f;>>> 下载: memcached server [密码: vTI8, 安装启动和调用, 内部有说明] 下载: python-memcached 1.57 现在准备用web.py写个网站, 缓存这块一直没想好用哪个, 今天终于想好了, 直接用memcache # coding: utf-8import me…

Asp.net中DataGrid控件的自定义分页

使用实现起来虽然比较方便&#xff0c;但是效率不高&#xff0c;每次都需要读取所有页&#xff08;整个记录集&#xff09;&#xff0c;而加载的只是其中一页&#xff0c;造成了资源的浪费&#xff0c;记录多又会使效率变得很低。下面通过DataGrid的自定义分页功能来减少资源使…

实战:在Windows Server2008上配置NLB

1.1 在Windows Server2008上配置NLB 试验环境&#xff1a; DCServer是ESS.COM域的域控制器。 Fileserver和Research属于ESS.COM域&#xff0c;安装有Windows Server 2008企业版。 Sales计算机是ESS.COM域的成员&#xff0c;安装Vista企业版。 试验要求&#xff1a; 实现FileSer…

无人驾驶矿山赛道单笔最大融资:踏歌智行完成2亿元B轮融资

10月30日&#xff0c;矿山无人驾驶运输企业踏歌智行完成了2亿元的B轮融资&#xff0c;本轮融资由前海母基金和宝通投资共同领投&#xff0c;清研资本、蓝焱资本等跟投。踏歌智行继2019年连续完成三轮融资后&#xff0c;再创行业新高。据了解&#xff0c;踏歌智行2019年签订了超…

Python加密—RSA加密

为什么80%的码农都做不了架构师&#xff1f;>>> 公钥加密&#xff0c;私钥解密。 import rsa import base64 from Crypto.PublicKey import RSA # RSA加密解密pubkey -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCcB4zYqi3mjdP3E2f9jyPuF0X…

在asp.net中为Web用户控件添加属性和事件

在90年代初&#xff0c;Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程。它可以利用十分易用的模型在Web服务器上动态生成HTML&#xff0c;并且很容易的实现了对数据库的访问&#xff0c;就当时来说&#xff0c;这是一项多么吸引人的技术&#x…

1024 鲲鹏开发者技术沙龙·福州站圆满收官!给程序员的福利你收到了吗?

10月24日&#xff0c;由华为技术有限公司与福建鲲鹏生态创新中心联合主办的“1024鲲鹏开发者技术沙龙”在福州顺利举行。在沙龙上&#xff0c;来自福建鲲鹏生态创新中心运营总监宋宗佑为活动进行致辞&#xff0c;福建鲲鹏生态创新中心生态总监朱晓彤对鲲鹏生态创业中心进行介绍…

IPsec ××× 配置實例

試驗top:ipsec ***的配置包括一下幾個步驟:1.配置ike的協商2.配置ipsec的協商3.配置端口的應用4ike的調試和排錯按照步驟建立ike 的協商策略和參數R1<config>#crypto isakmp policy 編號<1-10000>編號越低優先級越高#hash { md5 | sha1 } 此命令表明設置密匙認…

springMVC参数绑定与数据回显

简单例子&#xff1a;修改商品信息的jsp页面&#xff1a; 参数绑定过程&#xff1a; 1.2.1 默认支持的参数类型 处理器形参中添加如下类型的参数处理适配器会默认识别并进行赋值。 1.1.1 HttpServletRequest 通过request对象获取请求信息 1.1.2 HttpServletResponse 通…

使用Qt编写模块化插件式应用程序

动态链接库技术使软件工程师们兽血沸腾&#xff0c;它使得应用系统&#xff08;程序&#xff09;可以以二进制模块的形式灵活地组建起来。比起源码级别的模块化&#xff0c;二进制级别的模块划分使得各模块更加独立&#xff0c;各模块可以分别编译和链接&#xff0c;模块的升级…

datagrid的正反双向排序

在asp.net中利用datagrid控件按列进行排序很是方便。可是我们只能单项排序&#xff01;如果我们需要正反排序那么就需要加入一些代码控制一下。 首先我们需要将datagird控件的属性设置为 AllowSorting"True"&#xff0c;且需要排序列需要制定排序表达式 eg: SortExpr…

比Python 3.8快20%,Pyston v2正式发布

作者 | 写代码的明哥来源 | Python编程时光头图 | CSDN付费下载于视觉中国Pyston 自从 2017 年发布 0.6.1 版本后&#xff0c;已经淡出了人们的视线三年多了&#xff0c;导致现在新人都很少听过它的大名。前两天&#xff08;2020年10月28日&#xff09;Pyston 在官方博客上&…

基于Netty实现的轻量级分布式服务框架

对分布式技术比较感兴趣&#xff0c;于是在闲暇时间写了一个简单的RPC框架娱乐一下&#xff0c;项目持续更新中...... GitHub项目地址: Pudding 如果感觉Pudding对你有帮助可以顺手点个Star哦......哈哈 直接看一下示例代码吧 第一步: 启动注册中心 public class RegistryTest…

在分页状态下删除纪录的问题

在使用DataGrid分页的时候&#xff0c;正常情况下&#xff0c;绑定数据库列表纪录时会自动产生分页的效果&#xff0c;然而我发觉在删除纪录的时候总会发生"无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。"的异常&#xff0c;其实解决这个问题很简…

老码农90%的程序猿都是瞎努力,这份路线教你成为高手!

数据正在变得越来越常见&#xff0c;小到我们每个人的社交网络、消费信息、运动轨迹……&#xff0c;大到企业的销售、运营数据&#xff0c;产品的生产数据&#xff0c;交通网络数据……如何从海量数据中获得别人看不见的知识&#xff0c;如何利用数据来武装营销工作、优化产品…

android 365手机秘书源代码

2019独角兽企业重金招聘Python工程师标准>>> 应用到的知识还算挺多的&#xff0c;网络编程&#xff0c;xml解析&#xff0c;通知&#xff0c;广播&#xff0c;联系人&#xff0c;服务等&#xff0c;希望对新手有帮助 运行环境&#xff1a; 在android 2.3.3 运行…

centos安装及网络配置

感谢老师传授&#xff0c;共同学习&#xff01;谢谢&#xff01;仅供自己日后复习之用&#xff01;centos安装关键点&#xff1a;创建分区&#xff1a;/ 系统分区/boot 启动分区SWAP 交换分区&#xff0c;虚拟内存。主要是缓解物理内存不足。虚拟化软件&#xff1a;VMware work…

使用DataGrid动态绑定DropDownList

简单的使用模板列绑定DropDownList&#xff0c;初学者想必都会了&#xff0c;但有时候&#xff0c;我们要做的就是在编辑的时候想让某一列定制为DropDownList&#xff0c;并且根据正常情况下显示的值自动变换DropDownList中所选的值&#xff0c;然后保存选择后的值到数据库或XM…

隐私数据在隐私AI框架中的安全流动

作者 | Rosetta技术团队责编 | 晋兆雨出品 | AI科技大本营本文中&#xff0c;我们将介绍为了保护用户的隐私数据&#xff0c;在隐私 AI 框架的计算任务全流程中&#xff0c;数据是如何以密文形式流动&#xff0c;同时仍正确完成加法、乘法等计算步骤的。隐私 AI 系统存在的目…