网站首页 > 技术文章 正文
论文将标准的遗传算法应用到神经网络结构搜索中,首先对网络进行编码表示,然后进行遗传操作,整体方法十分简洁,搜索空间设计的十分简单,基本相当于只搜索节点间的连接方式,但是效果还是挺不错的,十分值得学习 ?
来源:晓飞的算法工程笔记 公众号
论文: Genetic CNN
- 论文地址:https://arxiv.org/abs/1703.01513
Introduction
? 为了进行神经网络架构搜索,论文将网络限制为有限的深度,每层为预设的操作,但仍然存在很多候选网络,为了有效地在巨大的搜索空间中进行搜索,论文提出遗传算法进行加速。首先构造初始种群,然后对种群内的个体进行遗传操作,即选择、交叉和变异,通过识别的准确率来判断其适应性,最终获得强大的种群
Our Approach
Binary Network Representation
? 目前SOTA的网络大都由多个阶段构成,每个阶段内的层具有相同的维度,而相邻的阶段则用池化进行连接。借鉴这种思想,定义网络有个阶段组成,-th阶段()包含个节点,标记为,,节点按顺序排列,仅允许低序号节点连接到高序号节点,对节点的所有输入进行element-wise sum,每个节点代表卷积操作,卷积后都接BN+ReLU,网络不加入全连接层 ? 每个阶段使用位来表示内部连接,第一位表示连接,第二位和第三位则表示连接和,以此类推,最后位则表示与其它节点的连接。对于,如果,则和有边,将的输出作为element-wise sum的一部分。编码如图1所示,但是Stage 2的编码好像有点问题,按照图片应该是0-10-000-0011
- Technical Details
? 每个阶段默认有两个节点,分别为输入节点和输出节点,输入节点使用卷积将前一个阶段的特征进一步提取,然后传递给没有输入的节点中,输出节点则element-wise sum所有没被使用的节点的输出,然后进行一次卷积再接池化层,这里有两种特殊的情况:
- 如果节点被隔离了,没有非默认输入和输出,则直接忽略,如图1 B2节点
- 如果当前阶段没有连接,全部为0,则只进行一次卷积(原本至少输入输出节点都会进行一次)
- Examples and Limitations
? 这样的编码形式可以编码目前的主流分类结构,但也有很多局限性:
- 目前的连接方式只有卷积和池化,不能使用其它比较tricky的模块,例如Maxout
- 每个阶段的卷积核是固定的,阻碍了multi-scale特征的融合
Genetic Operations
? 遗传算法过程如图1所示,共进行代遗传,每代包含3个操作,选择、变异和交叉,适应值通过训练后的模型在验证集上获得
- Initialization
? 初始化一个随机模型集合,每个模型是长度为的二进制串,串上每位服从伯努利分布,,然后训练并测试每个模型的准确率,这里的初始化策略影响不大
- Selection
? 在每一代种群生成前都会进行选择操作,在-th代前,个体的适应性为,直接影响在选择阶段存活的概率。具体选择使用俄罗斯轮盘选择法(Russian roulette),每个个体选取的概率与成比例,为上一代的最低适应性。选择后的保持种群总数不变,所以一个个体可能会被选择多次
- Mutation and Crossover
? 变异的操作包含对二进制串每个位进行概率为的反转,而交叉的操作则同时改变两个个体,以概率对个体间的stage进行交换。个体变异的概率为,每组个体交叉的概率为,具体的操作看算法1,虽然这种方法很简单,但是十分有效
- Evaluation
? 在上述操作后,对每个个体进行训练以及测试来获得适应值,如果该个体之前已经测试过了,则直接再测一遍然后求平均,这样能移除训练中的不确定性
Experiments
MNIST Experiments
? 实验配置,,,,种群初始,共一次,,,,,一共只产生个网络,耗时2 GPU-day
CIFAR10 Experiments
? 实验配置,,,,种群初始,共一次,,,,,一共只产生个网络,耗时17 GPU-day
CIFAR and SVHN Experiments
? 将CIFAR-10中学习到的网络直接在别的数据集上进行测试
ILSVRC2012 Experiments
? 将图5中的两个网络在ILSVRC2012上进行训练,先用VFFNet的stem进行下采样,再过图5的网络,最后接全连接进行分类
CONCLUSION
? 论文将标准的遗传算法应用到神经网络结构搜索中,首先对网络进行编码表示,然后进行遗传操作,整体方法十分简洁,搜索空间设计的十分简单,基本相当于只搜索节点间的连接方式,但是效果还是挺不错的,十分值得学习
? ? ?
如果本文对你有帮助,麻烦点个赞或在看呗~ 更多内容请关注 微信公众号【晓飞的算法工程笔记】
猜你喜欢
- 2024-10-15 你认为CNN的归纳偏差,Transformer它没有吗?
- 2024-10-15 CB Loss:基于有效样本的类别不平衡损失
- 2024-10-15 资源|注意迁移的PyTorch实现 pytorch accuracy
- 2024-10-15 NVIDIA Jetson Nano 2GB 系列文章(49):智能避撞之现场演示
- 2024-10-15 针对不平衡问题建模的有趣Loss 不平衡指派问题matlab
- 2024-10-15 目标检测RCNN系列总结 目标检测nms
- 2024-10-15 谷歌开源GPipe:单个加速器处理参数3.18亿,速度提升25倍
- 2024-10-15 TensorFlow 模型优化工具包:模型大小减半,精度几乎不变
- 2024-10-15 资源受限场景下的深度学习图像分类:MSDNet多尺度密集网络
- 2024-10-15 ILSVR发展简介 ilsvrc创立者
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)