深度学习 面试准备【一】

目录

void


CNN篇

该部分内容包括:

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

卷积核大小选择

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

卷积核尺寸通常为奇数

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

\(1\times 1\)卷积的作用

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

卷积操作的尺寸变化

\[\begin{aligned} n_{o u t} &=\left\lfloor\frac{n_{i n}+2 p-k}{s}\right\rfloor+ 1 \\ n_{i n} : & \text { number of input features } \\ n_{o u t} : & \text { number of output features } \\ k : & \text { convolution kernel size } \\ p : & \text { convolution padding size } \\ s : & \text { convolution stride size } \end{aligned} \]

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

感受野的计算

\[\begin{aligned} n_{o u t} &=\left\lfloor\frac{n_{i n}+2 p-k}{s}\right\rfloor+ 1 \\ j_{o u t} &=j_{i n} * s \\ r_{o u t} &=r_{i n}+(k-1) * j_{i n} \\ \text {start}_{o u t} &=\operatorname{start}_{i n}+\left(\frac{\mathrm{k}-1}{2}-\mathrm{p}\right) * j_{i n} \end{aligned} \]

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

减少卷积层参数量的方法

  1. 使用堆叠小卷积核代替大卷积核:VGG网络中2个\(3\times 3\)的卷积核可以代替1个\(5\times 5\)的卷积核
  2. 使用分离卷积操作:将原本\(K\times K\times C\)的卷积操作分离为\(K\times K\times 1\)\(1\times1\times C\)的两部分操作
  3. 添加\(1\times 1\)的卷积操作:与分离卷积类似,但是通道数可变,在\(K\times K\times C_1\)卷积前添加\(1\times1\times 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
posted @ 2019-09-20 16:03  LvJC  阅读(186)  评论(0编辑  收藏  举报