当前位置: 首页 > article >正文

现代神经网络QA(LeNet/AlexNet/VGG/NiN/GooleNet/ResNet)-----一篇搞懂

现代神经网络Q&A-----一篇搞懂

LeNet核心架构

经典卷积神经网络的包括:

  1. 带填充以保持分辨率的卷积层;
  2. 非线性激活函数,如ReLU;
  3. 汇聚层,如最大汇聚层。

在这里插入图片描述

  1. pooling时,使用avg还是max?

    • max:侧重该感受野的最大信息量(有没有鸟)
    • avg:侧重整个感受野的各项信息量
  2. 一层卷积为什么从1个通道变成6个通道?

    一个通道是灰度图(28 * 28 * 1) 使用6个权重不同的卷积核分别对图像卷积操作,每个卷积核得到一个feature map特征图,则变成6个通道。

  3. 卷积只能做图像吗?可以做时序任务吗?

    没问题,二维卷积变成一维即可。

  4. sigmoid换成relu可以吗?替换之后为什么模型不收敛,有什么区别?

    sigmoid原Learning rate为0.9,后改为relu可以将Learning rate改为0.1,即可收敛,人工调参。

  5. 如何可视化网络学到的东西?

    CNN Explainer (poloclub.github.io)

    clicking on topmost first conv. layer activation map

    直接在网页中动态查看即可,十分直观。

  6. LeNet卷积层通道数扩大到了16,这意味着信息被放大了吗?

    • 通常,高宽减半,通道数加倍;

    • 每个通道对应一个独立的特征检测器(如边缘、纹理等模式识别),也就是说每个特征图可以看做某些特定模式的识别,特征图变小,但是通道数增多,意味着能识别这些模式的神经元变多了,并且一个位置能编码更丰富的语义信息。

  7. mlp和cnn使用哪个?

    数据不大mlp没问题,当然都可以尝试;数据集很大则放弃mlp,很有可能overfitting

AlexNet核心架构
  • 是更大更深的LeNet,10x参数个数,260x计算复杂度
  • 新加:dropout丢弃法,reLu,最大池化层,数据增强
  • AlexNet由八层组成:五个卷积层、两个全连接隐藏层和一个全连接输出层。

在这里插入图片描述

AlexNet VS LeNet

左LeNet,右AlexNet

在这里插入图片描述

  1. AlexNet 池化层放到不同卷积层之后,效果一样吗?

    这个需要自己尝试。

  2. Local Response Normalizaon有什么意义?

    • 模拟神经元的侧抑制机制。其主要作用是增强局部区域内的激活响应,同时抑制周围区域的激活,以提高模型的感知能力。
    • LRN会增加计算复杂度和内存消耗,而对模型性能的提升有限
    • 其实LRN和ReLU作用相差不大,后面也没用LRN
  3. dropout有什么用?

    为了正则化,通过随机删除部分神经元的活动,来缓解模型的复杂性,防止过拟合

  4. 如果网络输入size固定,实际图片输入时会resize吗?

    不会,保持图片比例,垂直水平方向会切边。

  5. 为什么要有两个相同的Dense(4096)?

    两个较大的全连接层有较好的效果。

  6. 全连接层的参数量占据大多数,有什么必要作用?

    • 全连接层需要捕获整体结构的信息,在图像分类任务中,全连接层可以帮助识别图像的整体形状或颜色模式,而不是仅仅关注局部细节

    • 全连接层可以将多个不同层次的神经元(如卷积层中的各个池化层输出)通过线性变换连接起来。

  7. 为什么AlexNet新增加了3层384输出的卷积层,有什么道理?

    没有特别的原因,试出来性能好。

VGG核心架构

img

One VGG Block重复n次,每个Block包括以下序列:

  1. 带填充以保持分辨率的卷积层;3×3; pad 1
  2. 非线性激活函数,如ReLU;
  3. 汇聚层,如最大汇聚层;2×2;stride 2
参数计算:
  • 卷积层需要较少的参数:
    c i × c 0 × k 2 ( 输入通道 × 输出通道 × k e r n e l 大小 ) c_i×c_0×k^2 (输入通道×输出通道×kernel大小) ci×c0×k2(输入通道×输出通道×kernel大小)

  • 但卷积层后的第一个全连接层的参数

    • LeNet 16x5x5x120=48k
    • AlexNet 256x5x5x4096=26M
    • VGG 512x7x7x4096=102M
VGG VS AlexNet

在这里插入图片描述

**VGG16:**13卷积层+3全连接层

  1. 训练损失一直下降测试损失从开始起就一点不降成水平状是什么原因呢?

代码有问题;或者是过拟合overfitting了,测试集和训练集差距很大。

  1. 为什么VGG(1,1,224,224)的输入高宽减半后,通道数是64?

    通道数和高宽减半无关,通道数是人工设置的kernel数量(也就是该卷积层输出通道)

NiN核心架构
  • 无全连接层 参数少
  • 交替使用NiN块和步幅为2的最大池化层逐步减小高宽和增大通道数
  • 最后使用全局平均池化层得到输出其输入通道数是类别数
NiN VS VGG

在这里插入图片描述

  1. 一个超级宽的:单隐藏层难以训练是因为显存不够大吗?

    很容易过拟合。

  2. 全局池化层的设计是否很关键?

    代替全连接层,通道数不变,将卷积输出的feature mapping高宽变成1,把输入变小了,并且没有可学习的参数;将模型复杂度降低,提升泛化性,但是收敛变慢了,需要训练时长变长,但是精度会高一些。

  3. NiN Block为什么选用2个1×1Conv?

    可以试一下。。。

  4. 分类不用做softmax吗?

    softmax写在了交叉损失熵Loss函数中,不会出现在网络代码中

  5. 两个1×1Conv对每个像素增加了非线性性,为什么?

    • 1×1Conv 输入输出的宽高不变,通道数改变
    • 理解:将某一像素点视为样本,该像素点的通道视为特征的全连接。
    • 相当于2个隐含层的mlp,存在ReLU,增加了非线性性
ResNet核心架构

是否越深越好?
在这里插入图片描述

架构:左侧正常块,右侧残差块

  • ResNet残差块高宽减半 步幅2
  • 后接多个正常块

在这里插入图片描述

  • 残差块使得很深的网络更加容易训练甚至可以训练一千层的网络
  • 残差网络对随后的深层神经网络设计产生了深远影响,无论是卷积类网络还是全连接类网络。
  1. 为什么lenet batch size大于1000收敛会有问题?会有什么样的问题?nan还是?

    • 较大的batch size可以提高内存利用率,减少每个epoch所需的迭代次数,从而加快训练速度。然而,过大的batch size可能导致内存不足,影响训练效率
    • batch size大于1000可能会出现特征图相似情况,计算类似,影响收敛精度。
  2. f(x)=x+g(x),这样就能保证至少不会变坏吗?如果g(x)不是变好也不是什么都不干,而是变坏了呢?

    g(x)是训练出来的,如果不好,权重也就不会更新,通常情况不会使模型变坏。

  3. cos学习率会比step 或者固定学习率好吗?

    足够多的时间做微调。

  4. 测试精度一定比训练精度低吗?

    • 不一定,如果训练数据大量噪声,测试数据没有,测试精度可能会比训练精度高。

    • 训练噪音使得模型鲁棒性提高,泛化能力变强


http://www.kler.cn/a/538909.html

相关文章:

  • UMLS初探
  • python 语音识别方案对比
  • 【redis】数据类型之hash
  • 公司配置内网穿透方法笔记
  • 解构赋值在 TypeScript 中的妙用:以 Babylon.js 的 loadModel 函数为例
  • 【3分钟极速部署】在本地快速部署deepseek
  • Apache Commons Lang学习大纲
  • Windows逆向工程入门之高级语言与汇编语言
  • 【vscode+latex】实现overleaf本地高效编译
  • 51单片机俄罗斯方块清屏函数
  • “可通过HTTP获取远端WWW服务信息”漏洞修复
  • day44 QT核心机制
  • 前端知识速记--JS篇:闭包
  • 问deepseek自动驾驶 模块化or端到端?
  • keil5显示[NO J-link found]解决办法——【J-LINK】驱动下载安装教程
  • 气体控制器联动风机,检测到环境出现异常时自动打开风机进行排风;
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_max_sockets
  • 基于自然语言处理的客服情感分析系统分析报告
  • 全面理解-返回值优化 RVO/NRVO
  • 51单片机俄罗斯方块开机显示界面
  • 荣誉|奇点云获评晶科能源“2024最佳大数据服务商”并受邀演讲
  • deepin V25 中更换软件源
  • excel合并表格
  • 【Linux系统】Linux中的用户级线程与内核级线程 / Windows中的线程实现TCB / 两系统的对比
  • windows蓝牙驱动开发-蓝牙常见问题解答
  • 学习和商业化LLMs及RAG技术的建议: