#### 2.2.1最近ConvNets演变中的关键架构
重新引起对ConvNet架构兴趣的工作是Krishevsky的AlexNet [88]。 AlexNet能够在ImageNet数据集上实现破纪录的对象识别结果。它由8层组成,5个卷积和3个完全连接,如图2.8所示。
AlexNet介绍了几种架构设计决策,允许使用标准随机梯度下降进行有效的网络训练。特别是,四项重要贡献是AlexNet成功的关键。首先,AlexNet考虑使用ReLU非线性而不是先前最先进的ConvNet架构中使用的饱和非线性(如sigmoids)(_,例如_ .LeNet [91])。 ReLU的使用减少了消失梯度的问题,并导致更快的训练。其次,注意到网络中最后一个完全连接的层包含最多参数的事实,AlexNet使用了丢失,首先在神经网络[136]的背景下引入,以减少过度拟合的问题。在AlexNet中实现的Dropout,包括随机丢弃(_,即_。设置为零)一个层参数的给定百分比。该技术允许在每次通过时训练略微不同的架构并且人为地减少每次通过时要学习的参数的数量,这最终有助于破坏单元之间的相关性,从而防止过度拟合。第三,AlexNet依靠数据增强来提高网络学习不变表示的能力。例如,网络不仅训练在训练集中的原始图像上,而且还训练通过随机移动和反射训练图像而产生的变化。最后,AlexNet还依靠几种技术使训练过程更快地收敛,例如使用动量和预定学习率降低,从而每次学习停滞时学习率都会降低。
![](https://img.kancloud.cn/e2/b6/e2b69200b3835c7795f761659c921898_564x179.png)
图2.8:AlexNet架构。值得注意的是,虽然描述建议采用双流体系结构,但实际上它是单流体系结构,这种描述仅反映了AlexNet在2个不同的GPU上并行训练的事实。图[88]再版。
AlexNet的出现导致试图通过可视化了解网络正在学习什么的论文数量急剧增加,如所谓的DeConvNet [154],或者通过对各种架构的系统探索[22,23]。这些探索的直接结果之一是认识到更深的网络可以实现更好的结果,如19层深VGG-Net中首次证明的那样[135]。 VGG-Net通过简单堆叠更多层来实现其深度,同时遵循AlexNet引入的标准实践(_,例如_。依靠ReLU非线性和数据增强技术进行更好的培训)。在VGG-Net中呈现的主要新颖性是使用空间范围较小的滤波器(_即_。![](https://img.kancloud.cn/31/90/3190244ba5be1d70aed91cc959f632ed_40x12.gif)在整个网络中过滤而不是_,例如_。在AlexNet中使用![](https://img.kancloud.cn/f9/45/f945cacde2536436e555f641cd896358_56x13.gif)过滤器),它允许增加深度而不会显着增加网络需要学习的参数数量。值得注意的是,在使用较小的过滤器时,VGG-Net每层需要更多的过滤器。
VGG-Net是遵循AlexNet的许多深度ConvNet架构中的第一个也是最简单的。后来提出了一个更深层的架构,通常称为GoogLeNet,有22层[138]。由于使用了所谓的初始模块(如图2.9(a)所示)作为构建块,因此GoogLeNet比VGG-Net更深,所需参数要少得多。在初始模块中,各种尺度的卷积运算和空间池并行发生。该模块还增加了![](https://img.kancloud.cn/4b/87/4b87d4243363f6c46b6a8a9e50a2d715_38x13.gif)卷积(_,即_。跨通道池),用于降低维数以避免或衰减冗余过滤器,同时保持网络的大小可管理。这种跨渠道汇集的想法是由以前的一项名为网络网络(NiN)[96]的研究结果推动的,该研究揭示了学习网络中的大量冗余。堆叠许多初始模块导致现在广泛使用的GoogLeNet架构如图2.9(b)所示。
| ![](https://img.kancloud.cn/6e/17/6e17f6c38eccba2409c28df672f111b0_332x174.png) |
| (一个) |
| ![](https://img.kancloud.cn/f0/04/f004c0238f4c664296817d3ce9e629d1_628x144.png) |
| (b)中 |
图2.9:GoogLeNet架构。 (a)典型的初始模块,显示顺序和并行发生的操作。 (b)典型“初始”架构的图示,其包括堆叠许多初始模块。图[......]转载
GoogLeNet是第一个偏离简单堆叠卷积和汇集层的策略的网络,很快就出现了迄今为止最深层的架构之一,称为ResNet [64],它还提出了一个超过150层的新架构。 ResNet代表剩余网络,主要贡献在于它依赖于剩余学习。特别是,构建ResNet使得每个层在输入![](https://img.kancloud.cn/77/90/7790dd0efb4a03a4c876741804d9b559_10x8.gif)之上学习增量变换![](https://img.kancloud.cn/59/b4/59b4640f5bad6b14066d718cf44e9f9c_37x18.gif),根据
![](https://img.kancloud.cn/5e/f8/5ef87aac00d84cf3cadc75bd8290f056_139x18.gif)(2.15)
而不是像其他标准ConvNet架构那样直接学习转换![](https://img.kancloud.cn/4d/0f/4d0f7cac77c165860359fc888b63f730_39x18.gif)。这种剩余学习是通过使用跳过连接来实现的,如图2.10(a)所示,它使用身份映射连接不同层的组件。信号的直接传播![](https://img.kancloud.cn/77/90/7790dd0efb4a03a4c876741804d9b559_10x8.gif)在反向传播期间对抗消失的梯度问题,从而能够训练非常深的架构。
| ![](https://img.kancloud.cn/b8/72/b8720d5adcb81de1d159bfa8b7337c8d_332x200.png) |
| (a) |
| ![](https://img.kancloud.cn/88/a5/88a5cd85f905142dfa0d3fafb46a28c9_630x92.png) |
| (b) |
图2.10:ResNet架构。 (a)剩余模块。 (b)典型ResNet架构的图示,包括堆叠许多剩余模块。图[64]转载。
最近,一个关于ResNet成功的密切相关的网络就是所谓的DenseNet [72],它进一步推动了剩余连接的概念。在DenseNet中,每个层通过跳过连接连接到密集块的所有后续层,如图2.11所示。具体地,密集块将所有层与相同大小的特征图连接(_,即空间池层之间的_。块)。与ResNet不同,DenseNet不会添加前一层的特征映射(2.15),而是连接特征映射,以便网络根据以下内容学习新的表示。
![](https://img.kancloud.cn/c5/e7/c5e7a766325df6a9ce19881ada1a86d3_207x18.gif)(2.16)
作者声称,这种策略允许DenseNet在每一层使用更少的过滤器,因为通过将在一层提取的特征推送到层次结构中更高层的其他层,可以避免可能的冗余信息。重要的是,这些深度跳过连接允许更好的梯度流,因为较低层可以更直接地访问损耗函数。使用这个简单的想法,DenseNet可以与其他深层架构竞争,例如ResNet,同时需要更少的参数并减少过度拟合。
| ![](https://img.kancloud.cn/6b/dc/6bdca5280e0da6c466c4d43e581680d8_332x235.png) |
| (a) |
| ![](https://img.kancloud.cn/1d/a5/1da59f92a5f4e652560b8b2d5aec88c5_628x87.png) |
| (b) |
图2.11:DenseNet架构。 (a)密集的模块。 (b)典型的DenseNet架构的图示,该架构包括堆叠许多密集模块。图[72]再版。
- TensorFlow 1.x 深度学习秘籍
- 零、前言
- 一、TensorFlow 简介
- 二、回归
- 三、神经网络:感知器
- 四、卷积神经网络
- 五、高级卷积神经网络
- 六、循环神经网络
- 七、无监督学习
- 八、自编码器
- 九、强化学习
- 十、移动计算
- 十一、生成模型和 CapsNet
- 十二、分布式 TensorFlow 和云深度学习
- 十三、AutoML 和学习如何学习(元学习)
- 十四、TensorFlow 处理单元
- 使用 TensorFlow 构建机器学习项目中文版
- 一、探索和转换数据
- 二、聚类
- 三、线性回归
- 四、逻辑回归
- 五、简单的前馈神经网络
- 六、卷积神经网络
- 七、循环神经网络和 LSTM
- 八、深度神经网络
- 九、大规模运行模型 -- GPU 和服务
- 十、库安装和其他提示
- TensorFlow 深度学习中文第二版
- 一、人工神经网络
- 二、TensorFlow v1.6 的新功能是什么?
- 三、实现前馈神经网络
- 四、CNN 实战
- 五、使用 TensorFlow 实现自编码器
- 六、RNN 和梯度消失或爆炸问题
- 七、TensorFlow GPU 配置
- 八、TFLearn
- 九、使用协同过滤的电影推荐
- 十、OpenAI Gym
- TensorFlow 深度学习实战指南中文版
- 一、入门
- 二、深度神经网络
- 三、卷积神经网络
- 四、循环神经网络介绍
- 五、总结
- 精通 TensorFlow 1.x
- 一、TensorFlow 101
- 二、TensorFlow 的高级库
- 三、Keras 101
- 四、TensorFlow 中的经典机器学习
- 五、TensorFlow 和 Keras 中的神经网络和 MLP
- 六、TensorFlow 和 Keras 中的 RNN
- 七、TensorFlow 和 Keras 中的用于时间序列数据的 RNN
- 八、TensorFlow 和 Keras 中的用于文本数据的 RNN
- 九、TensorFlow 和 Keras 中的 CNN
- 十、TensorFlow 和 Keras 中的自编码器
- 十一、TF 服务:生产中的 TensorFlow 模型
- 十二、迁移学习和预训练模型
- 十三、深度强化学习
- 十四、生成对抗网络
- 十五、TensorFlow 集群的分布式模型
- 十六、移动和嵌入式平台上的 TensorFlow 模型
- 十七、R 中的 TensorFlow 和 Keras
- 十八、调试 TensorFlow 模型
- 十九、张量处理单元
- TensorFlow 机器学习秘籍中文第二版
- 一、TensorFlow 入门
- 二、TensorFlow 的方式
- 三、线性回归
- 四、支持向量机
- 五、最近邻方法
- 六、神经网络
- 七、自然语言处理
- 八、卷积神经网络
- 九、循环神经网络
- 十、将 TensorFlow 投入生产
- 十一、更多 TensorFlow
- 与 TensorFlow 的初次接触
- 前言
- 1. TensorFlow 基础知识
- 2. TensorFlow 中的线性回归
- 3. TensorFlow 中的聚类
- 4. TensorFlow 中的单层神经网络
- 5. TensorFlow 中的多层神经网络
- 6. 并行
- 后记
- TensorFlow 学习指南
- 一、基础
- 二、线性模型
- 三、学习
- 四、分布式
- TensorFlow Rager 教程
- 一、如何使用 TensorFlow Eager 构建简单的神经网络
- 二、在 Eager 模式中使用指标
- 三、如何保存和恢复训练模型
- 四、文本序列到 TFRecords
- 五、如何将原始图片数据转换为 TFRecords
- 六、如何使用 TensorFlow Eager 从 TFRecords 批量读取数据
- 七、使用 TensorFlow Eager 构建用于情感识别的卷积神经网络(CNN)
- 八、用于 TensorFlow Eager 序列分类的动态循坏神经网络
- 九、用于 TensorFlow Eager 时间序列回归的递归神经网络
- TensorFlow 高效编程
- 图嵌入综述:问题,技术与应用
- 一、引言
- 三、图嵌入的问题设定
- 四、图嵌入技术
- 基于边重构的优化问题
- 应用
- 基于深度学习的推荐系统:综述和新视角
- 引言
- 基于深度学习的推荐:最先进的技术
- 基于卷积神经网络的推荐
- 关于卷积神经网络我们理解了什么
- 第1章概论
- 第2章多层网络
- 2.1.4生成对抗网络
- 2.2.1最近ConvNets演变中的关键架构
- 2.2.2走向ConvNet不变性
- 2.3时空卷积网络
- 第3章了解ConvNets构建块
- 3.2整改
- 3.3规范化
- 3.4汇集
- 第四章现状
- 4.2打开问题
- 参考
- 机器学习超级复习笔记
- Python 迁移学习实用指南
- 零、前言
- 一、机器学习基础
- 二、深度学习基础
- 三、了解深度学习架构
- 四、迁移学习基础
- 五、释放迁移学习的力量
- 六、图像识别与分类
- 七、文本文件分类
- 八、音频事件识别与分类
- 九、DeepDream
- 十、自动图像字幕生成器
- 十一、图像着色
- 面向计算机视觉的深度学习
- 零、前言
- 一、入门
- 二、图像分类
- 三、图像检索
- 四、对象检测
- 五、语义分割
- 六、相似性学习
- 七、图像字幕
- 八、生成模型
- 九、视频分类
- 十、部署
- 深度学习快速参考
- 零、前言
- 一、深度学习的基础
- 二、使用深度学习解决回归问题
- 三、使用 TensorBoard 监控网络训练
- 四、使用深度学习解决二分类问题
- 五、使用 Keras 解决多分类问题
- 六、超参数优化
- 七、从头开始训练 CNN
- 八、将预训练的 CNN 用于迁移学习
- 九、从头开始训练 RNN
- 十、使用词嵌入从头开始训练 LSTM
- 十一、训练 Seq2Seq 模型
- 十二、深度强化学习
- 十三、生成对抗网络
- TensorFlow 2.0 快速入门指南
- 零、前言
- 第 1 部分:TensorFlow 2.00 Alpha 简介
- 一、TensorFlow 2 简介
- 二、Keras:TensorFlow 2 的高级 API
- 三、TensorFlow 2 和 ANN 技术
- 第 2 部分:TensorFlow 2.00 Alpha 中的监督和无监督学习
- 四、TensorFlow 2 和监督机器学习
- 五、TensorFlow 2 和无监督学习
- 第 3 部分:TensorFlow 2.00 Alpha 的神经网络应用
- 六、使用 TensorFlow 2 识别图像
- 七、TensorFlow 2 和神经风格迁移
- 八、TensorFlow 2 和循环神经网络
- 九、TensorFlow 估计器和 TensorFlow HUB
- 十、从 tf1.12 转换为 tf2
- TensorFlow 入门
- 零、前言
- 一、TensorFlow 基本概念
- 二、TensorFlow 数学运算
- 三、机器学习入门
- 四、神经网络简介
- 五、深度学习
- 六、TensorFlow GPU 编程和服务
- TensorFlow 卷积神经网络实用指南
- 零、前言
- 一、TensorFlow 的设置和介绍
- 二、深度学习和卷积神经网络
- 三、TensorFlow 中的图像分类
- 四、目标检测与分割
- 五、VGG,Inception,ResNet 和 MobileNets
- 六、自编码器,变分自编码器和生成对抗网络
- 七、迁移学习
- 八、机器学习最佳实践和故障排除
- 九、大规模训练
- 十、参考文献