Alexnet总结/论文笔记

本文主要从如下几个方面分析深度学习Alexnet网络:

1. 为什么Alexnet能在图2012 ImageNet LSVRC-2012 像识别(分类) competition取得这么好的成绩
2. Alexnet的网络结构以及,参数数量的计算
3. 为了避免过拟合使用的技巧:Data Augmentation(数据增强),正则化Relu以及dropout,局部响应归一化LRN。
4. 对比了多个小的卷积核和大的卷积核的区别(前面BAT面试题)。

1. Alexnet取得成功的原因,主要三条:

  1. 大量数据,Deep Learning领域应该感谢李飞飞团队搞出来如此大的标注数据集合ImageNet;

  2. GPU,这种高度并行的计算神器确实助了洪荒之力,没有神器在手,Alex估计不敢搞太复杂的模型;

  3. 算法的改进,包括网络变深、数据增强、ReLU、Dropout等。


2. Alexnet网络结构以及参数数量的计算

Alexnet网络的大体结构如下(论文以及一般的blog都是如下这个图,但是看起来很不直观):

这里写图片描述

下面给出两个更好理解的结构图,5个卷积层+3个全连接层:

这里写图片描述

这里写图片描述

来源:stackoverflow
https://www.learnopencv.com/understanding-alexnet/

各层的参数计算如下,下图为5个卷积层的参数

这里写图片描述

全连接层如下:

这里写图片描述

可以看到:卷积层的参数明显少于全连接层的参数。其中,网络大概有62.3 million parameters,其中卷积层占比约6%,单占比95%的计算。


3. 为了避免过拟合使用的技巧:Data Augmentation(数据增强),正则化Relu以及dropout

3. 1 Data Augmentation(数据增强)

数据增强简单的办法如,图片翻转Mirroring,随机裁剪Random Crops。

这里写图片描述

这里写图片描述

3. 2 使用ReLU非线性激活函数

使用ReLU非线性激活函数而不选择sigmoid或tanh函数,ReLU优势在于:

  1. 速度快 和sigmoid函数需要计算指数和倒数相比,relu函数其实就是一个max(0,x),计算代价小很多。

  2. 减轻梯度消失问题,从而可以训练更深的网络。

  3. 稀疏性 通过对大脑的研究发现,大脑在工作的时候只有大约5%的神经元是激活的,而采用sigmoid激活函数的人工神经网络,其激活率大约是50%。有论文声称人工神经网络在15%-30%的激活率时是比较理想的。因为relu函数在输入小于0时是完全不激活的,因此可以获得一个更低的激活率.

3. 3 使用Dropout(只在最后几个全连接层做)

这里写图片描述

dropout gif

为什么Dropout有效?

Dropout背后理念和集成模型很相似。在Drpout层,不同的神经元组合被关闭,这代表了一种不同的结构,所有这些不同的结构使用一个的子数据集并行地带权重训练,而权重总和为1。如果Dropout层有 n 个神经元,那么会形成 2^{n} 个不同的子结构。在预测时,相当于集成这些模型并取均值。这种结构化的模型正则化技术有利于避免过拟合。Dropout有效的另外一个视点是:由于神经元是随机选择的,所以可以减少神经元之间的相互依赖,从而确保提取出相互独立的重要特征。

3. 4 局部响应归一化LRN(Local Response Normalization)

提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。

这里写图片描述

补充

2个3*3的卷积层和一个5*5卷积层的区别?(某BAT的一个面试题,也可以理解为多个小的卷积层和一个大的卷积层的区别),问题来源:stackoverflow,VGG中给出了答案,如下:

  1. 多个卷积层可以增加网络的深度,从而学习更复杂的特征
  2. 2个3*3的卷积层的参数少于一个5*5卷积层的参数

参考:
https://medium.com/@smallfishbigsea/a-walk-through-of-alexnet-6cbd137a5637
https://www.learnopencv.com/understanding-alexnet/
https://www.nvidia.cn/content/tesla/pdf/machine-learning/imagenet-classification-with-deep-convolutional-nn.pdf
https://zhuanlan.zhihu.com/p/22094600

### AlexNet 架构特点总结 AlexNet 是一种开创性的卷积神经网络 (CNN),首次在 ImageNet 大规模视觉识别挑战赛中取得优异成绩。以下是其架构的主要特点: #### 深度架构设计 AlexNet 使用了较深的网络结构,包含 8 层可训练层(5 层卷积层和 3 层全连接层)。这种深度架构使得模型能够学习更加复杂的特征表示[^1]。 #### ReLU 激活函数的应用 相比于传统的 Sigmoid 或 Tanh 激活函数,AlexNet 首次大规模应用 Rectified Linear Unit (ReLU) 激活函数。ReLU 能够加速收敛过程,并有效缓解梯度消失问题。 #### Dropout 技术引入 为了减少过拟合现象,AlexNet 在全连接层部分采用了 Dropout 技术。通过随机丢弃一部分神经元来实现正则化效果,从而提升泛化能力。 #### 数据增强策略 AlexNet 利用了多种数据增强方法,例如图像平移、水平翻转以及颜色变换等技术,扩大了训练样本的数量与多样性,进一步提高了模型的鲁棒性和准确性。 ### 应用场景分析 由于 AlexNet 出色的表现及其强大的特征提取能力,在多个领域得到了广泛应用: - **计算机视觉**:作为早期成功的 CNN 实践案例之一,它被广泛应用于目标检测、分类等问题上。 - **医学影像诊断**:借助迁移学习的思想,预训练好的 AlexNet 可用于医疗图片中的病灶区域分割或者疾病预测等方面。 - **自动驾驶辅助系统**:通过对道路环境感知所需的各种传感器采集回来的数据进行实时处理分析,帮助车辆做出更安全合理的驾驶决策。 ### 性能表现评估 从性能角度来看,AlexNet 不仅大幅超越当时其他参赛队伍的成绩,还开启了深度学习研究的新纪元。具体表现在以下几个方面: - 提高了图像分类任务上的准确率; - 加快了训练速度,得益于 GPU 并行计算的支持; - 增强了模型对于未知测试集样本分布变化情况下的适应力。 尽管随着后续新型网络结构不断涌现,如 VGG, ResNet 等逐渐取代了 AlexNet 成为主流选择,但它所奠定的基础理论和技术手段仍然具有重要价值意义。 ```python import tensorflow as tf from tensorflow.keras.applications import AlexNet model = AlexNet(weights='imagenet', include_top=True) # Example usage of the model to predict an image class image_path = 'example.jpg' img = tf.keras.preprocessing.image.load_img(image_path, target_size=(227, 227)) x = tf.keras.preprocessing.image.img_to_array(img) x = np.expand_dims(x, axis=0) preds = model.predict(x) print('Predicted:', decode_predictions(preds, top=3)[0]) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值