![526e20329385b9491634be8d1ec7cf15.png](https://i-blog.csdnimg.cn/blog_migrate/d7dcbc393dc7939fded1ca1b107b16bf.jpeg)
本期课程到这里,博主就默认大家已经对BP、CNN、RNN等基本的神经网络属性以及训练过程都有相应的认知了,如果还未了解最基本的知识,可以翻看博主制作的深度学习的学习路线,按顺序阅读即可。
深度学习的学习路线:往期课程
Hello,又是一个分享的日子,之前博主给大家介绍了遗传演化神经网络,这期博主将在本期推文给大家介绍遗传拓扑神经网络。遗传拓扑神经网络同样是结合了神经网络和遗传算法与进化策略产生的一种全新模型。它通过模仿自然界“适者生存”的原则来赋予神经网络在代际循环中优化的力量,能有效克服传统神经网络在训练过程中的缺点。它与上期介绍的遗传演化神经网络不同的地方在于加入了交叉操作,且它的年代比较久远了,是2003年的一篇论文,因为近些年来算力的提升与强化学习的兴起,又走进了人们的视野。好了,闲言少叙,我们这就走进遗传与深度学习的世界。
Neat算法的论文
《Evolving Neural Networks through Augmenting Topologies 》
提取码:yxph https:// pan.baidu.com/s/1SmMEsg SMEdUwnhvsmwfnPg&shfl=sharepset
本文内容概要:
- 遗传拓扑神经网络(Neat算法)原理
- 遗传拓扑神经网络(Neat算法)实验
- 实验总结
- 新的征程---NLP修炼指北
1. 遗传拓扑神经网络的思想
1.1 原理
正如之前的遗传演化神经网络的推文所说,遗传算法是个通用框架,因此我们需要根据具体的问题来定义遗传算法。不过,既然它是框架,那它就会有通用的几部分供我们选择,因此博主在此给大家先讲下整体的流程。
整体框架可分为三部分:交叉、变异与适应度。不过虽然整体的流程是一致的,但是因为问题不同,我们定义的基因也有所不同,那交叉与变异也会随之变化。
这篇论文将神经元及其连接定义成基因组,而遗传演化神经网络论文是将网络层及其学习率定义成基因组,小伙伴们可以对比着学习两者的异同,这样也能更好地感受为什么说遗传算法是解决一般性问题的通用框架,就是因为我们可以根据问题去定义基因组。
1.2 算法核心
1.2.1 个体基因与种群规模
个体基因:(结点链接与结点类型)
种群规模:150
物种划分:基于权值相似度划分物种
由于该论文已经有人写好了框架,因此以上参数在配置文件中修改
即可,这将会在代码那里给大家演示。
while condition:
if random.random < 交叉率:
选择操作(适应度越高,越容易被选中)
物种内交叉
if random.random < 变异率:
变异操作
评估适应度
else: # 直接变异
if random.random < 变异率:
变异操作
评估适应度
# 淘汰操作
每个物种保留一定数量的个体
if random.random < 灭绝率:
灭绝最差的物种
种群间的物种交叉生成亚种, 弥补新的物种
conditon:迭代次数 o