从算子角度理解优化方法
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本文转自:深度学习这件小事
在求解一个优化问题时,我们可以采用不同的优化方法,而这些方法又可以从不同角度去理解。这篇文章我想讲下如何从算子角度出发去理解许多已存在的优化方法。有错误的地方欢迎大家指出来。
我们考虑一个非线性映射的零点问题,也就是求解一个 使得非线性映射 满足
这个怎么和优化问题联系起来呢,大概是三个角度:
1. 对于无约束凸问题,其最优解等价于求解梯度等于零,这时的 就是其梯度。
2. 对于约束优化问题,我们可以转化为一个无约束的对偶问题,这时的A就是对偶问题的梯度
3. 仍然是约束优化问题,我们可以求解其KKT系统,这时的A就是由KKT条件组成的一个非线性方程组。
求解问题(1)的方法就是稳定点迭代,也就是找一个算子 ,迭代去寻找解:
这个 要满足一些条件。
1. 问题(1)的解 是算子 的稳定点,也就是满足
2. 上述迭代可以收敛到稳定点,或者收敛的速度怎么去分析,这需要 满足一些性质,比如nonexpansive,contractive,averaged operator等. 这些性质是分析稳定点迭代收敛性的关键。
开始我们讲了问题(1)怎么和优化问题联系起来,接着我们讲下稳定点迭代怎么和优化方法联系起来。这里介绍了 的几种情况,然后说明其如何应用到优化问题中去。关于收敛性的东西不讲。
1.Forward operator:
1.1.考虑凸问题
这个问题可以转化为 。令 ,我们应用forward operator去求解该方程
这就是梯度算法。
1.2.考虑线性约束问题
因为是约束问题,所以不能用梯度等于0去求解,一个思路就是分析其对偶问题。该问题的对偶问题为
令 ,这等价于求解 。那么forward operator 就是
关键在于次梯度怎么求,在我之前文章(邓康康:原始对偶角度下的几类优化方法)中有提到过:
其中, 为拉格朗日函数。所以迭代(7)等价于
这就是dual descent method, 或者叫Uzawa method。
2. Backward operator:
这个算子也叫resolvent operator。首先推导下稳定点迭代:
整合一下得到: ,而这就等价于找到一个 满足
这就是proximal point iteration。接下来我们将该算子应用到上面讲到的A的三种情况。
2.1. 还是考虑问题(3),我们运用这个算子得到:
这等价于
整合一下我们知道
这就是临近点算法。
2.2.接下来关注问题(5)的对偶问题
,令 。那么backward operator 就是
这等价于一下迭代过程:
其中 ,这个推导过程见(邓康康:原始对偶角度下的几类优化方法),这就是增广拉格朗日方法。
2.3. 仍然是考虑问题(5),但这次我们考虑的是其KKT系统
首先问题(5)kkt条件可以表示为:
我们令 ,那么backward operator的稳定点迭代为:
根据(9)式,我们知道上述迭代等价于寻找 使得满足
从第二行得到:
从第一行得到:
把(13)中的 代到(14)得到:
这等价于
总结一下(13)和(16)得到最终迭代形式为:
这个方法叫做临近增广拉格朗日方法。
前面讲的都是求解问题 。接下来考虑两个的情况,也就是:
我们用到的算子叫做分裂算子。
3.Forward backward splitting
这个算子很好理解,就是前面讲到的两个算子的组合。具体形式为:
考虑可分得优化问题:
其中 是一个光滑函数。这个问题等价于找到 满足
我们令 ,这样就可以运用Forward backward算子:
有了前面两节的讨论,我们知道:
是一个梯度迭代,
是一个临近点迭代。
所以结合起来得到:
这就是临近梯度算法。
4.Douglas-Rachford splitting
为了简洁,我用 和 分别表示基于A,B的backwood operator。那么Douglas-Rachford splitting可以表示为:
考虑可分问题:
他的对偶问题是:
其中
我们令 ,这样就可以应用Douglas-Rachford splitting:
拆分一下:
再引入一个新的变量
再引入
根据前面backward operator的推导,我们知道临近点迭代等价于增广拉格朗日方法,所以第一行就等价于:
将 代入第二行得到: 类似的第二行就等价于:
最后再看下第三行:
代入到(19)的 更新中:
现在我们把 的更新放在一起:
这就是ADMM算法。
5.Peaceman-Rachford splitting
这个算子的稳定点迭代等价于对称ADMM方法。也就是:
这个方法我第一次见是在何炳生老师(我老师的老师)的一个讲座上,用变分不等式的框架去分析的,还举了个挑担子的例子,说两边一样重(对称)才能跑得快,印象深刻。
总结
1. 这些算子怎么来的呢?用forward来举例吧,我们本来要求 ,这等价于 ,然后令右边的为 ,左边为新的迭代点 ,这样就得到了forward算子。其他的类似,都是这种思想去得到的,但也不能乱来。。你要满足一些性质,不然收敛不了的。
2. 可能有些人会困惑,为什么这些算子的稳定点迭代刚好就对应于一个已知的优化方法呢,到底是算子先出来还是这些优化方法先出来,在提出二者的时候,是独立的还是参考了对方,我也困惑。。比如临近点迭代应用到对偶问题为什么刚好就是增广拉格朗日方法。。这纯属巧合吗,如果是这样,那数学太美了
3. 上面提到的都是一阶算法,其实也可以用牛顿法去做,刚才说到的很多问题可以转化为求解 ,进而我们又可以去设计一个算子 ,并且最优解满足 。那么我可以直接应用牛顿法去求解这两类非线性方程组。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
从算子角度理解优化方法相关推荐
- 一阶动量与二阶动量的角度理解优化
对于一阶动量与二阶动量的理解: 我的理解是一阶动量为过去各个时刻梯度的线性组合,而二阶动量自然是过去各个时刻梯度的平方的线性组合.举个例子:我们取 为最近两个时间步的加权和,如(这里的加权值之和不一定 ...
- 谷歌Deep Bootstrap Framework:在线优化角度理解神经网络
The Deep Bootstrap Framework: Good Online Learners are Good Offline Generalizers(ICLR21) 一元@炼丹笔记 理解深 ...
- 【论文解读】解读TRPO论文,深度强化学习结合传统优化方法
导读:本论文由Berkeley 的几位大神于2015年发表于 JMLR(Journal of Machine Learning Research).深度强化学习算法例如DQN或者PG(Policy G ...
- 从动力学角度看优化算法:为什么学习率不宜过小?
©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP.神经网络 本文的主题是"为什么我们需要有限的学习率",所谓"有限",指的是不 ...
- 从动力学角度看优化算法:GAN的第三个阶段
作者丨苏剑林 单位丨追一科技 研究方向丨NLP,神经网络 个人主页丨kexue.fm 在对 GAN 的学习和思考过程中,我发现我不仅学习到了一种有效的生成模型,而且它全面地促进了我对各种模型各方面的理 ...
- 阿里达摩院提出新型优化方法,一行代码即可替换现有优化器
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟 报道 | 公众号 CVLianMeng 转载于 :机器之心 AI博士笔记系列 ...
- 深入探索多线程优化方法
前言 什么是线程的概念我就不在介绍,不懂的自行百度,我想百分之九十九的人都是知道的,至于多线程,通俗的就是有很多的线程在一起工作从而完成某一件事,从而提升效率.这就是使用多线程的好处之一,举个列子,一 ...
- 性能计数器驱动_Linux CPU性能优化方法
在Linux系统中,由于成本的限制,往往会存在资源上的不足,例如 CPU.内存.网络.IO 性能.本文,就对 Linux 进程和 CPU 的原理进行分析,总结出 CPU 性能优化的方法. 1. 分析手 ...
- 【Column Generation思考-02】|从对偶的角度理解Cutting Stock Problem【更新版本】
[Column Generation思考-01]|从对偶的角度理解 Cutting Stock Problem简介 Cutting Stock Problem的Column generation re ...
最新文章
- java 中调用docker_如何通过Java程序执行docker命令
- 为什么要破坏JVM的双亲委派模型
- 95-30-015-Channel-AbstractNioMessageChannel
- C# Azure 存储-队列
- 如何为自定义的控件在工具箱中自定义个性化的图标
- Atitit 数据库 负载均衡 方法总结 目录 1. 对称模型负载均衡 vs 非对称模型	2 1.1. 业务分离法	2 1.2. App + db分布式分离法	2 2. 负载均衡算法	2 2.1.
- Idea搭建springcloud(一)---服务注册与发现之Eureka
- 一款可视化低代码编程平台开源了!
- 2022年全新UI聚合支付系统四方源码+修复BUG完美版
- 黑苹果10.15.7安装comfast永存,CF-811AC驱动方法
- 计算机网络之无线与移动网络-蜂窝网络
- linux与测试程序下载,Linux测试上行和下载速率
- Jenkins的分布式构建及部署(master~slaver)
- linux 内核 禁止抢占,内核抢占实现(preempt)
- 后来的我们都老了——看《后来的我们》
- chrome打开html文件显示不全,谷歌浏览器显示不全怎么办_chrome浏览器打开的网页显示不完整如何解决-win7之家...
- ZGF建筑事务所公布波特兰国际机场新航站楼设计方案,木构屋顶展现自然景观
- iOS开发之AVPlayer的精彩使用---网易新闻视频播放界面的另类实现
- U盘杀毒后文件不见/找回
- 如何成为一名合格的DBA
热门文章
- Logger 日志输出请使用占位符 {}
- 性能调优就是程序员的生命,火爆全网的性能调优实战手册,出手自腾讯 T4 大能,实在宝藏。
- 曹三的《流血的仕途》出书了
- 【图论算法】深度优先搜索的应用
- Android Java调用cocos2d-js传参
- Mysql5.7的初始化及配置
- 华为机考攻略(python)--查找排序【7题】(第三题HJ27查找兄弟单词)
- 删库跑路?你应该看看腾讯云数据库
- oppo android多大内存,友盟+发布移动应用性能体验报告:安卓阵营OPPO崩溃率最低...
- Dynabook笔记本电脑无法开机怎么重装新系统?