• 复盘:卷积神经网络、池化、乘法运算操作、RNN/transformer/CNN复杂度


    复盘:卷积神经网络、池化、乘法运算操作、RNN/transformer/CNN复杂度

    提示:互联网大厂笔试


    卷积神经网络,针对某一个batch数据)数据维度[N,C,W,H]进行BN操作,则该batch中的均值和方差数量为:

    C,N,NC,WH?

    作用
    BN层一般放在线性层或卷积层后面,激活函数前面,作用如下:

    1.加快网络收敛;
    因为每层的数据都转换为同一的分布,这样会加快训练速度。

    2.防止梯度爆炸和梯度消失;
    因为BN会使非线性变换函数的输入值落入对输入比较敏感的区域。

    解决的问题是梯度消失与梯度爆炸。
    关于梯度消失,以sigmoid函数为例子,sigmoid函数使得输出在[0,1]之间。
    在这里插入图片描述

    事实上x到了一定大小,经过sigmoid函数的输出范围就很小了,参考下图
    在这里插入图片描述
    如果输入很大,其对应的斜率就很小,我们知道,其斜率(梯度)在反向传播中是权值学习速率。所以就会出现如下的问题,
    在这里插入图片描述

    3.防止过拟合,提升泛化能力。
    因为BN求均值和方差是基于同一个batch内的样本,使网络不会朝一个方向学习。

    BN计算过程:
    在这里插入图片描述
    一张图一个通道的话,一个batch就N个数据,一个均值,一个方差
    C个通道就C个均值和方差

    为什么会有放缩系数γ和平移系数β ?
    因为归一化不可避免的会改变数据的分布,
    从而可能会对激活函数只使用了其线性部分,限制了模型的表达能力
    引入参数γ 和β 可以使网络的输出重构原始特征的表达能力

    训练阶段
    在训练阶段,BN会对batch内的每个样本做归一化,
    每一层特征图会计算出Channel个均值和方差。
    训练时计算的均值和方差会不断按加权累积下来,通过移动平均的方法来近似得到整个样本集的均值和方差。

    这里假设通道数为1,batch为4,即大小为[4,1,3,3] (n,c,h,w)。

    特征图里的值,作为BN的输入,这里简化输出只有一个channel,
    也就是这一个4x3x3个数值通过BN计算并保存均值与方差,
    并通过当前均值与方差计算归一化的值,
    最后根据γ,β以及归一化得值计算BN层输出。

    假如输入是c=3个通道,就是在通道的维度上进行bn,所以会有c=3个γ,β参数。

    训练过程中共会产生(图片总数/batchsize)组 γ β 。

    在反向传播时,利用γ 和β求梯度从而改变训练权重

    预测阶段
    在预测阶段,很可能不是按batch预测的,
    通常只有一个样本,那么BN层中的均值和方差都是固定的,那就需要用到训练时的均值和方差通过移动平均而得到。

    因此答案就是C个均值与方差!


    池化层的作用个,哪个不是池化层的作用?

    池化的作用:
    缓解模型过拟合
    保持一定的平移不变性
    减小图像尺寸,进行数据降维

    但是池化的作用不是上采样 ,而是下采样

    1.池化层主要的作用
    (1)首要作用,下采样(downsampling)

    (2)降维、去除冗余信息、对特征进行压缩、简化网络复杂度、减小计算量、减小内存消耗等等。各种说辞吧,总的理解就是减少参数量。缓解模型过拟合

    (3)实现非线性(这个可以想一下,relu函数,是不是有点类似的感觉?)。

    (4)可以扩大感知野。

    (5)可以实现不变性,其中不变形性包括,平移不变性、旋转不变性和尺度不变性。

    在这里插入图片描述


    CNN的卷积中,s步长,p是padding,一共需要多少次乘法操作?

    在这里插入图片描述
    这个问题我之前学过,讲过:
    卷积神经网络参数量和计算量的计算

    k*k次乘法,这是一次卷积的计算量:

    多少次卷积???
    在这里插入图片描述
    h-k+p/s + 1 w-k+p/s + 1

    C个输入特征图上进行卷积运算的次数为Ci

    C个相加需要C-1次加法
    在这里插入图片描述

    输出O个特征图需要计算的次数
    在这里插入图片描述
    本题不看加法C-1舍弃
    就是oci[h-k+p/s + 1 * w-k+p/s + 1] × k方
    在这里插入图片描述

    RNN时间复杂度

    transformer时间复杂度

    CNN时间复杂度

    在这里插入图片描述
    N=T的话,就是T序列长度,d是向量维度的话。

    **o(t^2*d)**就是self-attention的复杂度

    o(t*d^2)RNN时间复杂度,不是t方×d哦!!!笔试容易在这搞你
    o(t*d^2)RNN时间复杂度,不是t方×d哦!!!笔试容易在这搞你
    o(t*d^2)RNN时间复杂度,不是t方×d哦!!!笔试容易在这搞你

    CNN:o(tkd^2) = o(ktd^2),问题不大

    transformer中self-attention线性性模块的复杂度o(t*d^2)


    总结

    提示:重要经验:

    1)o(t*d^2)是RNN时间复杂度,不是t方×d哦!!!笔试容易在这搞你
    2)CNN计算量要属性,先算卷积核一次卷积,然后看看特征图需要多少次卷积,然后看看通道数乘法,加法,输出乘法
    3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

  • 相关阅读:
    yuv图像格式存储方式
    数据结构(9)树形结构——大顶堆、小顶堆
    牛客刷题之数学基础-约数
    内存管理
    CFGPT: Chinese Financial Assistant with Large Language Model
    CAD最常用的快捷键大全来啦
    vue3-基础知识(4)- 组件
    【zabbix监控三】zabbix之部署代理服务器
    聚乳酸改性乳清白蛋白/肌白蛋白/豆清白蛋白/蓖麻蛋白/豌豆白蛋白1b ( PA1b)|蛋白偶联修饰
    推荐一个专利检索的网站
  • 原文地址:https://blog.csdn.net/weixin_46838716/article/details/125589916