遗传拓扑神经网络

本文介绍了遗传拓扑神经网络(NEAT),一种结合神经网络和遗传算法的模型,由Kenneth O. Stanley等人在2003年提出。NEAT通过交叉和变异操作进化网络结构,用于解决适应度函数。文章详细阐述了NEAT的原理、核心算法、超参数设置,并提供了代码链接和实验结果,展示了遗传算法在强化学习领域的应用。
摘要由CSDN通过智能技术生成

上一节我们讲到了

遗传演化神经网络

今天为大家讲解

遗传拓扑神经网络

6.1 遗传拓扑神经网络

Kenneth O. Stanley等人[9]提出的遗传拓扑神经网络(NEAT算法)同样也是结合了神经网络和遗传算法产生的一种全新模型。它与6.1节介绍的遗传演化神经网络不同的地方在于加入了交叉操作。不过它的年代比较久远了,是来自2003年的一篇论文。因为近些年来计算机算力的提升与强化学习的兴起,遗传拓扑神经网络又走进了人们的视野。

6.2.1 遗传拓扑神经网络原理

正如之前的6.1节所说,遗传算法是个通用框架,因此我们需要根据具体的问题来定义遗传算法。不过,既然它是框架,那它就会有通用的几部分供我们选择,因此博主在此给大家先讲下整体的流程。

整体框架可分为三部分:交叉、变异与适应度。不过虽然整体的流程是一致的,但是因为问题不同,我们定义的基因也有所不同,那交叉与变异也会随之变化。

这篇论文将神经元及其连接定义成基因组,而遗传演化神经网络论文是将网络层及其学习率定义成基因组,大家可以对比着学习两者的异同,这样也能更好地感受为什么说遗传算法是解决一般性问题的通用框架,就是因为我们可以根据问题去定义基因组。

6.2.2 算法核心

1) 超参数设置

个体基因:(结点链接与结点类型)

种群规模:150

物种划分:基于权值相似度划分物种

2) 伪代码

1.  while condition:  
2.    if random.random < 交叉率:
3.      选择操作(适应度越高,越容易被选中)  
4.      物种内交叉  
5.      if random.random < 变异率:
6.        变异操作  
7.      评估适应度  
8.    else:  # 直接变异  
9.      if random.random < 变异率:
10.         变异操作  
11.       评估适应度  
12.    # 淘汰操作  
13.       每个物种保留一定数量的个体  
14.    if random.random < 灭绝率:
15.       灭绝最差的物种  
16.       种群间的物种交叉生成亚种, 弥补新的物种  
17.     
18.   conditon:迭代次数 or fittness达到设定的阈值  
19.   评估适应度:fitness = 1/(训练集的误差)^2  
20.   这里的适应度函数是自定义的,大家可以根据自己的想法去定义。 

3) 交叉操作

论文通过一个链表定义基因的节点连接,选择两个个体进行交叉的时候,按照链表的顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值