高性能Lecture2

深度学习基础:

一维卷积

在这里插入图片描述
这里我们输入的一维卷积维度是(n, c i c_i ci, w i w_i wi),n是样本数量, c i c_i ci是通道数,每个输入通道可以看作是特征维度,例如在处理音频时,可能有多个特征维度。 w i w_i wi是样本长度。
这里的卷积核权重是( c o c_o co, c i c_i ci, k w k_w kw),每个权重跟输入进行滑动窗口相乘 : ( c i , w i ) (c_i,w_i) (ci,wi) * ( c i , k w ) (c_i,k_w) (ci,kw) 得到的是 ( 1 , w o ) (1,w_o) (1,wo),这里的 w o w_o wo就是滑动了多少次,1是一个weight,所以 c o c_o co个weight得到的输出权重就是 ( n , c o , w o ) (n,c_o,w_o) (n,co,wo).

二维卷积也是类似:
在这里插入图片描述二维卷积的输入是 ( n , c i , h i , w i ) (n,c_i,h_i,w_i) (n,ci,hi,wi),这里n是样本数量, c i c_i ci是通道数,比如图片就是3, h i , w i h_i,w_i hi,wi就是输入的宽和高。这里的权重是 ( c o , c i , k h , k w ) (c_o,c_i,k_h,k_w) (co,ci,kh,kw),权重的层数是 c o c_o co,我们在进行运算时是每个权重都分别相乘权重矩阵的投影,也就是 k h , k w k_h,k_w kh,kw在输入的 h i , h w h_i,h_w hi,hw上滑动相乘,最后得到输出特征。

padding

通过填充,卷积后可以保持输入特征图和输出特征图的相同尺寸,避免卷积过程中的尺寸缩减。通常为了使输出的尺寸与输入相同,使用一定的填充来补偿卷积核滑动时的边界问题。
在这里插入图片描述
例如上图片是输入高为5,卷积核也为5,如果输入输出想不变的话,那么我们把ho=5,hi=5,kh=5,p就等于1
填充也有几种不同的方式,例如零填充,反射填充和复制填充。

视觉感受野

在这里插入图片描述感受野是指输出特征图中的一个神经元在输入特征图上所对应的区域大小。在卷积操作中,每个输出特征点是由输入特征图的一个局部区域通过卷积核操作得到的,随着层数的增加,感受野会逐渐扩大。
步幅 s决定了卷积核在输入特征图上滑动的步长。步幅越大,输出特征图的尺寸越小,因为卷积核覆盖的输入区域变得更加稀疏。
上图:步幅为 s=2,输出特征图的尺寸较小,感受野较大。
下图:步幅为 s=1,输出特征图的尺寸较大,但感受野相对较小。

上下采样

下采样

这里就是涉及到了下采样的知识点,因为常见的下采样的操作就有:

  • 在卷积操作中,步幅 s>1 被认为是一种下采样方式。步幅控制卷积核每次滑动的距离,如果步幅大于1,卷积核将跳过输入数据的某些位置,直接减少输出特征图的尺寸。例如,如果步幅 s=2,输出特征图的宽度和高度将是原输入特征图的 1/2。步幅越大,输出特征图的分辨率越低。
  • 最大池化 (Max Pooling):池化层通常用于下采样操作,例如 Max Pooling 会在输入的局部区域中选取最大值作为输出。池化层能够有效地减少特征图的尺寸,并且保持重要的特征。例如,2x2 的最大池化会将输入的每个 2x2 区域缩小为 1 个值,使得宽度和高度各减半。平均池化 (Average Pooling):与最大池化类似,平均池化是取局部区域内的平均值,作为输出值。
  • 插值下采样,可以通过降低图像的分辨率来实现下采样。例如,将原始高分辨率图像缩小一半,使得图像的每一维度减少到原来的 1/2。图像处理中常用的插值方法有双线性插值、最近邻插值等。
    下采样在卷积神经网络中用于减少特征图的尺寸,从而提高效率、增大感受野、减少过拟合。通过卷积的步幅、池化操作等方式,网络可以缩小输入数据的尺寸,并聚焦于更重要的全局特征。

上采样

上采样 是与下采样相对的操作,指的是在降低分辨率或减少数据尺寸后,通过插值或其他方法恢复或增加数据的空间分辨率。在卷积神经网络(特别是生成网络、图像重建和图像分割等任务中),上采样被用来增加特征图的大小,使其接近原始输入的尺寸。
上采样的目的:

  1. 恢复原始分辨率:在下采样之后,我们通常需要通过上采样来恢复特征图的空间分辨率,特别是在生成模型(如生成对抗网络 GAN)和分割任务中,需要输出的结果具有较高的分辨率.
  2. 生成高分辨率的输出:例如在图像超分辨率任务中,输入的是低分辨率的图像,通过上采样可以生成高分辨率图像。
  3. 逐步放大特征图:在 U-Net、SegNet 等架构中,模型会通过多层上采样逐步恢复特征图的空间分辨率,用于精细的图像生成或分割。
    常见的上采样方法有
  • 反卷积: 转置卷积是最常见的上采样方式之一。与标准卷积相反,转置卷积用于增加特征图的空间维度。它通过插入“空洞”来恢复较大的特征图。
    例如,在常规卷积中,你的卷积核会对输入做缩小操作(如 3×33×3 的卷积核会将特征图缩小),而在转置卷积中,你可以通过反向操作恢复更大尺寸的特征图。
    转置卷积可以通过学习卷积核来进行插值和恢复特征图,因此是可学习的上采样操作。
    应用:常用于图像生成任务(如 GANs)、图像分割任务(如 U-Net),因为它可以根据上下文灵活地生成高分辨率的输出。

  • 最近邻插值 (Nearest Neighbor Interpolation):
    最近邻插值是一种简单的上采样方法,它通过复制输入的最近邻元素来填充空缺区域。虽然计算简单,但这种方法容易引入不连续的边界,导致输出图像有较明显的像素化效果。
    应用:用于简单、快速的上采样场景,不需要复杂的插值操作。

  • 双线性插值 (Bilinear Interpolation):
    双线性插值是一种常用的插值方法,它通过对相邻的 4 个像素点进行线性插值,生成新的像素值。这种方法比最近邻插值更平滑,能够生成相对高质量的上采样结果。
    应用:广泛用于图像处理中的上采样操作,特别是在需要平滑放大的情况下(如图像超分辨率)。

分组卷积

分组卷积是一种优化卷积神经网络的方式,通过将输入和输出通道划分为若干组,从而减少计算量并提高效率。这种技术被广泛应用于深度神经网络模型中,如 ResNeXt 和 MobileNet。分组卷积将输入通道和输出通道按照一定数量的组数 g 划分开来,每一组的输入通道只与同一组的输出通道相连,而不是像普通卷积那样,所有输入通道都与所有输出通道进行卷积操作。这种方式能够有效减少计算量,同时可以通过多组卷积操作并行加速计算。

g=1(普通卷积):
在普通卷积中,每个输入通道都与所有的输出通道进行卷积运算。这意味着每一个输出特征都是由所有的输入通道通过卷积核得到的。
图示:左侧展示的是标准卷积的过程。所有输入通道(浅蓝色)通过一个完整的卷积核 (橙色方框) 连接到所有的输出通道。

g=2(分组卷积):
当 g=2g=2 时,输入通道被分为 2 组,每组输入通道只与对应组的输出通道进行卷积,互不干扰。
图示:右侧展示了分组卷积的过程,输入通道和输出通道分别分为 2 组。第 1 组输入通道通过第 1 组卷积核映射到第 1 组输出通道(黄色区域),第 2 组输入通道通过第 2 组卷积核映射到第 2 组输出通道(绿色区域)。
在这里插入图片描述

深度卷积

深度卷积 (Depthwise Convolution) 是一种特殊形式的分组卷积,其中每个输入通道独立地与自己的卷积核进行卷积操作。这意味着输入通道数 ci​ 与输出通道数 co​ 是相同的,每个输入通道都有一个对应的卷积核,操作是逐通道进行的,不同通道之间没有相互作用。
普通卷积每个输出通道是所有输入通道的加权和。
深度卷积每个输出通道仅与一个输入通道进行卷积,因此计算量显著减少。
说白了就是一层一个卷积核进行操作。。。
独立卷积核:深度卷积会为每个输入通道分配一个独立的卷积核,并且每个卷积核只作用于其对应的输入通道。输入通道与输出通道之间没有跨通道的连接或权重共享。
逐通道操作:在图的右侧展示了这个操作,输入通道(蓝色方框)中的每一个通道都与一个对应的卷积核(黄色方框)进行卷积操作,结果会生成相应的输出通道(绿色方框)。这个操作可以理解为按通道进行的局部卷积,计算量较少。
在这里插入图片描述

归一化层

  1. 归一化层的作用

    归一化是指对每一层的激活值进行标准化处理,目的是为了防止梯度消失或爆炸,帮助网络更快收敛。通过对每层特征进行归一化处理,可以让神经网络在训练过程中保持更稳定的激活值分布,使得梯度下降更加平滑,优化速度加快。
    
是输入值,是输入特征的均值,​:特征的标准差

归一化后,神经网络还可以通过可训练的参数进行线性变换,确保网络能够保持足够的表达能力,公式如下:
y i ​ = γ i ​ x ^ i ​ + β i y_i​=γ_i​x̂_i​+β_i yi=γix^i+βi,这个gama和beita都可以训练的

在这里插入图片描述
Batch Norm:对整个批次中同一通道上的所有样本进行归一化,图中蓝色块展示了批归一化对不同样本的相同通道进行计算。
Layer Norm:对每个样本的所有通道进行归一化,图中展示了对每个样本进行单独处理。
Instance Norm:对每个样本的每个通道进行独立归一化,图中展示了独立对每个样本的每个通道进行处理。
Group Norm:对输入通道分组后,每组通道内部归一化,图中展示了对部分通道进行处理。
图的底部展示了几种常见的归一化方式:Batch Norm、Layer Norm、Instance Norm 和 Group Norm,它们的主要区别在于如何定义归一化的集合 Si​。

Batch Normalization (批归一化):
    定义的集合 Si​:所有样本的同一通道值(即对整个 batch 的同一通道进行归一化)。
    使用场景:批归一化在卷积神经网络中非常常见,它通过对每个 mini-batch 中的样本进行归一化,可以加速训练并减轻对初始权重的敏感性。
    特点:依赖于 batch 大小,在小 batch 训练时表现不佳。

Layer Normalization (层归一化):
    定义的集合 Si​:对同一层中的所有特征(通道、空间维度等)进行归一化。
    使用场景:层归一化主要用于循环神经网络(RNNs)和自注意力机制(如 Transformer)中,它对 batch 大小不敏感。
    特点:对每个样本单独进行归一化,不依赖 batch 大小。

Instance Normalization (实例归一化):
    定义的集合 Si​:对每个样本的每个通道分别进行归一化,不依赖于其他样本或通道。
    使用场景:主要用于图像风格迁移等任务中,实例归一化倾向于保持图像的局部特征。
    特点:在每个样本内部独立进行归一化,忽略其他样本。

Group Normalization (组归一化):
    定义的集合 Si​:将通道分为多个组,对每组的通道进行归一化。
    使用场景:适合小 batch 训练场景,如目标检测等,性能比 batch norm 更稳定。
    特点:可以灵活控制归一化的范围,通过分组来在全局和局部归一化之间取得平衡。

神经网络效率

模型从三个角度来衡量是否高效

在这里插入图片描述
Memory-Related(与内存相关):

#parameters:模型参数的数量,直接影响模型的大小。
model size:模型文件的总大小,表示在磁盘上存储模型所需的空间。
total/peak #activations:模型运行时产生的激活值总量和峰值。较大的激活值会导致更高的内存占用。

Computation-Related(与计算相关):

MAC(乘法累加):模型在运行时执行的乘法和累加操作的数量,通常用于衡量计算复杂度。
FLOP / FLOPS(浮点操作数 / 浮点操作每秒):表示模型执行时的浮点运算次数和单位时间内执行的浮点操作数量。
OP / OPS(操作数 / 每秒操作次数):通用操作数和操作效率指标,代表模型在运行时执行的基本操作的数量和速度。

Smaller 模型:意味着模型的参数更少、占用存储空间更小,从而降低内存占用,并减少对存储和加载时间的需求。
Faster 模型:通过减少计算量(例如优化 FLOP 或 MAC),能够更快速地完成推理任务,减少延迟时间。
Greener 模型:通过减少计算和内存使用,降低能耗。这对于大规模部署和云计算场景中的模型非常重要。

各种推导公式

L a t e n c y ≈ m a x ( T c o m p u t a t i o n ​ , T m e m o r y ​ ) Latency≈max(T_{computation​},T_{memory​}) Latencymax(Tcomputation,Tmemory)
延迟由计算时间和内存时间中的较大者决定。神经网络在执行时,如果计算非常快但数据传输慢(内存瓶颈),那么内存时间将主导延迟;反之亦然。

计算时间:
在这里插入图片描述
内存时间:
内存时间由两部分组成:激活值的传输时间和权重传输时间。
T m e m o r y ​ ≈ T d a t a m o v e m e n t o f a c t i v a t i o n s ​ + T d a t a m o v e m e n t o f w e i g h t s ​ T_{memory}​≈T_{data movement of activations}​+T_{data movement of weights}​ TmemoryTdatamovementofactivations+Tdatamovementofweights

权重的传输时间 T d a t a m o v e m e n t o f w e i g h t s T_{data movement of weights} Tdatamovementofweights
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值