1. 为什么说神经网络可以逼近任意函数?
万能逼近定理的核心主张是,在有足够多的隐藏神经元
的情况下,存在着一组可以近似任何函数的连接权值。
神经网络之所以能够逼近任意函数,关键在于将非线性关系函数
整合到了网络中。常见的非线性激活函数有 ReLU, Tanh, Sigmoid等。
ReLU是一个简单的分段线性函数-计算消耗小
。另外两个都涉及到指数运算
,因此计算成本更高。
2. batch size如何选择?
batch_size
一般会影响训练的稳定性,Batch size过小会使Loss曲线振荡的比较大,大小一般按照2
的次幂规律选择,至于为什么?没有答出来,面试官后面解释是为了硬件计算效率考虑的,海哥后来也说GPU训练的时候开的线程是2
的次幂个。
3. MLE(多层感知机)的反向传播?
可以看作损失函数在第
层第
各节点产生的
残差量
。记为,从而递推公式可以表示为:
如果是回归问题(MSE):
如果是分类问题(CE):
是真实类别。
1. CNN模型中池化层的作用,Max Pooling是如何反向传递梯度的?
池化操作的本质是:降采样
。作用有:降低参数量和计算复杂度;还能够保持对平移
、伸缩
、旋转
操作的不变性。
-
Mean Pooling:反向传播的过程也就是把某个元素的梯度等分为n份分配给前一层,这样就保证池化前后的梯度(残差)之和保持不变。
-
Max Pooling:max pooling也要满足梯度之和不变的原则。反向传播也就是把梯度直接传给前一层某一个像素,而其他像素不接受梯度,也就是为0。所以max pooling操作和mean pooling操作不同点在于需要记录下池化操作时到底哪个像素的值是最大,也就是max id,这个变量就是记录最大值所在位置的。
2. CNN的反向传播细节?
-
卷积层反向传播
卷积层反向传播-1
卷积层反向传播-2 -
Average pooling的反向传播
-
Max-pooling的反向传播
3. 卷积操作怎么加速?
对于大的卷积核,加速方法一般使用傅里叶变换(或者其加强版:快速傅里叶变换)
。但是对于较小的卷积核,其转换到频域的计算量已经大于直接在空域进行卷积的计算量,所有一般直接在空域中进行卷积计算,其加速计算的方法就是把卷积操作转换成矩阵相乘
。
1. 为什么深层神经经网络里的卷积核都改成了3x3,而不是5x5?
一个5x5的卷积核就可以用两个串联
的3x3卷积核来代替,一个7x7的卷积核就可以用三个串联
的3x3卷积核来代替。
- 减少参数量:
- 两个串联的小卷积核需要3x3x2=18个参数,一个5x5的卷积核则有25个参数。
- 三个串联的小卷积核需要3x3x3=27个参数,一个7x7的卷积核则有49个参数。
- 引入了更多的非线性:
- 多少个串联的小卷积核就对应着多少次激活(activation)的过程,而一个大的卷积核就只有一次激活的过程。引入了更多的非线性变换,也就意味着模型的表达能力会更强,可以去拟合更高维的分布。
1. ResNet的结构特点以及解决的问题是什么?
ResNet解决:缓解了深层的神经网络训练中的梯度消失
问题。
ResNet通过调整网络结构(残差网络)
来解决上述问题。
2. VGG、ResNet这种模型的优势的改进点?
- VGG创新点:
- 用3x3小卷积核代替了5x5或7x7的卷积核。
- 加深了网络深度,证明了更深的网络,能更好的提取特征。
- ResNet创新点:
- Shortcut方式解决网络梯度消失问题。
- 加大网络深度,提高模型的特征抽取能力。
- 引入BN层加快网络训练速度和收敛时的稳定性。