深度学习-面试

 

但是一般写程序的时候,我们想直接在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.或者用一些智能优化算法例如模拟退火,以一定的概率跳出局部极值,但是这些算法都不保证能找到最小值。

 

对批量梯度下降法和随机梯度下降法的总结:

批量梯度下降---最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小,但是对于大规模样本问题效率低下。

随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向,但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况。

posted @ 2017-07-16 22:29  simple_wxl  阅读(347)  评论(0编辑  收藏  举报