• AlexNet论文笔记


    论文名:

    imagenet-classification-with-deep-convolutional-nn

    摘要:

    Alexnet在当时的cv环境下以算法主要以低误差为优势突出。

    其中利用到了ImageNet数据集,该数据集内容及其庞大,而大部分的引用仅采用了其中的120万(全部利用效果更好,但是部分引用对结果影响忽略不计)。

    主要讲了用来5个卷积层以及3个全连接层

    为了使训练速度加快,使用了非饱和神经元和非常有效的
    GPU实现卷积操作。

    为了减少全连接层中的过度拟合,采用了开发的名为==“dropout”的正则化方法==,该方法被证明是非常有效的(由于本文具有划时代意义,因此很多结论放在现在并不适用,这里dropout对全连接层意义重大,此外由于现在的gpu技术提升,之前针对部分训练的方式不再使用多个gpu)。

    内容

    1. 数据集

      ImageNet数据集是由不同分辨率的图像组成,而系统需要固定的输入尺寸。这里采用的方法是:给定一个矩形图像,首先依据最短的那条边重新缩放图像,使其缩放到256,然后从得到的图像中裁剪出中央的256x256块。出来从每个像素上减去训练集的平均活动外,没有采取其他方法进行预处理图像

    2. 搭建过程

      • 发现Relu比tanh要好

      • 在多个GPU上进行训练(现在不能成为主流)

      • 局部反应归一化(当前不再使用该论文提出的公式)

      • 请添加图片描述

        明确划分两个GPU之间的职责划分,同时规定在某些层进行通信

    3. 减少过度拟合方法:

      • 数据增强:使用标签保护的变换来人为的扩大数据集(常用的方法有:随机水平翻转、尺度变换、随机竖直翻转、平移变换、噪声扰动、镜像变换)

        该论文采用了两种形式:(1)包括图像的平移和水平反射(2)包括改变训练图像中的RGB通道的强度,具体来说就是对训练集的RGB像素值进行PCA详细解释主成分分析 ——数据降维)在每张训练的图像中,添加所发现的主成分倍数。

    4. 细节

      采用SDG(随机梯度下降法)训练模型。在调整参数时,学习率初始化为0.01(一般规律)可以采用平滑一点的方法,即对所有层使用相同的学习率,在整个训练过程手动调整。也可以采用启发式方法,当验证错误率不再随当前的学习率提高时,将学习率除以10。

    最后

    该论文采用的是有监督学习方法,在当时那种以无监督学习为主流的时代具有特殊意义。作者希望在视频序列上使用非常大的深度卷积网络。


    --分界线--

    附录:

    1. 监督学习和无监督学习

      监督学习: 从给定的训练数据集中学习出一个函数(模型参数),当新的数据到来时,可以根据这个函数预测结果。

      无监督学习: 输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。

    2. 非饱和神经元和饱和神经元

      • non-saturating neurons (非饱和神经元)= 没有被挤压(到一个特定的区间)处理过的值。 反向传播经过这个神经元时,它的梯度不接近0,还能继续往前传。
      • saturating neurons (饱和神经元)= 被挤压(到一个特定的区间)过的值

      神经元对应出现的有non-linear activation,这里non-linear activation分为两类:

      1. 输出饱和神经元的激活函数:
        • sigmoid: input neurons的值会被挤压到[0,1]的区间
        • tanh:input neurons的值会被挤压到[-1,1]的区间
      2. 输出非饱和神经元的激活函数
        • relu:input neurons的值,要么变0, 要么保持原值(无挤压,无最大最小值限制)
        • leaky_relu:input neurons的值, 要么按照某比例缩小,要么保持原值(无挤压,无最大最小值限制)
    3. 全连接层

      全连接层在卷积神经网络中起到一个“分类器”的作用,如果说卷积层、池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则是起到将学到的“分布式特征表示”映射到样本标记空间的作用

      img

    4. PCA主成分分析

      PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。

      步骤:

      • 样本归0:将样本进行均值归0,即所有样本减去样本的均值。样本的分布没有改变,只是将坐标轴进行了移动。

        此时的方差公式结果为0

      • 找到样本点映射后方差最大的单位向量ω,转化为求目标函数的最优化问题:
        V a r ( X p r o j e c t ) = 1 m ∑ i = 1 m ( X ( i ) ⋅ ω ) 2 Var(X_{project})= \frac{1}{m} \sum^m_{i=1}(X^{(i)}·ω)^2 Var(Xproject)=m1i=1m(X(i)ω)2

      • 求 ω 使公式(1)最大
        在这里插入图片描述

      • 利用算法梯度法求解

        在求极值的问题中,有梯度上升和梯度下降两个最优方法,梯度上升用于求最大值,梯度下降用于求最小值

        使损失函数变小的迭代公式:
        ( a k + 1 , b k + 1 ) = ( a k + 1 − η ∂ L ∂ a , b k + 1 − η ∂ L ∂ b ) (a_{k+1},b_{k+1}) =(a_{k+1}-η \frac{∂L}{∂a},b_{k+1}-η \frac{∂L}{∂b}) (ak+1,bk+1)=(ak+1ηaL,bk+1ηbL)

    5. Dropout正则化

      它不仅防止了过度拟合,并提供了一种有效地以指数级方式组合许多不同的神经网络体系结构的方法 。

      dropout是指在训练模型时,神经网络随机(以一定的概率)丢弃一些神经元

      丢弃神经元:意味着在神经网络中“临时”的将其和与其相连的全部输入和输出链接删除。

      Dropout正则化主要解决过拟合问题:

      在一般解决过程中,主要通过两种方法进行解决或改善:

      1. 丢弃一些不能帮助我们正确预测的特征。(例如:PCA)
      2. 正则化。保留所有特征,但是减少参数的大小

      Dropout比较流行的实现主要有两种类型:Vanilla Dropout 和Inverted Dropout

      其中Vanilla Dropout是朴素实现版本,而Inverted Dropout是更加广为使用和流行的实现。

      Vanilla Dropout:具体应用在深度神经网络的中间隐藏层,对于某一层L,如果应用了概率p的Dropout,在网络的训练/测试中,每个神经元都有p的概率会被“丢弃”,即该神经元不参与权重矩阵的计算。

      111.png

      模型训练时应用Dropout的流程,概况是:

      1. 随机概率p随机dropout部分神经元,并向前传遍
      2. 计算前向传播的损失,应用反向传播和梯度更新(对剩余的未被dropout的神经元)
      3. 恢复所有神经元,并重复过程1

      **Inverted Dropout:**在训练节点,同样应用p的概率来随机失活,不过额外提前除以1-p,这样相当于将网络的分布提前“拉伸”,好处就是在预测阶段,网络无需再乘以1-p来压缩分布

      # -*- coding = utf-8 -*-
      # @Time : 2022/7/27 14:35
      # @Author : Vinci
      # @File : f_dropout.py
      # @Software: PyCharm
      import torch
      
      
      def dropout(X, drop_prob):
          X = X.float()
          assert 0 <= drop_prob <= 1
          keep_prob = 1 - drop_prob
          if keep_prob == 0:
              return torch.zeros_like(X)
          mask = (torch.rand(X.shape) < keep_prob).float()
          Y = mask * X / keep_prob
          return Y
      
      
      if __name__ == "__main__":
          X = torch.arange(16).resize(2, 8)
          print(dropout(X, 0.2) * 0.8)
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23

  • 相关阅读:
    农业温室大棚智能远程监控系统,完美实现无人值守
    玩机搞机---mtk芯片机型线刷救砖的一些基本解决方法和步骤解析 mtk报错代码 SP_Flash平台刷机
    Mac上的utools无法找到本地搜索插件
    QoS服务质量八拥塞避免
    飞利浦Fidelio B97全景声家庭影院,让你在家享受“暑期档”
    windows中毒
    2022 极术通讯-《服务器应用场景性能测试方法 虚拟化》解读
    基于springboot的校园食堂订餐系统
    2022/09/16、17 day05/06:HTML和CSS
    G1D30-NLP(Tokenizer)&DP(交叠子问题)
  • 原文地址:https://blog.csdn.net/VinciB/article/details/126043763