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

深度学习笔记(10)——卷积神经网络

卷积神经网络

回顾:

  1. 线性分类器 f ( x , W ) = W x + b f(x,W)=Wx+b f(x,W)=Wx+b
  2. 损失函数和优化 L ( W , b ) = 1 N ∑ i = 1 N L i + R ( W ) L(W,b)=\frac{1}{N}\sum_{i=1}^{N}L_i+R(W) L(W,b)=N1i=1NLi+R(W)
    优化模型来降低模型在数据上的损失:SGD,SGD+Momentum,RMSProp,Adam
  3. 计算图加反向传播

方向梯度直方图:0~180°,每20°一个间隔,共九个数。
词袋:提取随机图像块,聚类图像块,形成“visual words”的codebook
在这里插入图片描述

卷积神经网络

全连接层(参数量,优化,空间信息):参数量多,空间信息损失

卷积层:滤波器的深度始终与输入的深度相同
将滤波器与图像卷积,即"在图像上空间滑动,计算点积"

GPU适合并行运算,卷积神经网络适合并行运算。

在采用batch的时候,每个batch里的图尺寸必须一样

卷积输出的空间尺寸:(N+2P-F)/S+1,N是输入尺寸,P是padding的大小,F是滤波器尺寸,S是步长(必须要理解这个公式),N+2P为padding之后的尺寸宽。
为了保持输出的空间尺寸大小,conv层的步幅为1,滤波器大小为F*F,零填充为(F-1)/2(这边需要取整)

对于大图像,我们需要使用很多卷积层,才能"看到"整个图像
解决方案:

  1. 大步长
  2. 池化层

池化层:使特征更小,更易于处理,独立操作每个激活图,池化没有可学习参数,引入空间不变性,且池化一般不用padding。

对于stride=1,每次连续的卷积都会使感受野大小增加(K-1),对于L层,感受野大小为1+L*(K-1),此处注意区分在前一层上的感受野和在输入图像上的感受野。
对于核大小为K的卷积,输出中的每个元素都取决于输入中的K*K感受野。
注意要区分:在前一层上的感受野和在输入图像上的感受野
感受野计算公式: R n = R n − 1 + [ ( F n − 1 ) × ∏ i = 1 n − 1 s i ] R_n=R_{n-1}+[(F_n-1)\times \prod_{i=1}^{n-1} s_i] Rn=Rn1+[(Fn1)×i=1n1si]
感受野中心为: s t a r t l = s t a r t l − 1 + ( k − 1 2 − p l ) × j l − 1 , j l = ∏ i = 1 n − 1 s i start_l=start_{l-1}+(\frac{k-1}{2}-p_l)\times j_{l-1},j_l=\prod_{i=1}^{n-1}s_i startl=startl1+(2k1pl)×jl1,jl=i=1n1si

批归一化层

以下输入会导致网络难以优化:
输入不以零为中心(有较大的偏置)
输入的每个元素具有不同的缩放比例
解决方案:对输入进行缩放(归一化)
x i , j = x i , j − μ j σ j 2 + ϵ , y i , j = γ j x i , j + β j x_{i,j}=\frac{x_{i,j}-\mu_j}{\sqrt{\sigma_j^2+\epsilon}},y_{i,j}=\gamma_jx_{i,j}+\beta_j xi,j=σj2+ϵ xi,jμj,yi,j=γjxi,j+βj,
μ j \mu_j μj是第j个通道的均值, σ j 2 \sigma_j^2 σj2是第j个通道的方差, ϵ \epsilon ϵ是防止除0的常数, γ j \gamma_j γj β j \beta_j βj是可学习的参数, γ j \gamma_j γj是缩放因子, β j \beta_j βj是偏移因子,这两个参数的加入是因为归一化后的输入丢失了大量数据信息(均值、方差)。

在这里插入图片描述

批归一化层的作用:

  1. 使深度网络更容易训练
  2. 改善梯度流
  3. 允许更高的学习率,更快的收敛
  4. 网络对初始化变得更加稳健
  5. 在训练过程中起到正则化的作用

注意:训练时从数据集中学习,测试时候使用训练得到的参数

经典卷积网络架构

AlexNet

卷积,池化,BN,卷积,池化,BN,卷积,卷积,卷积,池化,全连接
首次使用ReLU,大量使用数据增强,dropout, batch_size 128 ,SGD+Momentum 0.9,L2 weight decay 5e-4
在这里插入图片描述

ZFNet

在AlexNet的基础上进行超参数优化

VGG

更小的滤波器,更深的网络,只使用 3 × 3 3\times3 3×3的滤波器,和 2 × 2 2\times2 2×2的Max Pooling,突出网络深度的重要性
为什么只使用 3 × 3 3\times3 3×3的滤波器:多个 3 × 3 3\times3 3×3相对一个 7 × 7 7\times7 7×7的Conv,相同的感受野,更少的参数量,更深、更多的非线性变化
在这里插入图片描述

GoogLeNet

使用Inception模块,并联多个不同的算子,突出网络宽度的重要性
具体solution:使用 1 × 1 1\times1 1×1Conv降低计算量、参数量、通道数

Inception模块

ResNet

残差神经网络,残差连接可以改善梯度消失问题,可以训练极深卷积网络,使用了BottleNeck:减少计算量,减少参数量(核心思想还是用小的卷积核来模拟大卷积核从而减少参数量)
1 × 1 1\times1 1×1卷积可以很方便地改变维度,灵活设计网络,减少计算量

SENet

通道注意力机制,通过学习的方式,自适应地调整每个通道的权重,使模型更加关注对分类任务更重要的特征,从而提高模型的性能。

网络退化问题:网络的可用自由度对这些范数的贡献非常不均衡,也就是每个层中只有少量的隐藏单元对不同的输入改变它们的激活值,而大部分隐藏单元对不同的输入都是相同的反应,此时整个权重矩阵的秩不高。

迁移学习

将在分类任务上训练好的模型,用于新的任务,比如在ImageNet上训练好的模型,用于新的分类任务。

  1. 分类任务数据量大,标注难度低,标注成本低
  2. 其他任务数据量小,标注难度高,标注成本低
  3. 直接在小数据上训练网络,性能很差

后续的研究发现与训练并不是必须的,更长的训练时长+tricks可以达到相同的性能,但是使用合适的预训练模型一定不会得到更差的结果,所以要合适的预训练!

在这里插入图片描述


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

相关文章:

  • 汽车损坏识别检测数据集,使用yolo,pasical voc xml,coco json格式标注,6696张图片,可识别11种损坏类型,识别率89.7%
  • CUTLASS:高性能 CUDA 线性代数模板库详解
  • 【OTA】论文笔记--《智能网联汽车整车OTA功能设计研究》智能网联汽车OTA系统设计分析报告
  • uniapp——App下载文件,打开文档(一)
  • ABP框架8——仓储的作用及其基础Demo
  • 如何使用MySQL的group_concat函数快速做关联查询?
  • 全面了解 SQL Server:功能、优势与最佳实践
  • Stream API 的设计融合了多个经典设计模式
  • vulnhub-Raven2靶机的测试报告
  • MFC小知识:CEdit::GetSel函数的使用
  • 智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之3 帮助AI聊天工具中提问者正确描述问题
  • 【HarmonyOS】如何读取Raw下的JSON文件内容
  • IP属地和所在地不一致什么意思?怎么换成另外一个地方的
  • 嵌入式小白
  • leetcode-----mysql
  • 【java基础】时间
  • WAV文件双轨PCM格式详细说明及C语言解析示例
  • 计算机图形学知识点汇总
  • 保险科技“数智化+”赋能险企高质量发展
  • 72.是否可以把所有Bean都通过Spring容器来管理?(Spring的applicationContext.xml中配置全局扫 描)
  • 基于Pycharm与数据库的新闻管理系统(2)Redis
  • 内网渗透思路amp;相关服务爆破以及提权
  • SpringBoot使用外置的Servlet容器(详细步骤)
  • CH340系列芯片驱动电路·CH340系列芯片驱动!!!
  • 鸿蒙next之如何实现防截屏功能
  • 在 CentOS 系统上安装 ClickHouse