首页 > 编程语言 >如何将遗传算法与强化学习结合

如何将遗传算法与强化学习结合

时间:2024-10-26 13:20:37浏览次数:5  
标签:神经网络 学习 算法 steps step 遗传算法 强化 优化

首先,说一下,在机器学习领域(人工智能领域),神经网络和遗传算法一直是互相替代的关系,虽然也有过短暂的蜜月期(使用进化算法优化或初始化神经网络参数),但是总体说来,一般神经网络发展受限的情况下遗传算法方向的研究就会受重视,而神经网络发展好的时候(如最近10年-20年),那么遗传算法这样的进化算法在学术领域的受重视程度就会下降。

从计算本质来说,即遗传算法和神经网络算法的算法结构来说,在模型结构差不多的情况下(同为三层MLP的情况下),单次计算速度来看(一个step的计算优化用时),遗传算法用时远远高于神经网络算法,因为遗传算法这样的进化算法在计算时有大量的搜索操作,而这会造成大量的无法直接参与计算的操作,从而导致在单次计算方面遗传算法这样的算法用时要远高于神经网络算法;但是由于神经网络算法在一些问题上难以优化,比如收敛性差、容易陷入局部最优等问题,因此导致在一些问题上神经网络的优化steps远高于遗传算法,比如这样的一个问题,遗传算法优化1个step需要1秒,算法收敛需要10000steps,于是遗传算法解决该问题需要10000秒,而神经网络优化1个step需要0.001秒,但是受限需要100000000steps,于是神经网络解决该问题需要100000秒,可以看到这时候使用遗传算法会比使用神经网络来说用时更短,并且算法最终解的效果也不差于神经网络,这种情况下使用遗传算法是可行的,并且这时候因为遗传算法不使用GPU,而是CPU,而神经网络需要使用GPU,隐性的使遗传算法更具有优势。

但是,对于一些问题来说,遗传算法的优化步数可能不比神经网络算法少,甚至更多,那么这就悲剧了,比如某问题遗传算法需要10000 steps收敛,而神经网络需要100 steps收敛,同时由于遗传算法一个step的优化需要1秒,而神经网络一个step的优化需要0.001秒,于是就出现了使用遗传算法需要10000秒,而神经网络只需要0.1秒的现象,而这种情况下使用遗传算法则会明显差于使用神经网络算法。

经验来说,神经网络的收敛性还是很好的,都可以在一个比较合理的时间范围内得到解决,而遗传算法的收敛性是有着很大的不确定性的,尤其很多时候遗传算法的收敛性还要差于神经网络;虽然神经网络和遗传算法这样的AI算法都没有理论上的依据来保证其收敛性,但是由于神经网络在解决问题时的这种稳定性就导致遗传算法方向的研究难以吸引大多数人,毕竟神经网络一个step的优化用时是遗传算法的100分之一甚至是一千分之一,即使神经网络的某次训练收敛效果差我们也可以及早的发现并重新训练,但是遗传算法的每个step的用时那么高,那么等运行几百steps,几千steps,几万steps优化后发现效果不好时其时间成本也过高了。

尤其在一些大型的复杂神经网络结构上(高层数的神经网络结构),使用遗传算法来进行求解基本成了无法满足时间限制的事实了,因此现在使用遗传算法求解神经网络的研究也都是在一些较为简单的神经网络结构上,如:3层的MLP。




强化学习算法library库:(集成库)

https://github.com/Denys88/rl_games

https://github.com/Domattee/gymTouch

个人github博客地址:
https://devilmaycry812839668.github.io/

标签:神经网络,学习,算法,steps,step,遗传算法,强化,优化
From: https://www.cnblogs.com/xyz/p/18503969

相关文章

  • 【小记】探探学习平台的字体混淆
    正在某学习平台做题,想着把题目复制出来和搜索娘深入探讨一下,却发现:嗯?怎么是一坨火星文?实际上有好几个学习平台都引入了这种字体混淆机制以防止复制,打乱了部分汉字Unicode码点和字形的对应关系。这回咱就来折腾折腾,看看这是怎么个事儿。1.怎么个混淆法来到某课堂平台,打开......
  • java+vue计算机毕设党识学习通小程序【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今信息化高速发展的时代,移动互联网技术已广泛应用于各个领域,极大地改变了人们的生活方式和学习模式。特别是在党员教育管理方面,传统的线下学习方......
  • 基于Spring Boot的厨艺分享与学习社区
    摘要使用旧方法对厨艺交流信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在厨艺交流信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的厨艺交流平台功能有个人中心,食材分类管理,用户管理,菜......
  • yaml学习
    yaml学习地址https://blog.csdn.net/Asaasa1/article/details/109448444要在Python中读取YAML文件,你可以使用PyYAML库。以下是一个简单的示例代码:yaml文件如下点击查看代码#yaml文件os:ABESS:88VV:nullcx:~boo:TRUEAXX:username:ssspawword:sada......
  • 零基础小白如何入门大模型?(附学习路线)
    大模型赛道有前景吗?这个问题,是个热门话题,但不是个好问题。因为,它基于不同的提问人、提问意图,会有不同的答案。前排提示,文末有大模型AGI-CSDN独家资料包哦!对于一个职业发展初期的新人,提问的意图可能是:我要不要转行去大模型赛道,从而可以获得更快的职业发展?让我三年内直达......
  • CUDA编程学习 (1)——CUDA C介绍
    1.内存分配和数据移动API函数CUDA编程模型是一个异构模型,需要CPU和GPU协同工作。在CUDA中,host和device是两个重要的概念,我们用host指代CPU及其内存,而用device指代GPU及其内存。CUDA程序中既包含host程序,又包含device程序,它们分别在CPU和GPU上运行。同时,host与device之间......
  • CUDA编程学习 (2)——CUDA并行性模型
    1.基于kernel的SPMD并行编程1.1向量加法kernel(device代码)//DeviceCode//ComputevectorsumC=A+B//每个thread执行一次成对加法__global__voidvecAddKernel(float*A,float*B,float*C,intn){inti=threadIdx.x+blockDim.x*blockIdx.x......
  • Java学习-答题判断程序1-3
    1.前言(1)答题判题程序-1题目:设计实现答题程序,模拟一个小型的测试,要求输入题目信息和答题信息,根据输入题目信息中的标准答案判断答题的结果。知识点总结1.基本语法与结构:学习和应用Java的基本语法,类的定义与实例化。理解如何使用控制流(如循环和条件语句)。2.数据封装与类设......
  • 【AI产品经理附学习资料】让你从入门到精通,这一篇文章通通搞定!
    一、AI产品经理工作全流程概览AI产品经理工作全流程中与普通产品经理的区别主要是多了算法模型部分,包括模型预研、数据准备、模型构建、模型宣讲、模型验收,协作的对象相对普通产品经理也多了算法工程师。二、需求定义需求定义主要要定义清楚以下几点:1、做什么?2、为什......
  • 2024-10-25 学习人工智能的Day15 Pandas(2)
    二、函数1、常用的统计学函数函数名称描述说明count()统计某个非空值的数量sum()求和mean()求均值median()求中位数std()求标准差min()求最小值max()求最大值abs()求绝对值prod()求所有数值的乘积案例:#创建一个示例DataFramedata={'A':[1,2,3,4,5],......