深度学习 面试准备【一】

目录

void


CNN篇

该部分内容包括:

  • 卷积核大小选择
  • 卷积操作中的计算
  • 网络泛化能力

卷积核大小选择

需要注意的是,LeNet-5中的卷积核size为5×5。

卷积核尺寸通常为奇数

  1. 为了有明确的卷积核中心
  2. 便于padding,奇数的尺寸可以从图像的两边对称的padding

(1 imes 1)卷积的作用

  1. 实现信息的跨通道交互和整合
  2. 对卷积核通道数进行降维和升维,减小参数量

卷积操作的尺寸变化

[egin{aligned} n_{o u t} &=leftlfloorfrac{n_{i n}+2 p-k}{s} ight floor+ 1 \ n_{i n} : & ext { number of input features } \ n_{o u t} : & ext { number of output features } \ k : & ext { convolution kernel size } \ p : & ext { convolution padding size } \ s : & ext { convolution stride size } end{aligned} ]

当padding设置为SAME的时候,会自动补0;当padding设置为VALID的时候,只使用有效的数据故不会补0。

感受野的计算

[egin{aligned} n_{o u t} &=leftlfloorfrac{n_{i n}+2 p-k}{s} ight floor+ 1 \ j_{o u t} &=j_{i n} * s \ r_{o u t} &=r_{i n}+(k-1) * j_{i n} \ ext {start}_{o u t} &=operatorname{start}_{i n}+left(frac{mathrm{k}-1}{2}-mathrm{p} ight) * j_{i n} end{aligned} ]

其中(j)是jump,含义是从最开始到现在跳过的连续特征点的数目,也就是从最开始到本层(除去本层)所有stride乘积。

减少卷积层参数量的方法

  1. 使用堆叠小卷积核代替大卷积核:VGG网络中2个(3 imes 3)的卷积核可以代替1个(5 imes 5)的卷积核
  2. 使用分离卷积操作:将原本(K imes K imes C)的卷积操作分离为(K imes K imes 1)(1 imes1 imes C)的两部分操作
  3. 添加(1 imes 1)的卷积操作:与分离卷积类似,但是通道数可变,在(K imes K imes C_1)卷积前添加(1 imes1 imes C_2)的卷积核(满足(C_2 <C_1)
  4. 在卷积层前使用池化操作:池化可以降低卷积层的输入特征维度

提高CNN泛化能力

  1. 数据:
    使用更多数据;
    调整输入数据的分布使其尽量均匀:如BN层;
    数据增强,如平移、旋转、裁剪、加噪声等;
  2. batch size:在相同迭代次数和学习率的条件下,每批次采用更多的数据将有助于模型更好的学习到正确的模式,模型输出结果也会更加稳定;
  3. 目标函数:
    比如L2比L1更能平衡样本作用,提高泛化能力;
    添加权重矩阵的惩罚项来正则化;
  4. 网络结构:
    浅层增加网络深度,深层减少网络深度;
    屏蔽网络节点:如dropout;

Reference

  1. 【干货】CNN 感受野首次可视化:深入解读及计算指南. https://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=2651997001&idx=4&sn=3a0323b421a45e80520a411a3b21fe33
原文地址:https://www.cnblogs.com/lvjincheng/p/11325694.html