深度学习笔面试知识点总结及题目

题目:

  1. 一个已训练好的模型,如果用caffe进行finetune,该怎么做?
  2. 防止过拟合的手段(如果模型在训练集上表现比较好但在测试集上表现欠佳可以选择增大L1或L2正则的惩罚力度(L2正则经验上首选1.0,超过10很少见),或增大dropout的随机失活概率(经验首选0.5);或者当随着训练的持续在测试集上不增反降时,使用early-stopping训练的方法。当然最有效的还是增大训练集的规模,实在难以获得新数据也可以使用数据集增强的方法,比如CV任务可以对数据集进行裁剪、翻转、平移等方法进行数据集增强,这种方法往往都会提高最后模型的测试精度。)
  3. ROI pooling vs ROI align
  4. 深度学习为什么不用二阶优化?

    目前深度学习中,反向传播主要是依靠一阶梯度。二阶梯度在理论和实际上都是可以应用都网络中的,但相比于一阶梯度,二阶优化会存在以下一些主要问题:

    (1)计算量大,训练非常慢。

    (2)二阶方法能够更快地求得更高精度的解,这在浅层模型是有益的。而在神经网络这类深层模型中对参数的精度要求不高,甚至不高的精度对模型还有益处,能够提高模型的泛化能力。

    (3)稳定性。二阶方法能更快求高精度的解,同样对数据本身要的精度也会相应的变高,这就会导致稳定性上的问题。

  5. 样本的类别不均衡会带来什么问题?

    答:由于大多数都是简单易分的负样本(属于背景的样本),使得训练过程不能充分学习到属于那些有类别样本的信息;其次简单易分的负样本太多,可能掩盖了其他有类别样本的作用(这些简单易分的负样本仍产生一定幅度的loss,数量多会对loss起主要贡献作用,因此就主导了梯度的更新方向,掩盖了重要的信息)

  6. 为什么在two-stage检测器中,没有出现类别不均衡问题呢?

    答:因为通过RPN阶段可以减少候选目标区域,而在分类阶段,可以固定前景与背景比值为1:3,或者使用OHEM(online hard example mining)使得前景和背景的数量达到均衡。

  7. 伪代码实现非极大值抑制nms

  8. LSTM为什么比RNN好?

    因为LSTM有进有出且当前的cell informaton是通过input gate控制之后叠加的,取代了RNN的叠乘,因此LSTM可以防止梯度消失,通过给梯度加门限解决梯度爆炸。

    GRU是LSTM的变体,将忘记门和输入们合成了一个单一的更新门。

  9. 什么造成梯度消失/爆炸问题:使用梯度下降法的前提是优化目标函数对于模型是可导的。深度学习笔面试知识点总结及题目_第1张图片

  10. 各种名网络的结构介绍,比较 

  11. 调参经验:

batch_size:

从小到大的调整,根据震荡程度

1.batch_size设的大一些,收敛得块,也就是需要训练的次数少,准确率上升的也很稳定,但是实际使用起来精度不高。

2.batch_size设的小一些,收敛得慢,可能准确率来回震荡,因此需要把基础学习速率降低一些,但是实际使用起来精度较高。

 激活函数选择:

常用的激活函数有relu、leaky-relu、sigmoid、tanh等。对于输出层,多分类任务选用softmax输出,二分类任务选用sigmoid输出,回归任务选用线性输出。而对于中间隐层,则优先选择relu激活函数

学习率设定:

一般学习率从0.1或0.01开始尝试。学习率设置太大会导致训练十分不稳定,甚至出现Nan,设置太小会导致损失下降太慢。学习率一般要随着训练进行衰减。衰减系数设0.1,0.3,0.5均可,衰减时机,可以是验证集准确率不再上升时,或固定训练多少个周期以后自动进行衰减。

优化器选择:

如果数据是稀疏的,就用自适应方法,即 Adagrad, Adadelta, RMSprop, Adam。整体来讲,Adam 是最好的选择。SGD 虽然能达到极小值,但是比其它算法用的时间长,而且可能会被困在鞍点。如果需要更快的收敛,或者是训练更深更复杂的神经网络,需要用一种自适应的算法。

机器学习部分知识点:

  1. .简述你熟悉的聚类算法并说明其优缺点:

    k-means:随机初始化类别中心点,计算点与每个组中心的距离,归类为最近的中心的组里;将每组点的平均值作为新的中心;随机初始化中心再重复几次。

    速度非常快,计算量少o(n);但是必须先确定类数,结果可能不可重复,缺乏一致性。

    mean-shift聚类:设定多个滑窗(不断减小),滑窗内的点的均值作为中心点,迭代移动到密度高的区域,一直移动直到窗内密度不再增长。

    自动选择类数,聚类中心向着更密集的点收敛,但是需要考虑滑窗尺寸。

    EM期望值最大:设定聚类数量,随机初始化每个集群的高斯分布函数,给定每个簇的高斯分布,计算每个点属于簇的概率,基于概率计算新的高斯分布的参数

    EM算法一般分为2步:

      E步:选取一组参数,求出在该参数下隐含变量的条件概率值;

      M步:结合E步求出的隐含变量条件概率,求出似然函数下界函数(本质上是某个期望函数)的最大值。

      重复上面2步直至收敛。

  2. 请说出使用过的分类器和实现原理:

    SVM分类器是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。   softmax分类器将输出映射成为(0,1)的值,概率最大的节点即预测目标。

  3. Random Forest的随机性表现在哪里:随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。随机森林的随机性体现在每颗树的训练样本是随机的,树中每个节点的分裂属性集合也是随机选择确定的。有了这2个随机的保证,随机森林就不会产生过拟合的现象了

  4. 常用边缘检测有哪些算子,各有什么特性和优缺点:

    Prewitt算子:

    优点:一阶微分算子,平均滤波,对低噪声的图像有较好的检测效果。缺点:抗噪性差。

    Sobel算子:

    优点:一阶微分算子,加权平均滤波,对低噪声的图像有较好的检测效果。缺点:抗噪性差。

    Roberts算子:

    优点:一种利用局部差分算子寻找边缘的算子,定位比较精确。缺点:对噪声敏感,无法抑制噪声的影响。

    Laplacian算子:

    优点:各向同性,二阶微分,精确定位边缘位置所在。缺点:无法感知边缘强度。只适用于无噪声图象。存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。

    Laplacian of Gaussian(LoG)算子:先对图像做高斯滤波,再做Laplacian算子检测。

    Canny算子:一个具有滤波,增强,检测的多阶段的优化算子。先利用高斯平滑滤波器来平滑图像以除去噪声,采用一阶偏导的有限差分来计算梯度幅值和方向,然后再进行非极大值抑制。

  5. 误差、偏差和方差有什么区别和联系

    偏差衡量模型拟合训练数据的能力反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度Bias 越小,拟合能力越高;反之,拟合能力越

    误差(error):一般地,我们把学习器的实际预测输出与样本的真是输出之间的差异称为“误差”。Error = Bias + Variance + Noise,Error反映的是整个模型的准确度。

    方差描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散,模型的稳定程度越差;反映的模型稳定性。

  6. k折交叉验证:​​​​​​

    1. 将含有N个样本的数据集,分成K份,每份含有N/K个样本。选择其中1份作为测试集,另外K-1份作为训练集,测试集就有K种情况。

    2. 在每种情况中,用训练集训练模型,用测试集测试模型,计算模型的泛化误差。

    3. 交叉验证重复K次,每份验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测,得到模型最终的泛化误差。

    4. 将K种情况下,模型的泛化误差取均值,得到模型最终的泛化误差。

  7. KNN中的K如何选取的:

    1.如果选择较小的K值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的估计误差会增大,换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合;

    2.如果选择较大的K值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值的增大就意味着整体的模型变得简单。

    3.K=N,则完全不足取,因为此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的累,模型过于简单,忽略了训练实例中大量有用信息。

    在实际应用中,K值一般取一个比较小的数值,例如采用交叉验证法(简单来说,就是一部分样本做训练集,一部分做测试集)来选择最优的K值。

  8. 深度学习中有什么加快收敛/降低训练难度的方法:

    1. 瓶颈结构

    2. 残差

    3. 学习率、步长、动量

    4. 优化方法

    5.预训练

  9.  

  10.  
  11.  

你可能感兴趣的:(其他)