如何选择优化算法

article/2025/10/3 8:50:43

如何选择优化算法

  • 0 前言
  • 1 优化算法
  • 2 可微的目标函数
    • 2.1 Bracketing Algorithms
    • 2.2 Local Descent Algorithms
    • 2.3 First-Order Algorithms
    • 2.4 Second-Order Algorithms
  • 3 不可微的目标函数
    • 3.1 Direct Algorithms
    • 3.2 Stochastic Algorithms
    • 3.3 Population Algorithms
  • 4 summary

0 前言

优化是找到目标函数一组输入的问题,这是机器学习算法的基础,从拟合回归模型到训练人工神经网络,优化算法都是具有挑战性的问题。

流行的优化算法可能有数百种,流行的科学代码库中可能有数十种算法可供选择,这使得从了解到给定优化问题到考虑用哪些算法变得具有挑战性。

1 优化算法

机器学习中最常见的优化问题是连续函数优化,其中函数的输入参数是实数,输出是对输入参数的评估。我们将这种类型的问题称为连续函数优化,以区别于采用离散变量并被称为组合优化问题的函数。

有许多不同类型的优化算法可用于连续函数的优化问题,对优化算法进行分类的一种方法是基于目标函数的可用信息量,而这些信息又可以被优化算法使用和利用。通常,目标函数的可用信息量越多,如果这些信息可以有效地用于搜索,则该函数就越容易优化。

优化算法的主要划分是目标函数是否可以在某一点上微分,即对于给定的候选解,是否可以计算函数的一阶导数(梯度或斜率),这将算法划分为可以利用计算出的梯度信息的算法和不能计算出梯度信息的算法。

可微的目标函数?

  • 使用梯度信息的算法
  • 不使用梯度信息的算法

下面分别从可微的目标函数和不可微的目标函数进行说明。

2 可微的目标函数

可微函数是可以计算出输入空间中任何给定点的导数的函数。函数某一点的导数是函数在该点的变化率或变化量,通常被称为斜率。
一阶导数: 目标函数在给定点的斜率或变化率。
当导数为0时,该点可能为函数的鞍点或极值点。
请添加图片描述
多元目标函数的导数是一个向量,向量中的每个元素称为偏导数,或假设所有其他变量保持不变的情况下给定变量在该点的变化率。
如果只想计算函数与某个变量的变化关系时,需要计算偏导数。
偏导数: 多元目标函数的导数。
当函数中某点的所有偏导数都为0时,则该点为函数的极值点或者鞍点。
请添加图片描述

具有多个输入变量(例如多变量输入)的函数的导数通常称为梯度。
梯度: 多元连续目标函数的所有偏导数构成的向量。

我们可以计算目标函数的导数的导数,即目标函数的变化率的变化率,称为二阶导数。
二阶导数: 目标函数的导数变化的速率。

对于接受多个输入变量的函数,这是一个矩阵,称为Hessian矩阵。
Hessian矩阵: 具有两个或多个输入变量的函数的二阶导数。
请添加图片描述

简单的可微函数可以使用微积分进行分析优化,如果我们感兴趣的目标函数比较复杂而无法解析求解,此时如果可以计算目标函数的梯度,优化会变得容易很多,因此对使用导数的优化算法的研究要比不使用导数的优化算法要多得多。

使用梯度信息的算法主要包括:

  • Bracketing Algorithms
  • Local Descent Algorithms
  • First-Order Algorithms
  • Second-Order Algorithms

2.1 Bracketing Algorithms

Bracketing Algorithms旨在解决具有一个输入变量的优化问题,其中已知最优值存在于特定范围内。

如果没有梯度信息,一些Bracketing Algorithms可以在没有梯度信息的情况下使用。

Bracketing Algorithms原理如下:
请添加图片描述

Bracketing Algorithms的例子包括:

  • 斐波那契搜索
    请添加图片描述

  • 黄金分割搜索
    请添加图片描述

  • 二分法
    请添加图片描述

2.2 Local Descent Algorithms

有些算法只能在自己的小范围内搜索极大值或极小值,这些算法称为局部优化算法,常称为经典优化算法。另有些算法,可以在整个超曲面取值范围内搜索最大值或最小值,这些算法称为全局性优化算法,又称为现代优化算法。
如下图所示,如果自变量 x 是一维的,即一个实数,我们要优化 f(x) ,就只能将 x 向左移动或向右移动,如下图所示。我们希望f(x)最大,就将 x 向使能使f(x)增大的方向移动(左或右)。对于A和B,它们分别向右向左移动,最终到达全局最优点P;而对于C和D,它们只能到达局部最优点Q。所以这些方法称为局部下降优化算法。一般来说,x 是 n 维向量,即x∈ℝn,这样的话,x可以移动的方向就有很多个。n 维情况下,f(x):ℝn→ℝ。
请添加图片描述
局部下降优化算法(Local Descent Algorithms)旨在解决具有多个输入变量和单个全局最优值(例如单峰目标函数)的优化问题。

局部下降算法最常见的例子是线搜索(line search)算法。

线搜索有许多变体(例如 Brent-Dekker 算法),但该过程通常涉及选择在搜索空间中移动的方向,然后在所选方向的线或超平面中执行包围式搜索。重复此过程,直到无法进行进一步的改进。

summary:
局部下降优化算法是解决无约束优化的一种方法,一般只能得到局部最优解,它的限制是优化搜索空间中的每个方向移动的计算成本很高。

2.3 First-Order Algorithms

一阶优化算法(First-Order Algorithms)使用的是一阶导数(梯度)来选择在搜索空间中移动的方向。

这些过程包括首先计算函数的梯度,然后使用步长(也称为学习率)沿相反方向(例如,下坡到最小化问题的最小值)跟踪梯度。

步长是一个超参数,它控制在搜索空间中移动的距离,这与对每个方向移动执行全线搜索的“局部下降算法”不同。

典型的流程如下(计算当前参数下的梯度,沿负梯度方向更新参数):
请添加图片描述
但一阶算法有个缺点,由于梯度越大更新步长越大,导致在峡谷类型的函数上收敛非常慢,会一直在比较陡的方向来回振荡。如下图:
请添加图片描述
因此,步长太小会导致搜索需要很长时间并且可能会卡住,而步长太大会导致搜索空间出现锯齿形或弹跳,完全错过最优值。

一阶算法通常被称为梯度下降,包括:

  • Gradient Descent
  • Momentum
  • Adagrad
  • RMSProp
  • Adam

梯度下降算法还衍生了一个新的算法,称为随机梯度下降算法 (SGD),用于训练人工神经网络(深度学习)模型。

重要的区别在于随机梯度下降算法 (SGD)对内存的要求更小,它使用训练数据的预测误差,因此衍生出三个算法,例如一个样本(随机)、所有样本(批处理)或训练数据的一小部分样本(小批量),如下所示。

  • Stochastic Gradient Descent
  • Batch Gradient Descent
  • Mini-Batch Gradient Descent

2.4 Second-Order Algorithms

二阶优化算法(Second-Order Algorithms)是使用二阶导数(Hessian)来选择在搜索空间中移动的方向。

这些算法仅适用于可以计算或近似 Hessian 矩阵的目标函数。

单变量目标函数的二阶优化算法包括:

  • Newton’s Method
  • Secant Method

多元目标函数的二阶方法称为拟牛顿法。

  • Quasi-Newton Method

拟牛顿法方法有很多,它们通常以算法的开发者命名,例如:

  • Davidson-Fletcher-Powell
  • Broyden-Fletcher-Goldfarb-Shanno (BFGS)
  • Limited-memory BFGS (L-BFGS)

summary:
【优点】因为使用了导数的二阶信息,因此其优化方向更加准确,速度也更快
【缺点】使用二阶方法通常需要直接计算或者近似估计Hessian 矩阵,一阶方法一次迭代更新复杂度为O(N),二阶方法就是O(N*N),因此参数量巨大。

3 不可微的目标函数

利用目标函数导数的优化算法快速有效。

然而存在无法计算导数的目标函数,通常是因为各种现实原因,该函数很复杂,或者可以在定义域的某些区域计算导数,但不是在整个定义域。

载着,有些优化算法即使能够计算出一阶或二阶导数,但是在某些情形下依然找不到最优值,如下:

  • 没有某些功能的分析描述
  • 多个全局最优值
  • 随机函数评估(例如噪声)
  • 不连续的目标函数

解决以上问题需要黑盒优化算法,之所以这样命名是因为它们对目标函数的假设很少或没有(相对于经典方法),黑盒优化算法分类为:

  • 直接算法
  • 随机算法
  • 人口算法

3.1 Direct Algorithms

直接优化算法适用于无法计算导数的目标函数。

算法是确定性过程,通常假设目标函数具有单一全局最优值,例如单峰。

直接搜索方法通常也称为“模式搜索”,因为它们可以使用几何形状或决策导航搜索空间。

梯度信息直接从目标函数的结果中近似(因此得名),该目标函数比较了搜索空间中点的分数之间的相对差异。 然后使用这些直接估计来选择在搜索空间中移动的方向并对最优区域进行三角测量。

直接搜索算法的示例包括:

  • Cyclic Coordinate Search
  • Powell’s Method
  • Hooke-Jeeves Method
  • Nelder-Mead Simplex Search

3.2 Stochastic Algorithms

随机优化算法是在搜索过程中利用随机性来搜索无法计算导数的目标函数的算法。

与确定性直接搜索方法不同,随机算法通常涉及更多目标函数的采样,但能够处理具有欺骗性的局部最优解的问题。

随机优化算法包括:

  • Simulated Annealing
  • Evolution Strategy
  • Cross-Entropy Method

3.3 Population Algorithms

种群优化算法是随机优化算法,它维护一个候选解决方案池(种群),这些候选解决方案一起用于采样、探索和磨练最优值。

这种类型的算法旨在解决更具挑战性的客观问题,这些问题可能具有嘈杂的函数评估和许多全局最优(多模态),并且使用其他方法找到一个好的或足够好的解决方案是具有挑战性或不可行的。

候选解决方案池增加了搜索的稳健性,增加了克服局部最优的可能性。

种群优化算法的示例包括:

  • Genetic Algorithm
  • Differential Evolution
  • Particle Swarm Optimization

4 summary

综上,优化算法可以分为使用梯度信息的算法和不使用梯度信息的算法。
经典算法使用目标函数的一阶导数,有时是二阶导数。
而直接搜索和随机算法是为函数导数不可用的目标函数设计的。


http://chatgpt.dhexx.cn/article/AKSwmal0.shtml

相关文章

群体智能优化算法介绍

群体智能优化算法介绍 群体智能(Swarm Intelligence)算法的定义: ​ 群体智能优化算法主要是模拟了昆虫,兽群,鸟群和鱼群的群体行为,这些群体按照一定的合作方式寻找食物,群体中每个成员通过学…

蚁群优化算法

蚁群优化算法 1.蚁群优化算法简介2.蚁群优化算法基本思想3.蚁群优化算法设计流程4.代码实现5.运行结果与分析6.实验总结1.蚁群优化算法简介 蚁群算法是一种用来寻找优化路径的概率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现…

人工神经网络的优化方法,神经网络的优化算法

人工神经网络评价法 人工神经元是人工神经网络的基本处理单元,而人工智能的一个重要组成部分又是人工神经网络。人工神经网络是模拟生物神经元系统的数学模型,接受信息主要是通过神经元来进行的。 首先,人工神经元利用连接强度将产生的信号…

最优化算法——常见优化算法分类及总结

最优化问题 在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)…

梯度下降优化算法总结

写在前面 梯度下降(Gradient descent)算法可以说是迄今最流行的机器学习领域的优化算法。并且,基本上每一个深度学习库都包括了梯度下降算法的实现,比如Lasagne、cafe、keras等。关于梯度优化的三种分类在机器学习中常用的优化方法这篇博客中已经介绍过…

优化算法详解

文章目录 1、机器学习要求解的数学模型2、最优化算法2.1 分类2.2 通用的优化框架 3 公式解3.1 费马定理3.2 拉格朗日乘数法3.3 KKT条件 4 数值优化算法4.1 梯度下降法4.1.1 SGD、BGD、MBGD随机梯度下降法4.1.2 动量项Momentum4.1.3 AdaGrad算法4.1.4 RMSProp4.1.5 AdaDelta算法…

优化算法综述

目录 优化算法综述数学规划法精确算法(exact algorithm)启发式 VS. 元启发式启发式算法元启发式算法What is the difference between heuristics and meta-heuristics? 多目标智能优化算法模拟进化算法与传统的精确算法(确定性算法&#xff…

约束优化:约束优化的三种序列无约束优化方法

文章目录 约束优化:约束优化的三种序列无约束优化方法外点罚函数法L2-罚函数法:非精确算法对于等式约束对于不等式约束 L1-罚函数法:精确算法 内点罚函数法:障碍函数法等式约束优化问题的拉格朗日函数法:Uzawas Method…

常用优化算法

大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最优化方法对目标函数(或损失函数)进行优化,从而训练出最好的模型。常见的…

智能优化算法期末复习

目录 一、GA遗传算法 二、ACO蚁群算法 三、PSO粒子群算法 四、SA模拟退火算法 五、ABC人工蜂群算法 六、DE差分进化算法 七、TA阈值接收算法 八、综合 一、GA遗传算法 1.运算流程 2.遗传算法适应值分配策略(基于目标函数的直接分配、基于排名的分配&#xf…

智能优化算法

目录 进化类算法 遗传算法 概述 特点 改进方向 算法流程 差分进化算法 概述 原理 特点 算法流程 免疫算法 概述 优点 算法流程 群智能算法 蚁群算法(ACO) 概述 特点 算法流程 改进的蚁群算法 粒子群算法(PSO) 概述 特点 算法流程 蝙蝠算法(Bat Algorithm,BA) 模拟退火算法 概述…

优化方法总结(梯度下降法、牛顿法、拟牛顿法等)

梯度下降法 梯度下降法是最简单,也是最常用的最优化方法。梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解/一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。梯度下降法的优化思…

几种常用的优化方法梯度下降法、牛顿法、)

几种常用的优化方法 1. 前言 熟悉机器学习的童鞋都知道,优化方法是其中一个非常重要的话题,最常见的情形就是利用目标函数的导数通过多次迭代来求解无约束最优化问题。实现简单,coding 方便,是训练模型的必备利器之一。 2. 几个数…

常见的几种最优化方法(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等)

常见的几种最优化方法(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等) 我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。最优化方法是…

优化方法

一阶优化方法:梯度下降法 梯度下降不一定能够找到全局最优解,有可能是一个局部最优解。如果损失函数是凸函数,梯度下降法得到的解一定是全局最优解。 梯度下降法分为三类: batch gradient descent 每次更新参数使用全部的样本&a…

Visual Studio 2012安装教程

1.鼠标右击软件压缩包,选择解压到【Visual Studio2012】。 2.双击打开【Visual Studio2012】文件夹。 3.双击打开【安装包】。 4.选中【vs_ultimate】后,鼠标右击选择【以管理员身份运行】。 5.更改软件安装路径:建议安装到除C盘以外的磁盘&a…

vs2022的下载及安装教程

Visual Studio在团队项目开发中使用非常多且功能强大,支持开发人员编写跨平台的应用程序;Microsoft Visual C 2022正式版(VC2022运行库),具有程序框架自动生成,灵活方便的类管理,强大的代码编写等功能,可提供编辑C语言…

VS2012安装步骤

学习C#一段时间了,安装了VS,在安装的过程中,没有想象中的那么顺利,一直想记录一下,今天在此小编来介绍一下VS的安装吧! 1.exe安装文件直接双击,安装就开始啦! 2.选择安装路径&#…

【数据库系统工程师】第9章 非关系型数据库NoSQL

目录 思维导图9.1 NoSQL概述1.三高需求面前,NoSQL应运而生 9.2 相关理论基础1.一致性2.分区3.存储分布4.查询模型 9.3 NoSQL数据库的种类1.分类与特点2.文档存储3.键值存储4.列存储5.图存储6.其他存储模式 9.4 NoSQL应用案例与新技术1.HBase数据库2.云数据库GeminiD…

NOSQL数据库习题

NOSQL数据库习题 第一章第二章第三章第四章第五章NoSQL数据库上机测试 第一章 1.写出DB、RDB、DBMS、TRDB、NoSQL、NewSQL、NDFS的中文名称。 答:DB:数据库 RDB:关系型数据库 DBMS:数据库管理系统 TRDB:传统关系型数…