深度学习 面试准备【一】
目录
void
CNN篇
该部分内容包括:
- 卷积核大小选择
- 卷积操作中的计算
- 网络泛化能力
卷积核大小选择
需要注意的是,LeNet-5中的卷积核size为5×5。
卷积核尺寸通常为奇数
- 为了有明确的卷积核中心
- 便于padding,奇数的尺寸可以从图像的两边对称的padding
\(1\times 1\)卷积的作用
- 实现信息的跨通道交互和整合
- 对卷积核通道数进行降维和升维,减小参数量
卷积操作的尺寸变化
\[\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乘积。
减少卷积层参数量的方法
- 使用堆叠小卷积核代替大卷积核:VGG网络中2个\(3\times 3\)的卷积核可以代替1个\(5\times 5\)的卷积核
- 使用分离卷积操作:将原本\(K\times K\times C\)的卷积操作分离为\(K\times K\times 1\)和\(1\times1\times C\)的两部分操作
- 添加\(1\times 1\)的卷积操作:与分离卷积类似,但是通道数可变,在\(K\times K\times C_1\)卷积前添加\(1\times1\times C_2\)的卷积核(满足\(C_2 <C_1\))
- 在卷积层前使用池化操作:池化可以降低卷积层的输入特征维度
提高CNN泛化能力
- 数据:
使用更多数据;
调整输入数据的分布使其尽量均匀:如BN层;
数据增强,如平移、旋转、裁剪、加噪声等; - batch size:在相同迭代次数和学习率的条件下,每批次采用更多的数据将有助于模型更好的学习到正确的模式,模型输出结果也会更加稳定;
- 目标函数:
比如L2比L1更能平衡样本作用,提高泛化能力;
添加权重矩阵的惩罚项来正则化; - 网络结构:
浅层增加网络深度,深层减少网络深度;
屏蔽网络节点:如dropout;
Reference
- 【干货】CNN 感受野首次可视化:深入解读及计算指南. https://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=2651997001&idx=4&sn=3a0323b421a45e80520a411a3b21fe33