凸函数和非凸函数,以及三大经典算法比较

您所在的位置:网站首页 指示函数是凸函数吗 凸函数和非凸函数,以及三大经典算法比较

凸函数和非凸函数,以及三大经典算法比较

2023-06-06 10:25| 来源: 网络整理| 查看: 265

凸(convex): 指的是顺着梯度方向走到底就 一定是 最优解 。大部分 传统机器学习 问题 都是凸的。 非凸(Non-convex): 指的是顺着梯度方向走到底只能保证是局部最优,不能保证 是全局最优。深度学习以及小部分传统机器学习问题都是非凸的。

1.集合的凸和非凸看任意连线有没有不在区域内,函数则有公式:f((x_{1}+x_{2}/2)\leqslant (f(x_{1})+f(x_{2}))/2

Convex or Non-Convex

 

任何局部最优解即为全局最优解。通常使用一个局部优化算法,如贪婪算法(Greedy Algorithm)或梯度下降算法(Gradient Decent)来计算局部最优解。

实际问题中,判断是否凸优化问题可以参考以下几点:

目标函数f ff如果不是凸函数,则不是凸优化问题。 决策变量x xx中包含离散变量(0-1变量或整数变量),则不是凸优化问题。 约束条件写成g ( x ) ≤ 0 g(x)\le0g(x)≤0时,g gg如果不是凸函数,则不是凸优化问题。 常见的凸优化问题:

1. 线性规划(LP, Linear Programming):

2. 二次规划(QP, Quadratic Programing):

3. 二次约束的二次规划(QCCP, Quadratically Contrained Quaratic Programing):

4. 半正定规划(SDP, Semidefinite Programing):

非凸优化:

通常情况下较难求解,可行域集合可能存在无数个局部最优点,求解全局最优算法复杂度是指数级(NP hard)。

因为非凸优化的难度较高,可以考虑将非凸优化转化为凸优化问题解决:

修改目标函数,使之转化为凸函数。抛弃一些约束条件,使新的可行域为凸集并且包含原可行域。

那什么又是梯度下降法呢,梯度就是最快、最大的“方向导数”,如以下公式:

 GA、SA、PSO三种算法的区别:

遗传算法

​ 全局搜索能力强,局部搜索能力较弱,往往只能得到次优解而不是最优解。

​ 研究发现,遗传算法可以用极快的速度达到最优解的90%以上,但是要达到真正的最优解需要花费很长时间,即局部搜索能力不足。

遗传算法步骤:

遗传算法的基本步骤包括:

初始化种群:根据问题的特性和要求,随机生成一定数量的解,作为初始的种群。评估适应度:根据问题的评价函数,对每个解进行适应度评估,用于后续的选择和遗传操作。选择操作:按照适应度大小,选择出一定数量的个体,作为下一代种群的父代。遗传操作:通过交叉、变异等操作,生成下一代种群的子代。重复步骤2~4,直到满足停止条件(如达到一定代数、找到最优解等)。

==差分进化算法==(相较于遗传算法)

鲁棒性更强、收敛速度更快,但是全局优化搜索能力不如遗传算法

==粒子群算法==

搜索速度快,参数设置容易,但是极其容易陷入局部最优解,因此一般需要使用期改进方法避免陷入局部最优解。

粒子群算法步骤:

 

==蚁群算法==

参数设置复杂,代码编写比较复杂,并且一般用于路径规划问题中;如果参数设置不当,很容易偏离优质解

==模拟退火算法==

全局寻优能力强(个人感觉其他能力并不出众,并且很慢),适合搭配粒子群算法一起使用。

模拟退火算法的步骤如下:

降温:按照指定的退火速率 降低温度 ,并检查是否满足终止条件;重复步骤3~6,直到满足终止条件。

在每个降温周期中,接受劣解的概率随着温度的下降而逐渐降低,从而逐渐收敛到全局最优解。不过模拟退火算法的效果和结果很大程度上取决于初始温度、退火速率和终止条件等参数的设置。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3