深度学习-面试
但是一般写程序的时候,我们想直接在test时用 , 这种表达式。(where
)
因此我们就在训练的时候就直接训练 。 所以训练时,第一个公式修正为
。 即把dropout的输入乘以p 再进行训练,这样得到的训练得到的weight 参数就是
,测试的时候除了不使用dropout外,不需要再做任何rescale。Caffe 和Lasagne 里面的代码就是这样写的。
面试一些题目:
时间复杂度:O(T*n*k*m)
n:元素个数,k:第一步中选取的元素个数,m:每个元素的特征项个数,T:第5步中迭代的次数
batch norm的作用:
全连接层后,激励层前
a)避免训练过程中网络层落入饱和区导致的梯度消失,加快网络训练
b)减少对初始值的依赖
c)实际是一种正则化,减少对dropout的需求
dropout层
a)别让神经元记住太多东西,有一种泛化能力
b)每次关掉一部分感知器,得到一个新的模型,做融合,不听一家之言
防止过拟合:
a)数据扩充(resize 256*256 随机裁剪227*227,水平翻转)
b)dropout
c)正则化 weight_decay
d)early stop
正则化能够解决过拟合
偏差和方差之间的一个tradeoff
5次多项式比2次多项式复杂,正则化是一种控制模型复杂度的一种方法
梯度下降迭代的不动点(梯度为0的点)有三类——极大值,极小值,鞍点
极小值!=最小值
鞍点(saddle point)的数学含义是:目标函数在此点上的梯度(一阶导数)值为 0,但从改点出发的一个方向是函数的极大值点,而在另一个方向是函数的极小值点。
1.梯度下降能找到函数极小值。
2.能找到极小值的原因是负梯度方向是函数值最速下降方向。(泰勒展开)
3.想要用梯度下降找到最小值要求是凸函数。
4.1如果不是凸函数,要么把目标函数近似成凸函数
4.2.或者用一些智能优化算法例如模拟退火,以一定的概率跳出局部极值,但是这些算法都不保证能找到最小值。
对批量梯度下降法和随机梯度下降法的总结:
批量梯度下降---最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小,但是对于大规模样本问题效率低下。
随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向,但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况。