深度学习(计算机视觉)面试问题总结 随时补充
1.如何解决梯度爆炸与消失答:1. 预训练加微调——每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,此过程就是逐层“预训练”;在预训练完成后,再对整个网络进行“微调”(fine-tunning)。在各层预训练完成后,再利用BP算法对整个网络进行训练。此思想相当于是先寻找局部最优,然后整合起来寻找全局最优,此方法有一定的好处,但是目前应用...
1.如何解决梯度爆炸与消失
答:
1. 预训练加微调
—— 每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,此过程就是逐层“预训练”;在预训练完成后,再对整个网络进行“微调”(fine-tunning)。在各层预训练完成后,再利用BP算法对整个网络进行训练。此思想相当于是先寻找局部最优,然后整合起来寻找全局最优,此方法有一定的好处,但是目前应用的不是很多了。
2. 梯度剪切、权重正则(针对梯度爆炸)
—— 设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内。这可以防止梯度爆炸;权重正则化(weithts regularization),如l1正则、l2正则,通过对网络权重做正则限制过拟合。
3. 使用不同的激活函数
4. 使用batchnorm
5. 使用残差结构
—— 原因就在于残差的捷径(shortcut)
6. 使用LSTM网络
—— 主要原因在于LSTM内部复杂的“门”(gates),通过它内部的“门”可以接下来更新的时候“记住”前几次训练的”残留记忆“
2.为什么使用3*3 小卷积核堆叠代替大卷积核
答:
(1)3x3是最小的能够捕获像素八邻域信息的尺寸。
(2)两个3x3的堆叠卷基层的有限感受野是5x5;三个3x3的堆叠卷基层的感受野是7x7,故可以通过小尺寸卷积层的堆叠替代大尺寸卷积层,并且感受野大小不变。所以可以把三个3x3的filter看成是一个7x7filter的分解中间层有非线性的分解, 并且起到隐式正则化的作用。
(3)多个3x3的卷基层比一个大尺寸filter卷基层有更多的非线性(更多层的非线性函数,使用了3个非线性激活函数),使得判决函数更加具有判决性。
(4)多个3x3的卷积层比一个大尺寸的filter有更少的参数,假设卷积层的输入和输出的特征图大小相同为C,那么三个3x3的卷积层参数个数3x((3x3xC)xC)=27C2;一个(7x7xC)xC的卷积层参数为49C2。
注:卷积层的参数量计算
假设该卷积层的卷积核为3×3,为了清晰明了,假设卷积层的输入和输出的特征图(featuremap)大小(其实是channel通道数)分别为C1,C2。(卷积核,一个多维的矩阵K×K×channels,其中channels是由输入的featuremap的通道数决定的,而卷积层中卷积核的个数是由输出的featuremap的通道数决定的)。
所以该卷积层的参数量是:(3×3×C1)× C2
说明:(3×3×C1) —— 是每一个卷积核的参数量(输入)
× C2 —— 是总共C2个卷积核(输出的通道数)
3. 1×1卷积核的作用
在不影响输入输出维数的情况下,对输入进行线性形变,然后通过Relu进行非线性处理,增加网络的非线性表达能力。
- 通过控制卷积核个数实现升维或者降维,从而减少模型参数
- 对不同特征进行归一化操作
- 用于不同channel上特征的融合
4. 卷积神经网络参数量和计算量区分
(一).参数量
CNN网络的参数量和特征图的尺寸无关,仅和卷积核大小K、偏置O及BN有关。对于卷积张量kernel=(K, S, C, O),权重参数量为K∗K∗C∗O ,偏置参数量为O,如果使用了BN,那么还有两个可学习参数α,β,参数量都是O,总共2*O。综上,该卷积层所有的参数量为:K∗K∗C∗O+3∗O
注:上面计算的仅仅是模型的参数量。若要计算模型实际需要多少显存,还要考虑特征图的大小,因为每一层卷积的输出都需要缓存,还要BN计算出来的均值和偏差也需要缓存,权重的梯度也需要缓存。通常模型参数所占用的显存比例很小。
更多推荐




所有评论(0)