人工智能遗传算法GA(GeneticAlgorithm)入门知识梳理michael翔的IT私房菜

简单说来就是:繁殖过程,会发生基因交叉(Crossover),基因突变(Mutation),适应度(Fitness)低的个体会被逐步淘汰,而适应度高的个体会越来越多。那么经过N代的自然选择后,保存下来的个体都是适应度很高的,其中很可能包含史上产生的适应度最高的那个个体。

GA的组成:

借鉴生物进化论,遗传算法将要解决的问题模拟成一个生物进化的过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰掉适应度函数值低的解,增加适应度函数值高的解。这样进化N代后就很有可能会进化出适应度函数值很高的个体。

举个例子,使用遗传算法解决“0-1背包问题”的思路:0-1背包的解可以编码为一串0-1字符串(0:不取,1:取);首先,随机产生M个0-1字符串,然后评价这些0-1字符串作为0-1背包问题的解的优劣;然后,随机选择一些字符串通过交叉、突变等操作产生下一代的M个字符串,而且较优的解被选中的概率要比较高。这样经过G代的进化后就可能会产生出0-1背包问题的一个“近似最优解”。

需要将问题的解编码成字符串的形式才能使用遗传算法。最简单的一种编码方式是二进制编码,即将问题的解编码成二进制位数组的形式。例如,问题的解是整数,那么可以将其编码成二进制位数组的形式。将0-1字符串作为0-1背包问题的解就属于二进制编码。

基因在一定能够意义上包含了它所代表的问题的解。基因的编码方式有很多,这也取决于要解决的问题本身。常见的编码方式有:

如,问题:给定了很多组输入和输出。请你为这些输入输出选择一个函数,使得这个函数把每个输入尽可能近地映射为输出。编码方法:基因就是树形结构中的一些函数。

在值编码中,每个基因就是一串取值。这些取值可以是与问题有关任何值:整数,实数,字符或者其他一些更复杂的东西。

遗传算子:遗传算法有3个最基本的操作:选择,交叉,变异。

选择一些染色体来产生下一代。一种常用的选择策略是“比例选择”,也就是个体被选中的概率与其适应度函数值成正比。假设群体的个体总数是M,那么那么一个体Xi被选中的概率为f(Xi)/(f(X1)+f(X2)+……..+f(Xn))。比例选择实现算法就是所谓的“轮盘赌算法”(RouletteWheelSelection)。

轮盘赌算法/**按设定的概率,随机选中一个个体*P[i]表示第i个个体被选中的概率*/intRWS(){m=0;r=Random(0,1);//r为0至1的随机数for(i=1;i<=N;i++){/*产生的随机数在m~m+P[i]间则认为选中了i*因此i被选中的概率是P[i]*/m=m+P[i];if(r<=m)returni;2.4交叉所谓交叉运算,是指对两个相互配对的染色体依据交叉概率按某种方式相互交换其部分基因,从而形成两个新的个体。交叉运算在GA中起关键作用,是产生新个体的主要方法。

交叉前:

00000|011100000000|10000

11100|000001111110|00101

交叉后:

00000|000001111110|10000

11100|011100000000|00101

染色体交叉是以一定的概率发生的,这个概率记为Pc。

选择两个交叉点,子代基因在两个交叉点间部分来自一个父代基因,其余部分来自于另外一个父代基因.如:

01|0010|11

11|0111|01

11|0010|01

01|0111|11

对父代按位"与”逻辑运算产生一子代A;按位”或”逻辑运算产生另一子代B。该交叉策略在解背包问题中效果较好.如:

01001011

11011101

01001001

11011111

变异是指依据变异概率将个体编码串中的某些基因值用其它基因值来替换,从而形成一个新的个体。GA中的变异运算是产生新个体的辅助方法,它决定了GA的局部搜索能力,同时保持种群的多样性。交叉运算和变异运算的相互配合,共同完成对搜索空间的全局搜索和局部搜索。

注:变异概率Pm不能太小,这样降低全局搜索能力;也不能太大,Pm>0.5,这时GA退化为随机搜索。

在繁殖过程,新产生的染色体中的基因会以一定的概率出错,称为变异。变异发生的概率记为Pm。

基本位变异算子是指对个体编码串随机指定的某一位或某几位基因作变异运算。对于基本遗传算法中用二进制编码符号串所表示的个体,若需要进行变异操作的某一基因座上的原有基因值为0,则变异操作将其变为1;反之,若原有基因值为1,则变异操作将其变为0。

变异前:

000001110000000010000

变异后:

000001110000100010000

在个体中随机挑选两个逆转点,再将两个逆转点间的基因交换。如:

变异前:1346798205

变异后:1246798305

GA运行时选择的参数应该视解决的具体问题而定,到目前为止,还没有一个适用于GA所有应用领域的关于算法参数的理论。下面是一般情况下使用GA时推荐的参数:

交叉率一般来说应该比较大,推荐使用80%-95%。

变异率一般来说应该比较小,一般使用0.5%-1%最好。

种群规模指的是群体中个体的个数。实验发现,比较大的种群的规模并不能优化遗传算法的结果。种群的大小推荐使用20-30,一些研究表明,种群规模的大小取决于编码的方法,具体的说就是编码串(EncodedString)的大小。也就是说,如果说采用32位为基因编码的时候种群的规模大小最好为32的话,那么当采用16位为基因编码时种群的规模相应应变为原来的两倍。

个人的想法是,设定一个计数器,如果连续N代出现的最优个体的适应度都一样时,(严格的说应该是,连续N代子代种群的最优个体适应度都<=父代最优个性的适应度)可以终止运算。

SGA(基本遗传算法)中采用轮盘赌选择方法

基本遗传算法伪代码/**Pc:交叉发生的概率*Pm:变异发生的概率*M:种群规模*G:终止进化的代数*Tf:进化产生的任何一个个体的适应度函数超过Tf,则可以终止进化过程*/初始化Pm,Pc,M,G,Tf等参数。随机产生第一代种群Popdo{计算种群Pop中每一个体的适应度F(i)。初始化空种群newPopdo{根据适应度以比例选择算法从种群Pop中选出2个个体if(random(0,1)

遗传算法的局部搜索能力较强,但是很容易陷入局部极值。引用网上的一段原话:“那么如何解决遗传算法容易陷入局部极值的问题呢?让我们来看看大自然提供的方案。

六千五百万年以前,恐龙和灵长类动物并存,恐龙在地球上占绝对统治地位,如果恐龙没有灭绝灵长类动物是绝没有可能统治地球的。正是恐龙的灭绝才使灵长类动物有了充分进化的余地,事实上地球至少经历了5次物种大灭绝,每次物种灭绝都给更加高级的生物提供了充分进化的余地。所以要跳出局部极值就必须杀死当前所有的优秀个体,从而让远离当前极值的点有充分的进化余地。这就是灾变的思想。”

灾变就是杀掉最优秀的个体,这样才可能产生更优秀的物种。那何时进行灾变,灾变次数又如何设定?

何时进行灾变,可以采用灾变倒计数的方式。如果n代还没有出现比之前更优秀的个体时,可以发生灾变。灾变次数可以这样来确定,如果若干次灾变后产生的个体的适应度与没灾变前的一样,可停止灾变。

当利用交叉和变异产生新的一代时,我们有很大的可能把在某个中间步骤中得到的最优解丢失。

精英主义的思想是,在每一次产生新的一代时,首先把当前最优解原封不动的复制到新的一代中。然后按照前面所说的那样做就行。精英主义方法可以大幅提高运算速度,因为它可以防止丢失掉找到的最好的解。

精英主义是基本遗传算法的一种优化。为了防止进化过程中产生的最优解被交叉和变异所破坏,可以将每一代中的最优解原封不动的复制到下一代中。

由上面看来,灾变与精英主义之间似乎存在着矛盾.前者是将产生的最优个体杀掉,而后者是将最优秀个体基因直接保存到下一代.

应该辩证地看待它们之间的矛盾,两者其实是可以共存的.我们在每一代进行交叉运算时,均直接把最优秀的个体复制到下一代;但当连续N代,都没有更优秀的个体出现时,便可以猜想可能陷入局部最优解了,这样可以采用灾变的手段.可以说,精英主义是伴随的每一代的,但灾变却不需要经常发生,否则算法可能下降为随机搜索了.

当然,每个算法中不一定要用精英主义和灾变的手段,应该根据具体的问题而定

可在3个基本操作的基础上增加一个插入操作。插入操作将染色体中的某个随机的片段移位到另一个随机的位置。

将遗传算法用于解决各种实际问题后,人们发现遣传算法也会由于各种原因过早向目标函数的局部最优解收敛,从而很难找到全局最优解。其中有些是由于目标函数的特性造成的,例如函数具有欺骗性,不满足构造模块假说等等;另外一些则是由于算法设计不当。为此,不断有人对遗传算法提出各种各样的改进方案。例如:针对原先的定长二进制编码方案;提出了动态编码、实数编码等改进方案;针对按比例的选择机制,提出了竞争选择、按续挑选等改进方案;针对原先的一点交算子,提出了两点交、多点交、均匀交等算子;针对原先遗传算法各控制参数在进化过程中不变的情况,提出了退化遗传算法、自适应遗传算法等。另外,针对不同问题还出现了分布式遗传算法、并行遗传算法等等。

参考文献都是干货!!!参考文献都是干货!!!参考文献都是干货!!!

THE END
1.推荐系统基本流程推荐算法流程图本文详细介绍了推荐系统的基本流程,涉及物品、用户、场景、搜索模型及排序算法。涵盖了召回模块、排序模块和后排模块的运作,以及常用的召回和排序模型。重点讲解了如何通过用户行为和特征计算个性化推荐,适合深入理解推荐系统技术的读者。 摘要由CSDN通过智能技术生成 https://blog.csdn.net/qq_56422229/article/details/124846254
2.推荐系统最新架构推荐系统功能流程图推荐系统最新架构 推荐系统功能流程图 推荐系统主要解决的是信息过载的问题,目标是从海量物品筛选出不同用户各自喜欢的物品,从而为每个用户提供个性化的推荐。推荐系统往往架设在大规模的业务系统之上,面临着用户的不断增长,物品的不断变化,并且有着全面的推荐评价指标和严格的性能要求(Netflix 的请求时间在 250 ms https://blog.51cto.com/u_16099304/8328916
3.设计算法.输入正整数n.计算它的阶乘n!.画出流程图.用for语句描述解:算法流程图如答图所示: 用for语句描述算法如下: 输入n; T:=1; for i:=1 to n do begin T:=T*i; end. 输出T. 练习册系列答案 创新教程系列答案 互动中考复习大讲义系列答案 中考阶段总复习ABC系列答案 达优测试卷系列答案 剑指中考系列答案 http://www.1010jiajiao.com/gzsx/shiti_id_77d21cec7625a12d71db452d984156ef
4.基于协同过滤推荐算法的购物网站的设计与实现(14页)1算法流程图系统算法流程图设计如图5.14所示。 3.2算法实现此功能模块是体现在评价成功后的页面上的,当用户购买成功并评价成功的时候, 系统会将所评论的商品以及评分与其他评分进行比较和分析,然后将算法算出的结果推 测为用户可能会喜欢的商品并推荐给用户,将推荐的商品显示在猜你喜欢的模块上。所 以该功能实现的https://max.book118.com/html/2020/0413/8100115027002106.shtm
5.用了很久的YouTubeApp之后,我写下了这份产品体验报告App信息结构图 3.3 基础流程 基础流程图 4、交互体验 4.1 UI界面 页面切换 YouTube App内的页面间切换方式为点击切换,不支持左右滑动切换。 导航设计 YouTube App主界面导航采用底部固定式选项卡菜单,共5个:首页、时下流行、订阅内容、收件箱、媒体库。 https://www.digitaling.com/articles/241247.html
6.工业界推荐系统排序技术要点总结,专注大模型、学术论文、算法实战、面经分享 工业界的推荐系统技术要点总结,从事推荐系统相关方向的同学都建议刷一刷。喜欢记得收藏、关注、点赞。文末提供搜广推技术交流群。 另外,随着大模型与搜广推各场景的融合越来越多,相关技术也是面试常考点,为此写了两本书进行总结,喜欢可以看看。 https://zhuanlan.zhihu.com/p/689894486
7.流程图制作软件哪个好?流程图制作软件推荐流程图绘制软件大全包含了业务流程图,程序流程图,工作流程图,数据流程图,生产工艺流程图,word流程图,采购流程图,信用证流程图,算法流程图,招聘流程图,化工工艺流程图,带控制点的工艺流程图,销售业务流程图,审批流程图,合成氨工艺流程图,酒店管理系统流程图,http://www.downcc.com/k/liuchengtuzhizuo/
8.RGSM3hmac/README.mdatmaster·rg4sun/RGHMAC 算法流程图 HMAC 算法描述 在HMAC 的定义中用到一个密码散列函数和一个密钥 Key。本作品使用的 SM3 作 为对明文进行分组循环压缩的散列函数,明文分组长度为 64(byte),散列函 数的输出长度为 32(byte)。认证密钥 K 为随机生成。 再定义两个不同的固定字符串 iPad 和 oPad 如下(“i”和“o”表示内部https://github.com/RGNil/RG_SM3hmac/blob/master/README.md
9.机器学习推荐算法原理入门及算法介绍消费金融风控联盟比如,年纪大的人,我推荐猕猴桃,维生素丰富还能降血糖。小姑娘呢,可以推荐她们柠檬,美白又减肥。 协同过滤这个算法,目的就是找相似。其中:找相似,可以是找相似的人,也可以找相似的东西。 协同过滤(collaborative filtering)是通过将用户和其他用户的数据进行对比来实现推荐的算法。协同过滤流程图如下: https://www.shangyexinzhi.com/article/7331518.html
10.结合信任关系的用户聚类协同过滤推荐算法图1算法整体流程图 最终通过预评分公式预测出目标用户a对项目的评分值, 选取评分值最高的前N个项目作为推荐结果. 算法1. 用户聚类迭代算法 输入: 用户集合U, 评分矩阵Rm×n 输出: 调整后的用户聚类 (1)首先用K-mean聚类算法对初始的用户集合进行聚类, 得到初始用户聚类$\scriptstyle UC = \left\{ {U{C_https://c-s-a.org.cn/html/2020/8/7561.html
11.PageRank算法实现好友推荐(算法原理)PageRank算法流程图 抽象模型 有向图 使用有向图表示: 有向图示例 这个例子中只有四个网页,如果当前在A网页,那么悠闲的上网者将会各以1/3的概率跳转到B、C、D,这里的3表示A有3条出链,如果一个网页有k条出链,那么跳转任意一个出链上的概率是1/k,同理D到B、C的概率各为1/2,而B到C的概率为0。 https://www.jianshu.com/p/cbb04e7384ee
12.你真的清楚流程图规范吗?流程图作为一种表达算法和思路最好的方法,一直在我们的生活中扮演着重要的角色。但是很多人画流程图都是大概一画,并没有按照流程图规范来画。难道流程图没有一个统一的规范吗?流程图当然有规范的画法,下面我来为大家介绍一些流程图规范。 既然说起流程图规范,那不得不提的就是流程图的三大结构。在说三大结构之前https://modao.cc/flowchart/flow-chart-specifications-you-should-know.html
13.流程图怎么做?分享流程图制作的基础知识流程图可以细分为工艺流程图、工作流程图、算法流程图、程序流程图和系统流程图等多种分类,但我们其实可以将这些分类的流程图归纳为逻辑流程图和基本流程图两大类型。 1.逻辑流程图:逻辑流程图用来表示流程内的核心运行过程,用来指导编写程序逻辑,并检查程序算法的正确性,便于帮助他人理解程序的逻辑思路https://m.liuchengtu.com/tutorial/lctzmz.html
14.用流程图描述算法中表示“条件判断”的图形符号是()。A.B.C用流程图描述算法中表示“条件判断”的图形符号是( )。 A. B. C. D. 相关知识点: 试题来源: 解析 答案:A 结果一 题目 用流程图描述算法中表示“条件判断”的图形符号是( )。 答案 答案:A相关推荐 1用流程图描述算法中表示“条件判断”的图形符号是( )。https://easylearn.baidu.com/edu-page/tiangong/questiondetail?id=1709863306399674600&fr=search