「深度学习之优化算法」笔记(二)优化算法的分类

news2025/2/2 20:53:54

1. 优化算法的分类

1.1常见的优化算法

在分类之前,我们先列举一下常见的优化算法(不然我们拿什么分类呢?)

1.遗传算法Genetic algorithm

  1. 2.粒子群优化算法Particle Swarm Optimization

 3.差分进化算法Differential Evolution

4.人工蜂群算法Artificial Bee Colony

5.蚁群算法Ant Colony Optimization

6.人工鱼群算法Artificial Fish Swarm Algorithm

7.杜鹃搜索算法Cuckoo Search

8.萤火虫算法Firefly Algorithm

9.灰狼算法Grey Wolf Optimizer

10.鲸鱼算法Whale Optimization Algorithm

11.群搜索算法Group search optimizer

12.混合蛙跳算法Shuffled Frog Leaping Algorithm

13.烟花算法fireworks algorithm

14.菌群优化算法Bacterial Foraging Optimization

以上优化算法是我所接触过的算法,没接触过的算法不能随便下结论,知之为知之,不知为不知。其实到目前为止优化算法可能已经有几百种了,我们不可能也不需要全面的了解所有的算法,而且优化算法之间也有较大的共性,深入研究几个之后再看其他优化算法上手速度会灰常的快。

优化算法从提出到现在不过50-60年(遗传算法1975年提出),虽种类繁多但大多较为相似,不过这也很正常,比较香蕉和人的基因相似度也有50%-60%。当然算法之间的相似度要比香蕉和人的相似度更大,毕竟人家都是优化算法,有着相同的目标,只是实现方式不同。就像条条大路通罗马,我们可以走去,可以坐汽车去,可以坐火车去,也可以坐飞机去,不管使用何种方式,我们都在去往罗马的路上,也不会说坐飞机去要比走去更好,交通工具只是一个工具,最终的方案还是要看我们的选择。

 

1.2优化算法的模型

上面列举了一些常见的算法,即使你一个都没见过也没关系,后面会对它们进行详细的介绍,但是对后面的分类可能会有些许影响,不过问题不大,就先当总结看了。

  再对优化算法分类之前,先介绍一下算法的模型,在笔记(一)中绘制了优化算法的流程,不过那是个较为简单的模型,此处的模型会更加复杂。上面说了优化算法有较大的相似性,这些相似性主要体现在算法的运行流程中。

  优化算法的求解过程可以看做是一个群体的生存过程。

 

  有一群原始人,他们要在野外中寻找食物,一个原始人是这个群体中的最小单元,他们的最终目标是寻找这个环境中最容易获取食物的位置,即最易存活下来的位置。每个原始人都去独自寻找食物,他们每个人每天获取食物的策略只有采集果实、制作陷阱或者守株待兔,即在一天之中他们不会改变他们的位置。在下一天他们会根据自己的策略变更自己的位置。到了某一天他们又聚在了一起,选择了他们到过的最容易获取食物的位置定居。

  一群原始人=优化算法中的种群、群体;

  一个原始人=优化算法中的个体;

  一个原始人的位置=优化算法中个体的位置、基因等属性;

  原始人变更位置=优化算法中总群的更新操作;

  该位置获取食物的难易程度=优化算法中的适应度函数;

  一天=优化算法中的一个迭代;

  这群原始人最终的定居位置=优化算法所得的解。

  优化算法的流程图如下:

 

1.3优化算法的分类

对优化算法分类得有个标准,按照不同的标准分类也会得到不一样的结果。首先说一下我所使用的分类标准(动态更新,有了新的感悟再加):

  1. 算法的由来,即算法是模拟了某种动物的觅食、搜索过程,还是模拟了群体交配、繁衍的过程,亦或是模拟了人工、物理过程。
  2. 算法的更新过程,上面的模型介绍了算法的抽象流程,使用更新过程分类即看算法中的个体按照什么方式来更新自己的位置。

1.3.1按照由来分类

按由来分类比较好理解,就是该算法受何种现象启发而发明,本质是对现象分类。

算法

由来

类别

1遗传算法

进化论

人类理论

2粒子群优化算法

鸟群觅食

生物生存

3差分进化算法

进化论

人类理论

4人工蜂群算法

蜜蜂觅食

生物生存

5蚁群算法

蚂蚁觅食

生物生存

6人工鱼群算法

鱼群觅食

生物生存

7杜鹃搜索算法

杜鹃产卵

生物生存

8萤火虫算法

萤火虫求偶

生物生存

9灰狼算法

狼群觅食

生物生存

10鲸鱼算法

鲸鱼觅食

生物生存

11群搜索算法

生产消费跟随模型

人类理论

12混合蛙跳算法

青蛙觅食

生物生存

13烟花算法

烟花

物理现象

14菌群优化算法

菌群生长

生物生存

可以看出算法根据由来可以大致分为有人类的理论创造而来,向生物学习而来,受物理现象启发。其中向生物学习而来的算法最多,其他类别由于举例有偏差,不是很准确,而且物理现象也经过人类总结,有些与人类现象相交叉,但仍将其独立出来。

类别分好了,那么为什么要这么分类呢?

 

  当然是因为要凑字数啦,啊呸,当然是为了更好的理解学习这些算法的原理及特点。

  向动物生存学习而来的算法一定是一种行之有效的方法,能够保证算法的效率和准确性,因为,如果使用该策略的动物无法存活到我们可以对其进行研究,我们也无法得知其生存策略。(而这也是一种幸存者偏差,我们只能看到行之有效的策略,但并不是我们没看到的策略都是垃圾,毕竟也发生过小行星撞地球这种小概率毁灭性事件。讲个冷笑话开cou心zhi一shu下:一只小恐龙对他的小伙伴说,好开心,我最喜欢的那颗星星越来越亮了(完)。)但是由于生物的局限性,人们所创造出的算法也会有局限性:我们所熟知的生物都生存在三维空间,在这些环境中,影响生物生存的条件比较有限,反应到算法中就是这些算法在解决较低维度的问题时效果很好,当遇到超高维(维度>500)问题时,结果可能不容乐观,没做过实验,我也不敢乱说。

 

  受人类理论得出的算法,与在处理较高维问题时应该会有着较好的结果,因为人类的理论中的维度不受现实束缚,可能会有超高维的情况,比如基因的数量。但是能人类的理论都是在人类的理解范围内,可能有些理论与人类认知不符,或者该理论其实是错误的,只是大家都没有发现。这就尴尬了,从错误的理论上学习而来的东西,有较大的概率其实也是错误的。所有这类优化算法能够处理维度较高的问题,但是很有可能得不出较好的结果。

  最后实名diss一下由物理现象发展而来的算法。物理现象,没有任何智能,其现象完全取决于观测者,因果不明,为什么敢说能解决问题,我也不清楚,可能只是想套用一下物理现象,其实算法与现象关系不大,其他类别也大多如此(不小心把实话说出来了不会有事吧)。

 

1.3.2按照更新过程分类

按更新过程分类相对复杂一点,主要是根据优化算法流程中更新位置操作的方式来进行分类。更新位置的操作按我的理解可大致分为两类:1.跟随最优解;2.不跟随最优解。

  还是上面原始人的例子,每天他有一次去往其他位置狩猎的机会,他们采用何种方式来决定今天自己应该去哪里呢?

如果他们的策略是“跟随最优解”,那么他们选取位置的方式就是按一定的策略向群体已知的最佳狩猎位置(历史最佳)或者是当前群体中的最佳狩猎位置(今天最佳)靠近,至于是直线跑过去还是蛇皮走位绕过去,这个要看他们群体的策略。当然,他们的目的不是在最佳狩猎位置集合,他们的目的是在过去的途中看是否能发现更加好的狩猎位置,去往已经到过的狩猎地点再次狩猎是没有意义的,因为每个位置获取食物的难易程度是固定的。有了目标,大家都会朝着目标前进,总有一日,大家会在谋个位置附近相聚,相聚虽好但不利于后续的觅食容易陷入局部最优。

  什么是局部最优呢?假设在当前环境中有一“桃花源”,拥有上帝视角的我们知道这个地方就是最适合原始人们生存的,但是此地入口隐蔽“山有小口,仿佛若有光”、“初极狭,才通人。”,是一个难以发现的地方。如果没有任何一个原始人到达了这里,大家向着已知的最优位置靠近时,也难以发现这个“桃源之地”,而当大家越聚越拢之后,“桃源”被发现的可能性越来越低。虽然原始人们得到了他们的解,但这并不是我们所求的“桃源”,他们聚集之后失去了寻求“桃源”的可能,这群原始人便陷入了局部最优。

 

  如果他们的策略是“不跟随最优解”,那么他们的策略是什么呢?我也不知道,这个应该他们自己决定。毕竟“是什么”比“不是什么”的范围要小的多。总之不跟随最优解时,算法会有自己特定的步骤来更新个体的位置,有可能是随机在自己附近找,也有可能是随机向别人学习。不跟随最优解时,原始人们应该不会快速聚集到某一处,这样一来他们的选择更具多样性。

  按照更新过程对上面的算法分类结果如下

算法

类别

1遗传算法

不跟随最优解

2粒子群优化算法

跟随最优解

3差分进化算法

不跟随最优解

4人工蜂群算法

跟随最优解

5蚁群算法

跟随最优解

6人工鱼群算法

跟随最优解

7杜鹃搜索算法

跟随最优解

8萤火虫算法

跟随最优解

9灰狼算法

跟随最优解

10鲸鱼算法

跟随最优解

11群搜索算法

跟随最优解

12混合蛙跳算法

跟随最优解

13烟花算法

跟随最优解

14菌群优化算法

跟随最优解

可以看出上面不跟随最优解的算法只有遗传算法和差分进化算法,他们的更新策略是与进化和基因的重组有关。因此这些不跟随最优解的算法,他们大多依据进化理论更新位置(基因)我把他们叫做进化算法,而那些跟随群体最优解的算法,他们则大多依赖群体的配合协作,我把这些算法叫做群智能算法。

1.4总结

目前我只总结了这两种,分类方法,如果你有更加优秀的分类方法,我们可以交流一下:

进化算法

群智能算法

人类理论

1遗传算法

3差分进化算法

11群搜索算法

生物生存

2粒子群优化算法

4人工蜂群算法

5蚁群算

6人工鱼群算法

7杜鹃搜索算法

8萤火虫算法

9灰狼算法

10鲸鱼算法

12混合蛙跳算法

14菌群优化算法

物理现象

13烟花算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/648371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot第27集:springboot-mvc,WxPay

在数据库中,DISTINCT 关键字用于查询去重后的结果集。它用于从查询结果中去除重复的行,只返回唯一的行。 要使用 DISTINCT 关键字,可以将其放置在 SELECT 关键字之前,指示数据库返回去重后的结果。 请注意,DISTINCT 关…

Linux常用命令——getenforce命令

在线Linux命令查询工具 getenforce 显示当前SELinux的应用模式,是强制、执行还是停用。 补充说明 grename命令可以重命名卷组的名称。 语法 getenforce例子 查看当前SELinux的应用模式。 [rootlocalhost ~]# getenforce Enforcing在线Linux命令查询工具 原文…

ChatGPT时代,我的新书《智慧共生》上市了

告诉你一个好消息,我在人民邮电出版社的第二本书《智慧共生:ChatGPT 与 AIGC 生产力工具实践》刚刚上市,你现在就可以在 京东 和 当当买到了。 有人把 2022 年称作 AIGC(人工智能生成内容) 的元年,我深表赞…

浅谈数据中台之数据开发

目 录 01 前言‍ 02 中台概念及背景 ‍‍‍‍‍‍‍ 03 数据中台建设方法‍‍‍‍‍‍ 04 数据开发实践 01‍ 前言‍‍ 2015年阿里在国内首次提出了中台概念,由阿里引领发展,迅速在互联网企业中形成了一股浪潮。在数字化转型的道路上,为了…

【AUTOSAR】UDS协议的代码分析与解读(五)----ECU诊断服务

8 诊断服务 8.1 总览 此章节定义了本规范中可使用的诊断服务及其执行规则。 下表列出了h事业部定义的所有UDS诊断服务。ECU最终实现与下述定义不符之处必须得到h事业部 的认可。服务实现内容需在零部件诊断规范中详细说明。 表 9 诊断服务支持列表 诊断服务列表 APP Bootlo…

【手撕代码】同步 FIFO、LIFO/Stack

FIFO 是FPGA设计中最有用的模块之一。FIFO 在模块之间提供简单的握手和同步机制,是设计人员将数据从一个模块传输到另一个模块的常用选择。 在这篇文章中,展示了一个简单的 RTL 同步 FIFO,可以直接在自己的设计中配置和使用它,该设…

社区供稿 | RLHF 实践中的框架使用与一些坑 (TRL, LMFlow)

1 前言 之前看见文章总结了常见的一些 RLHF 框架的经验, 但是似乎没看见 Hugging Face 自己维护的 TRL 库的相关文章, 正好最近调 TRL 比较多, 就想写一个文章分享一下使用过程中踩到的坑,另外也介绍一下我们的全流程框架 LMFlow 。 LMFlow 框架示意图。 我们主要用…

架构思维的六要素

很多人都在私信问我随着ChatGPT等技术的兴起,自己的饭碗会不会没了。我的观点是:ChatGPT能做的工作十几年前早就没了。 十几年前还看到过招聘广告上写招程序员的,现在都是工程师起步,工程师是要有架构思维的。 像十几年前的黄金时…

手写SpringBoot启动器主要步骤

这里写目录标题 背景过程2.1自启动实现原理2.2手动实现SpringBoot自启动2.2.1宏观2.2.1微观2.2.1.1三个服务之间调用2.2.1.2自定义注解2.2.1.1业务组装2.2.1.3启动类 升华自定义注解:手动装配组件:简化启动过程:自动化注入依赖:简…

马原第三章复习1.

唯物史观和唯心史观过去出过小题 社会意识出小题 社会存在一般出大题 124 社会存在和社会意识(往往出大题) 社会历史性的基本问题 两种根本对立的历史史观 唯心主义: 至多考察人的思想动机 没有考虑思想背后的物质动因和经济根源 把社会史观看成人的思想,,不懂得…

关于酒店宾馆电气火灾隐患的预防与整改措施介绍 安科瑞 许敏

摘要:本文分析了酒店、宾馆电气火灾隐患的特点及产生的主要原因,并依此提出了消除火灾隐患的整改措施。 关键词:酒店宾馆;火灾;隐患;预防;整改;措施 1前言 随着旅居服务业的快速发展&#xf…

CVPR 2023 | 香港理工提出GrowSP:3D场景的无监督语义分割

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>【目标检测和Transformer】交流群 GrowSP: Unsupervised Semantic Segmentation of 3D Point Clouds 论文链接:https://arxiv.org/abs/2305.16404 代码&#xff1…

2023/6/11总结

CSS Less嵌套 子元素的选择器可以直接写在父元素里面。 如果不是它的后代元素,比如你想写伪类选择器、交集选择器,需要在前面加&号。 Less运算: 加减乘除都可以,运算符必须用空格隔开。如果俩个元素都有单位&#xff0…

binfmt_misc

一:binfmt_misc是什么 binfmt_misc是内核中的一个功能,它能将非本机的二进制文件与特定的解析器自动匹配起来,进行二进制解析。 例如,在x86上解析arm64架构的二进制。 通过binfmt_misc可以注册解析器来处理指定二进制文件格式的请…

Qt|QDialog的创建及使用

文章目录 创建一个新的类继承QDialog设置标题去掉问号,只保留关闭使窗口在屏幕中心显示设置窗口大小QDialog没有任务栏窗口图标问题将窗口永远置于上层可见 不会被遮盖阻塞除当前窗口之外的所有窗口添加closeEvent hideEvent同理调用dialog类接收dialog返回状态&…

华为OD机试真题 JavaScript 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

一、题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏。 游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格,然后获得一次选房子的机会,直到所有房子都被选完,房子最多的人获胜。 跳房子的过程中&…

XGBoost超参数调优指南

本文将详细解释XGBoost中十个最常用超参数的介绍,功能和值范围,及如何使用Optuna进行超参数调优。 对于XGBoost来说,默认的超参数是可以正常运行的,但是如果你想获得最佳的效果,那么就需要自行调整一些超参数来匹配你的…

jupyter lab升级或者安装插件后编译失败

错误回显 报错提示:please run ‘jupyter lab build’ on the server for full output,那么就进入prompt执行一下jupyter lab build 继续接着报错 If you dont already have a jupyter_config.py file, you can create one by adding a blank file of th…

线下实体衰落,真是电商惹祸?实是贪婪以及服务理念落后所致

网上时不时就有人指责电商的兴起导致了线下实体衰落,然而如果各位比较了线下实体与电商的差异,就会明白导致如此结果完全是咎由自取,因为线下实体太贪婪以及服务理念落后于时代。 笔者最近就购买了某款国产手机,在该国产手机品牌的…

集显独显并存,ubuntu安装显卡驱动的坑

一、安装和启动黑屏卡死 1、怎么办?显示器先接集显,完成驱动安装。 (1)屏蔽nouveau驱动 只要是安装过NVIDIA显卡驱动的,nouveau一般都被禁止了。可以通过命令: lsmod | grep nouveau 查看。如果没有任…