深度学习卷积神经网络架构设计核心技术

龙鹏,先后就读于华中科技大学,中国科学院,先后就职于奇虎360AI研究院,陌陌深度学习实验室,6年计算机视觉从业经验,拥有丰富的传统图像算法和深度学习图像项目经验,拥有技术公众号《有三学AI》,曾在gitchat,网易云课堂开设多门计算机视觉方面的课程,著有《深度学习之图像识别:核心技术与案例实战》。

文章正文

卷积神经网络结构是深度学习中的核心技术,本文就从各个方面来讲述其中的核心设计技术。本文假设大家已经具备较好的深度学习基础理论和实践经验,因此对一些基础概念不会做解释。

1. 如何设计网络的深度

1.1 网络深度的重要性

首先我们要简单理解一下网络深度对一个模型的重要性,深度学习模型之所以在各种任务中取得了成功,足够的网络深度起到了很关键的作用,主要可以从两个方向进行理解。

1.1.1 更好拟合特征

现在的深度学习网络结构的基本模块是卷积、池化、激活,这是一个标准的非线性变换模块。更深的模型,意味着更好的非线性表达能力,可以学习更加复杂的变换,从而可以拟合更加复杂的特征输入。

看下面的一个对比图,实线是一个只有一层,20 个神经元的模型,虚线是一个 2 层,每一层 10 个神经元的模型。从图中可以看出,2 层的网络有更好的拟合能力,这个特性也适用于更深的网络。

enter image description here

1.1.2 网络更深,每一层要做的事情也更加简单了

每一个网络层各司其职,我们从 ZFNet 反卷积看一个经典的网络各个网络层学习到的权重。第一层学习到了边缘,第二层学习到了简单的形状,第三层开始学习到了目标的形状,更深的网络层能学习到更加复杂的表达。如果只有一层,那就意味着要学习的变换非常的复杂,这很难做到。

enter image description here

上面就是网络加深带来的两个主要好处,更强大的表达能力和逐层的特征学习。

1.2 如何确定网络的深度

首先我们看一下主流模型的深度。

enter image description here

可以看得出来,超过 30 层的网络是很少见的, 所以我们完成一个任务,通常可以选择深度从 5~8 层开始。以一个图像分类任务为例,为了高效通常不会使用太大的输入分辨率,200~300 左右是很常见的,假如每一个网络层下降 1/2 分辨率, 那么 224*224 的输入 5 层正好下降到 7*7,正是完成一个分类任务需要的最好的分辨率。

1.3 实验网络深度对性能的影响

这里准备了一个简单分类数据集 + 一个复杂分类数据集,两个基准模型,一个就是简单的卷积 + 池化堆叠的模型,一个就是 MobileNet。

enter image description here

MobileNet 这里就不介绍了,简单的模型的结构如下:

enter image description here

这里实验了不同深度的,包含了 4~8 个卷积层的网络,使用的 stride=2,配置如下:

作者正在撰写中...

隐藏内容 支付可见
内容互动
写评论
加载更多
评论文章
¥5.99 购买
× 订阅 Java 精选频道
¥ 元/月
订阅即可免费阅读所有精选内容