本文共 2932 字,大约阅读时间需要 9 分钟。
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本文转自:深度学习这件小事
在求解一个优化问题时,我们可以采用不同的优化方法,而这些方法又可以从不同角度去理解。这篇文章我想讲下如何从算子角度出发去理解许多已存在的优化方法。有错误的地方欢迎大家指出来。
我们考虑一个非线性映射的零点问题,也就是求解一个 使得非线性映射
满足
这个怎么和优化问题联系起来呢,大概是三个角度:
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“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
转载地址:http://tsaq.baihongyu.com/