遗传算法的讲解

遗传算法是一个强大的算法,它可以解决多种实际的问题,比如对一个函数求最大值、优化神经网络参数等。它的强大在于它使用通俗易懂的遗传算法基本上可以找到问题的最优解。影响遗传算法性能的因素有很多,比如对种群的初始化的方式、交叉和变异的概率、选取父本的方法等。下面结合具体问题来说明一下算法流程,并进行相应讲解,后续会出python的代码具体讲解。

讲解的问题就是使用遗传算法对神经网络的参数进行优化(此篇文章只是大致讲解,从而让读者可以更容易的理解,想要深入理解等后续我会具体结合代码进行讲解)。

1.初始化种群

首先第一步就是初始化种群。因为是对神经网络的参数进行优化,所以初始化的种群的个体就是神经网络的参数。假设该神经网络共有1000个参数,那么种群中每一个个体就可以初始化成含有1000个数的数组。种群的大小表示了该种群含有的个体的数量,假设我们本例中共有8个个体,这8个个体都是随机初始化的,也就是说每个个体的数组中的值是不同的,这8个个体共同构成了一个种群。

2.算出适应度

初始化好了种群之后,我们需要通过使用定义好的适应度函数算出种群中每个个体的适应度,从而体现出每个个体的优劣势。在本例中,每个个体的适应度可以按准确率来赋值,即将每个个体的数组中的值赋值给神经网络的参数,之后给定输入和输出,按照当前的网络的参数算出准确率。准确率越高说明该个体适应度越高,该个体越好。

3.挑选父本

在算出每个个体的适应度之后要对种群中的个体进行挑选,之后进行交配操作。挑选父本可以有多种方法,比如轮盘赌(类似于在转盘上扔飞镖,适应度越高,选中的概率就越大,这样就能保证优秀的个体得以保存)、按照适应度从大到小挑选等。在本例中我们可以选择第二种,即按照适应度大小进行挑选,我们可以挑选出前4个适应度最大的个体。

4.进行交配

对挑选的4个个体进行交配(即交换4个个体的数据),至于谁跟谁交配就看交配原则了。我们进行随机交配,即在4个个体中随机挑选4对进行交配,从而生成4个新的个体。在其他文章的遗传算法讲解中,这一节还有一个交叉概率,即选择父本进行交配的概率。此问题中没有涉及到这个,是为了更加简便。

5.变异

接下来对交配完的新个体进行变异操作,这时候需要用到变异概率,即每个个体中发生变异的概率,假设我们设置的变异概率为10%,那么在每个个体中将会有1000*0.1=100个数进行变异,变异就是改变原有的值,怎么改变在于你了,在本文中,我对其选出的100个数进行随机数赋值的操作。

6.合并

由于第4步生成了4个新的个体,在进行变异之后仍然是4个新个体,我们需要在挑选4个个体加入其中,就变为8个个体了,从而又构成了一个新的种群。在本文中,我们挑选前四个适应度最好的个体加入其中。现在该种群共有8个个体,其中前四个个体是适应度排名前四的个体,后四个为交叉变异后的个体。

7.判断

继续对新的种群算出新的适应度,之后进行判断,即看看是否符合要求或者是否到达了最大迭代次数,如果没有就跳到步骤3,否则跳到步骤8。

8.结束

取出该种群中适应度最高的个体,在本例中取出第一个个体即可,因为前四个是按照适应度从大到小进行排列的,所以第一个个体就是适应度最高的个体。将该个体中的数组赋值给神经网络中的参数,该神经网络就算优化完成了。

以上便是针对于优化神经网络参数进行的遗传算法的讲解。谢谢各位的阅读,欢迎指出问题,欢迎互相讨论。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值