本期课程到这里,博主就默认大家已经对BP、CNN、RNN等基本的神经网络属性以及训练过程都有相应的认知了,如果还未了解最基本的知识,可以翻看博主制作的深度学习的学习路线,按顺序阅读即可。
深度学习的学习路线:往期课程
Hello,又是一个分享的日子,博主将在本期推文给大家介绍遗传演化神经网络。演化神经网络描绘了一个优胜劣汰的传承。演化神经网络是结合了神经网络和遗传算法与进化策略产生的一种全新模型。它通过模仿自然界“适者生存”的原则来赋予神经网络在代际循环中优化的力量,能有效克服传统神经网络在训练过程中的缺点。因此,演化神经网络也逐步成为未来科研的热点。好了,闲言少叙,我们这就走进演化神经网络的世界。
本期推文思想来自2017年IEEE的顶会文章 https://www. researchgate.net/public ation/320054898_EDEN_Evolutionary_Deep_Networks_for_Efficient_Machine_Learning
本文内容概要:
- 遗传算法原理与整体流程
- 遗传算法遇上神经网络
- 演化神经网络实例
1.遗传算法
1.1原理
相信各位小伙伴对遗传这个词已经不陌生了,我们人类文明发展至今离不开遗传与进化。不知道大家有没有一种感觉,现在的初中生已经比我们这群大学生高了,往宏观里想就是下一代已经比我们这一代在身高上已经优化了。博主还在混迹于各大黑网吧的初中年代,在广东是很少能见到有180+的小伙子浪荡于街头的,现在随便一个穿校服的小孩子均高都在180+。博主每次坐地铁都深感惭愧,但同时也感叹生命的力量,遗传让每一个弱小的生物在代际循环中获得了优化的力量,表现出越来越适应生存环境的能力,因为不适应环境的生命早在迭代的过程中逐渐消亡。为此,博主也验证了穷不过三代这个观点是对的,因为穷小子在第三代就找不到老婆了TAT。不过大家也不用妄自菲薄,每个小伙伴能来到这个世界上,说明大家的父辈的父辈的父辈们至少是个大户人家。
显然,博主能注意的小现象,很多年前肯定也有小伙伴会注意到,为此有些厉害的小伙伴就将遗传搬进了计算机,让计算机模仿遗传,赋予程序优化的力量。
目标函数(Target Function)和相应的适应度函数(Fitness Function),所以遗传算法提供了一种求解复杂系统问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的稳定性,所以广泛应用于许多科学。
翻译成人话就是遗传算法能够解决很多问题,机器学习只是一个方向,小伙伴们只要有想法,随时随地都能将遗传用在别的问题上,比如路径规划、旅行商(TSP)问题、车间设施布局优化问题。
1.2整体流程
上文提到遗传算法是个通用框架,因此我们需要根据具体的问题来应用遗传算法。不过,既然它是框架,那它就会有通用的几部分供我们选择,因此博主在此给大家先讲下整体的流程。
整体框架可分为三部分:交叉、变异与适应度。
伪代码如下:
1.
所以,整个流程可以理解为有一个种群,他们不断地生小孩(交叉与变异),适应环境(评价函数)的小孩和大人会被保留,不适应的环境的大人和小孩会被杀掉,通过不断地迭代,最终得到的种群是最适应环境的。
另外,值得一提的是,上面所说的交叉、变异与适应度都是根据具体问题去定义的,所以才说遗传算法是个通用框架,能够解决很多问题。
2.演化神经网络
程序自组网络,得到网络分类效果比我们人工组多层网络训练的效果要好。
本文实例使用的数据集是疟疾细胞数据集,通过遗传算法组建一个网络,达到识别疟疾细胞分类(感染与未感染)效果最佳。
疟疾细胞数据集链接
Malaria Datasetslhncbc.nlm.nih.gov
伪代码如下:
2.1生成初始种群:
input
2.2个体网络(chromesome)生成规则
input
2.3整体流程
1.
2.4实验环境
- Anaconda Python 3.7
- Jupyter Notebook
- Keras
开发环境安装在之前的推文中已经介绍,还没安装的小伙伴可以翻一下。
Python开发环境---Windows与服务器篇mp.weixin.qq.com
Python深度学习开发环境---Kerasmp.weixin.qq.com
2.5代码
ChileWang0228/DeepLearningTutorialgithub.com
2.6训练结果
遗传算法的自组网络
分类结果的混淆矩阵
2.7视频版
视频版包含了代码讲解部分,不过博主的代码都做了相应的注释,相信大家都能看懂,喜欢视频版的小伙伴可以去观看~~~
3.总结
演化神经网络的知识点讲完了。大家在掌握了整个流程之后,就可以在博主的代码上修修补补,训练自己的演化神经网络模型了。