深度学习面试题目-1

1.比较Boosting和Bagging的异同

1、二者都是集成学习算法,都是将多个弱学习器组合成强学习器的方法。

2、Bagging(套袋法):从原始数据集中每一轮有放回地抽取训练集,训练得到k个弱学习器.。

对于分类:将这k个弱学习器以投票的方式得到最终的分类结果。

对回归问题;计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

3、Boosting:每一轮根据上一轮的分类结果动态调整每个样本在分类器中的权重,训练得到k个弱分类器,他们都有各自的权重,通过加权组合的方式得到最终的分类结果。

2、谈一谈深度学习中的归一化

1、在传统机器学习和深度学习中都会用到这项技术,作用是将某一特征的数据缩放到(-1,1)或者(0,1)之间。
2、首先,这样能够规避掉不同特征之间量纲商上的差异。
3、其次,这样能够减小波动的范围,让参数学习更简单,从而加快收敛。(可以理解为相同学习率下,使目标平面更加平滑)
4、同时,对于一些sigmoid之类的激活函数,太大的值会使得激活值集中在头尾两处梯度较小的地方,使得模型难以学习。(为什么自己训练keras-fashion-mnist的时候,在mxnet效果可以,在keras上效果不佳原因)

3、 延伸,谈一谈Batch-Normalization

1、这是在深度学习模型中经常会用到技巧。首先说说加它的原因。
2、虽然我们对输入进行了归一化,但是网络的深度使得开头一点点波动,到后面都会被放大,从而使得最终的优化平面仍然变得十分的陡峭。
3、那么,我们想,对于每一层的输出,我都模仿最开始的输入,给它做一个归一化,相当于对下一层的CNN开头做一个归一化,那么这样效果会不会好呢?
4、事实证明,这样的确能够使得优化平面变得更加的光滑。
5、那么先来看看BN是怎么操作,
    5.1 BN是基于Batch的,设每个batch有m个样本。
    5.2 对于每个神经元,它对第k个样本的输出,x^k=(xk-μ)/var
    5.3 xk是原始输出,μ是在m个样本上原始输出的均值,var是方差。
    5.4 最后x^k^f=γ*x^k+β,γ和β是可以学习的,为的是重新学习到x^k原始的特征分布。(即,如果学习下来觉得归一化不需要,那么让最后γ等于var,β就是μ了。)
6、还有一些group,layer,什么的,都是计算μ和β的方法不同而已。
7、最后,BN层的位置,论文中是放在激活层之前的

你可能感兴趣的:(深度学习,神经网络)