【面试问题汇总】

1、  梯度下降:为什么多元函数在负梯度方向下降最快?

【面试问题汇总】_第1张图片

2、推导误差反向传播过程

tips:误差反向传播算法实际是对于单个样本计算偏导数,随后再通过对这些单样本的偏导数求平均作为更新参数所用的导数。

【面试问题汇总】_第2张图片

3、梯度消失和梯度爆炸原因及解决措施 

梯度消失在以下两种情况下经常出现:(1)深层网络中;(2)采用了不合适的激活函数如sigmod;

梯度爆炸在以下两种情况下京城出现:(1)深层网络中;(2)权值初始化太大;

从网络深度层面解释发生梯度消失及爆炸的原因:由上面反向传播推导过程可知,损失函数对前层网络参数的导数是由其后各层误差、权重以及激活函数的导数相乘的结果,尤其是激活函数,如果每一层的激活函数导数均大于1,则导数会随着层数程指数型增长,发生梯度爆炸;若每层的激活函数导数均小于1,则倒数会随着层数逐渐趋近于零,产生梯度消失。

解决措施:(1)梯度剪切:针对梯度爆炸,防止每一层的导数过大;(2)权重正则化:从权重的角度防止梯度爆炸,防止W过大;(3)采用relu系列激活函数:从激活函数角度防止梯度爆炸和梯度消失;(4)BN:通过对每一层的输入分布进行调整,消除了W带来的放大缩小的影响,将输入从激活函数的饱和区拉到非饱和区。(5)残差网络:由于网络学习的是残差,在反向求导时导数中恒有一个1,导致不会产生梯度消失。

4、卷积尺寸以及感受野的计算

【面试问题汇总】_第3张图片

5、说一下dropout的原理,以及dropout为什么能防止过拟合?若在训练时,以p的概率关闭神经元,则在预测(测试)的时候概率1-p怎么使用?

tips:drop只有在训练时才打开,在预测时关闭。

dropout的原理:dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃,也就是将该神经元的输出置零。

dropout的作用:解释一:由于是随即丢弃,所以每一个mini-batch都在训练不同的网络。每次做完drop都相当于从原始网络中裁剪出一个较为简单的网络,对于一个有N个节点的神经网络,有了dropout后,就可以看做是2的N次方个模型的集合了,最后的结果由这2的N次方个模型输出平均得到。这样就用了类似bagging的方法,将多个模型组合来解决过拟合的问题,同时由于训练的参数数量是不变的,不存在计算费时的问题。解释二:由于dropout会使网络中的神经元随机失活,所以使得神经元之间不能存在强依赖性,减小了模型过拟合的可能。

关于概率p:https://yq.aliyun.com/articles/68901

6、表达式为max(x,y)的激活函数,反向传播时,x、y上的梯度如何计算

较大的输入的梯度为1,较小输入的梯度为0;即较小的输入对输出没有影响;另一个值较大,它通过最大值运算门输出,所以最后只会得到较大输入值的梯度。这也是最大值门是梯度路由的原因。前向传播时,最大值往前传播;反向传播时,会把梯度分配给输入值最大的线路,这就是一个梯度路由。

7、模型评价指标

目标检测中的指标:识别精度、识别精度、定位精度

A、目标检测中衡量识别精度的指标是mAP(mean average precision)。多个类别物体检测中,每一个类别都可以根据recall和precision绘制一条曲线,AP就是该曲线下的面积,mAP是多个类别AP的平均值。

B、  目标检测评价体系中衡量定位精度的指标是IoU,IoU就是算法预测的目标窗口和真实的目标窗口的交叠。

机器学习中的指标: 准确率Accuracy、 精确率Precision、召回率Recall

混淆矩阵:

这里写图片描述

 

True Positive(真正,TP):将正类预测为正类数

True Negative(真负,TN):将负类预测为负类数

False Positive(假正,FP):将负类预测为正类数误报 (Type I error,一类错误)

False Negative(假负,FN):将正类预测为负类数→漏报 (Type II error,二类错误)

计算公式:

准确率Accuracy:(TP+TN)/总

精确率(precision):TP/(TP+FP)

召回率(recall):TP/(TP+FN)

TPR (True Positive Rate)  = TP / [ TP + FN] ,TPR代表能将正例分对的概率

FPR(False Positive Rate) = FP / [ FP + TN] ,FPR代表将负例错分为正例的概率

 F值 = 准确率 * 召回率 * 2 / (准确率 + 召回率) 

ROC曲线和AUC:ROC曲线,是以FPR为横轴、TPR为纵轴,衡量二分类系统性能的曲线。

那么ROC曲线上的点是如何得到的呢?分类器对分类的置信度一般设为50%,即置信度超过50%认为是正例,低于50%认为是反例。当然不是所有的分类器都能得到分类的置信度,因此不是所有的分类器都能得到ROC曲线。

依次改变这个置信度为10%~100%,会得到一组不同的混淆矩阵,取其中的FPR和TPR值组成坐标,连接这些值,就得到ROC曲线。ROC curve经过(0,0)(1,1),实际上(0, 0)和(1, 1)连线形成的ROC curve实际上代表的是一个随机分类器。一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。ROC曲线与X轴围成的图形面积可以作为一个综合衡量指标,即AUC(Area Under Curve,曲线下面积)。AUC越大,曲线就越凸,分类器的效果也就越好。ROC曲线反映了分类器对正例的覆盖能力和对负例的覆盖能力之间的权衡。

8、使用tfrecord读取数据和直接从硬盘读取数据的区别

Tensorflow有和tfrecord配套的一些函数,可以加快数据的处理。实际读取tfrecord数据时,先以相应的tfrecord文件为参数,创建一个输入队列,这个队列有一定的容量(视具体硬件限制,用户可以设置不同的值),在一部分数据出队列时,tfrecord中的其他数据就可以通过预取进入队列,并且这个过程和网络的计算是独立进行的。也就是说,网络每一个iteration的训练不必等待数据队列准备好再开始,队列中的数据始终是充足的,而往队列中填充数据时,也可以使用多线程加速。

9、混合高斯模型(GMM)是怎么样的?原理和公式

混合高斯模型使用K(基本为3到5个)个高斯模型来表征图像中各个像素点的特征,在新一帧图像获得后更新混合高斯模型, 用当前图像中的每个像素点与混合高斯模型匹配,如果成功则判定该点为背景点,将其归入该模型中,并对该模型根据新的像素值进行更新,若不匹配,则以该像素建立一个高斯模型,初始化参数,代替原有模型中最不可能的模型。最后选择前面几个最有可能的模型作为背景模型,为背景目标提取做铺垫。

10、softmax表达式及误差反向推导

【面试问题汇总】_第4张图片

 11、给出LR(逻辑回归)算法的cost function公式的推导过程

【面试问题汇总】_第5张图片

12、ROI polling 和 ROI Align的对比

https://www.jianshu.com/p/2a5ffca8b861

13、介绍ResNet、Inception 和 Xception 的结构

Resnet:直观上理解,网络层数增加至少不会减弱网络的表现,因为如果增加的层数是恒等映射,则不会产生影响。所以resnet作者假设恒等映射是难以学习的,而且他们提出了一种修正方法:不再学习从 x 到 H(x) 的基本映射关系,而是学习这两者之间的差异,也就是「残差(residual)」。然后,为了计算 H(x),我们只需要将这个残差加到输入上即可。

Inception:inception作者关注的是怎样在不增加计算成本的前提下扩展神经网络?思路1:inception模块会使用大小不同的卷积核以及池化并行地对输入进行操作,并将结果concat到一起。这同时导致了计算量的剧增;思路2:使用1x1卷积来压缩通道数,从而减少参数量;思路3:使用小卷积核级联的形式来代替大的卷积核,从而减少了参数量;思路4:在H和W方向上将卷积核拆分,也达到了减少参数量的效果。

Xception:Xception作者的假设是跨通道的相关性和空间相关性是完全可分离的,最好不要联合映射它们。提出了空间可分离卷积,将空间信息和通道信息解耦,先对输入的每个通道单独进行卷积操作,然后再利用1x1卷积融合通道信息,同时模型参数大幅度减少。

14、Fatser rcnn中,如何处理背景候选框和含有目标的候选框不平衡问题?

方法1:OHEM,控制正负样本的比例

方法2:使用focal loss,focal loss的作者认为,目前目标检测的效果提升的瓶颈在于:样本的类别不平均,不论是two-stage的RCNN 系列还是one-stage的YOLO、SSD系列,都会产生大量的不包含物体的背景框,负样本数量太大,占总loss的大部分,而且多是容易分类的,因此使得模型的优化方向并不是我们所希望的那样。这个损失函数是在标准交叉熵损失基础上修改得到的。这个函数可以通过减少易分类样本的权重,使得模型在训练时更专注于难分类的样本。

15、如何理解偏差和方差

偏差:偏差度量了学习算法的期望预测与真实结果的偏离程序, 即 刻画了学习算法本身的拟合能力 .

方差:方差度量了同样大小的训练集的变动所导致的学习性能的变化, 即 刻画了数据扰动所造成的影响 .

噪声:噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界, 即 刻画了学习问题本身的难度

一般来说, 偏差与方差是有冲突的, 称为偏差-方差窘境 (bias-variance dilemma):给定一个学习任务, 在训练初期, 由于训练不足, 学习器的拟合能力不够强, 偏差比较大, 也是由于拟合能力不强, 数据集的扰动也无法使学习器产生显著变化, 也就是欠拟合的情况;随着训练程度的加深, 学习器的拟合能力逐渐增强, 训练数据的扰动也能够渐渐被学习器学到;充分训练后, 学习器的拟合能力已非常强, 训练数据的轻微扰动都会导致学习器发生显著变化, 当训练数据自身的、非全局的特性被学习器学到了, 则将发生过拟合。
16、SVM原理与核函数的作用

SVM它本质上即是一个分类方法,用w^T+b定义分类函数,于是求w、b,为寻最大间隔,引出1/2||w||^2,继而引入拉格朗日因子,化为对拉格朗日乘子a的求解(求解过程中会涉及到一系列最优化或凸二次规划等问题),如此,求w.b与求a等价,而a的求解可以用一种快速学习算法SMO,至于核函数,是为处理非线性情况,若直接映射到高维计算恐维度爆炸,故在低维计算,等效高维表现。

17、L1正则化和L2正则化的区别,为什么可以避免过拟合

区别:(1)L1是模型各个参数的绝对值之和。L2是模型各个参数的平方和的开方值。(2)L1会趋向于产生少量的特征,而其他的特征都是0,因为最优的参数值很大概率出现在坐标轴上,这样就会导致某一维的权重为0 ,产生稀疏权重矩阵;L2会选择更多的特征,这些特征都会接近于0。  最优的参数值很小概率出现在坐标轴上,因此每一维的参数都不会是0。当最小化||w||时,就会使每一项趋近于0;(3)Smooth L1 Loss相比于L2 Loss对于离群点(outliers)更不敏感(Fast R-CNN中的解释:L1 Loss that is less sensitive to outliers than the L2 loss used in R-CNN and SPPnet)。更详细的解释是当预测值和目标值相差很大时,L2 Loss的梯度是(x-t)容易产生梯度爆炸,L1 Loss的梯度为常数,通过使用Smooth L1 Loss,在预测值与目标值相差较大时,由L2 Loss转为L1 Loss可以防止梯度爆炸。

避免过拟合:一般认为参数较小的模型比较简单,能够适应不同的数据集,也在一定程度上避免过拟合现象。所以L2自然可以产生较小的参数值来防止过拟合,L1则通过较大的正则化系数来产生较小的参数值,达到过拟合效果。

18、为什么参数越小代表模型越简单

越是复杂的模型,越是尝试对所有样本进行拟合,包括异常点。这就会造成在较小的区间中产生较大的波动,这个较大的波动也会反映在这个区间的导数比较大。只有越大的参数才可能产生较大的导数。因此参数越小,模型就越简单。

19、生成模型和判别模型

对于输入x,类别标签y: 生成式模型估计它们的联合概率分布P(x,y) ,常见的生成模型有:朴素贝叶斯、混合高斯模型、马尔科夫随机场等;判别式模型估计条件概率分布P(y|x) ,常见的判别模型有:逻辑回归模型、支持向量机、KNN、Boosting、线性回归等。

20、SVM与LR的区别与联系

联系:(1)二者一般均用来处理二分类问题(在改进情况下可用来处理多分类问题)(2)都可通过正则化来避免模型过拟合。

区别:SVM只关心支持向量而忽略非支持向量,LR关心数据集中所有的数据点

21、YOLO中多分类为什么用多个sigmod而不是用softmax?

使用softmax分类时,不同类别之间会存在竞争,比如当类别中同时有[狗]和[哈士奇]时,结果只能得到其中一个,而多个sigmod各自独立分析每个类别的置信度,不会互相冲突。

你可能感兴趣的:(乱七八糟)