CCCP(convex-concave procedure)优化算法的一些理解
Convex-Concave procedure(凹凸过程)
CCCP是一种单调递减全局优化的方法。其形式可以表示为凸函数-凸函数 或者 凸函数+凹函数。
一、问题模型:DC(difference of convex)问题/规划
令f是一个DC函数,定义存在凸函数, g(x),h(x) :,使得f可以被分解为g和h之间的差值:
对于DC问题:
在这里对于是一个可导的DC函数。本文探讨使用CCCP算法来优化这一问题
二、CCCP
假设一个能量函数E(x),其Hessian矩阵(二阶偏导矩阵)有界,y写成形式。
下证明该优化形式以及过程是收敛的:
证明:∀F(x) 是凸的,Hessian 矩阵 > 0,由于其Hessian矩阵有界,所以>0,Hessian矩阵,则是凸的。所以 E(x)可以写成
其次,对于一个函数,则离散迭代CCCP算法为:
证明收敛:如果函数和分别为凸函数和凹函数,下为证明和示意图。
图中表示为两个凸函数 上面假设为E1,下面为E2,,本质上寻找两个凸函数之间梯度相同的两个点就是在逐步减小两个函数之间的距离,使其收敛到距离最接近的点。首先在E2找到一个x0,寻找E1中与x0梯度相同的点,投影到E2上,一直重复下去,直到收敛到最小距离的点(图中为5.0)。
根据以上理论,凹凸问题相减问题可以得到解决。首先在这个算法中,应该设置初始点,然后线性初始化凹陷部分函数,可以把设置为上面凸函数的解,通过迭代优化进行收敛,找到全局最优点。
结论:
在实际应用中,经常把两个函数利用线性约束/正则化写成两个凸函数相减的形式,进行优化。但是由于CCCP会有两层循环,一层优化,一层分别对凸函数进行梯度下降,程序速度会比较慢。待补充优化思想。
CCCP(convex-concave procedure)优化算法的一些理解相关推荐
- 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章
资料来源: <智能优化算法以及matlab实现>包子阳 余继周 编著 第五章-----蚁群算法 是一种元启发式优化算法(自己理解:就是作为群体的单位个体也就是元,在里面充当着随机的选择搜 ...
- 深度学习中的梯度下降优化算法综述
1 简介 梯度下降算法是最常用的神经网络优化算法.常见的深度学习库也都包含了多种算法进行梯度下降的优化.但是,一般情况下,大家都是把梯度下降系列算法当作是一个用于进行优化的黑盒子,不了解它们的优势和劣 ...
- 2.2)深度学习笔记:优化算法
目录 1)Mini-batch gradient descent(重点) 2)Understanding mini-batch gradient descent 3)Exponentially wei ...
- 深度学习(五)优化算法--提高神经网络的训练速度和精度
转自:https://blog.csdn.net/red_stone1/article/details/78348753 上节课我们主要介绍了如何建立一个实用的深度学习神经网络.包括Train/Dev ...
- 梯度下降优化算法概述
本文原文是 An overview of gradient descent optimization algorithms,同时作者也在 arXiv 上发了一篇同样内容的 论文. 本文结合了两者来翻译 ...
- 【最全干货】从SGD到NadaMax,十种机器学习优化算法原理及实现
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 作者丨永远在你身后@知乎 来源丨https://zhuanlan.zhihu.com/p/81 ...
- Pytorch框架的深度学习优化算法集(优化中的挑战)
个人简介:CSDN百万访问量博主,普普通通男大学生,深度学习算法.医学图像处理专攻,偶尔也搞全栈开发,没事就写文章,you feel me? 博客地址:lixiang.blog.csdn.net Py ...
- 算法组合 优化算法_算法交易简化了风险价值和投资组合优化
算法组合 优化算法 Photo by Markus Spiske (left) and Jamie Street (right) on Unsplash Markus Spiske (左)和Jamie ...
- 收藏 | 从SGD到NadaMax,深度学习十种优化算法原理及实现
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨永远在你身后@知乎 来源丨https://zhuanl ...
最新文章
- Mac 10.12安装Office 2011
- Spring Boot 2.x基础教程:使用Flyway管理数据库版本
- 4-1 复数类的运算符重载
- 鹅厂是如何使用 Git 的?看这!
- Ubuntu 源列表
- JEESZ分布式架构3--CentOs下安装MySQL(环境准备)
- SQL删除数据表中指定列重复的数据
- python : 正确复制列表的方法
- html同时用多个css,多类选择器的运用_html/css_WEB-ITnose
- 常用的140个Windows XP设置 [转]
- 判断浏览器的cookie是否开启
- uni-app项目打包成apk(本地打包篇)
- ESP8266/ESP-01固件下载方法
- [09-Dec-2012] 《少年pi的奇幻之旅》 -推荐
- ERP基础数据 金蝶
- 10----编程分苹果
- 【raspberrypi】树莓派官方7寸屏入门指南
- 华为2018勇敢星实习招聘机试题
- 量子革命?脑机接口?电子皮肤?我看了一次高质量科学大会
- 总结组合数的几种求法(模板)