凸函数和非凸函数,以及三大经典算法比较 |
您所在的位置:网站首页 › 指示函数是凸函数吗 › 凸函数和非凸函数,以及三大经典算法比较 |
凸(convex):
指的是顺着梯度方向走到底就 一定是 最优解 。大部分 传统机器学习 问题 都是凸的。
非凸(Non-convex):
指的是顺着梯度方向走到底只能保证是局部最优,不能保证 是全局最优。深度学习以及小部分传统机器学习问题都是非凸的。
1.集合的凸和非凸看任意连线有没有不在区域内,函数则有公式:
任何局部最优解即为全局最优解。通常使用一个局部优化算法,如贪婪算法(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,直到满足停止条件(如达到一定代数、找到最优解等)。==差分进化算法==(相较于遗传算法) 鲁棒性更强、收敛速度更快,但是全局优化搜索能力不如遗传算法 ==粒子群算法== 搜索速度快,参数设置容易,但是极其容易陷入局部最优解,因此一般需要使用期改进方法避免陷入局部最优解。 粒子群算法步骤:
==蚁群算法== 参数设置复杂,代码编写比较复杂,并且一般用于路径规划问题中;如果参数设置不当,很容易偏离优质解 ==模拟退火算法== 全局寻优能力强(个人感觉其他能力并不出众,并且很慢),适合搭配粒子群算法一起使用。 模拟退火算法的步骤如下: 在每个降温周期中,接受劣解的概率随着温度的下降而逐渐降低,从而逐渐收敛到全局最优解。不过模拟退火算法的效果和结果很大程度上取决于初始温度、退火速率和终止条件等参数的设置。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |