计算机视觉及深度学习岗位应聘问题汇总(持续更新中)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ferriswym/article/details/81331191

本文旨在收集在面试过程中问到的,以及从网上收集到的有价值的问题,目的是为了从问题出发主动整合知识,在校招有限的时间内抓住重点,避免漫无目的地看书复习。这些问题尽量给出自己的回答,如果暂时没有回答或者需要较长时间整理资料的,需要后续再补充。

K-means的算法流程?与KNN的区别?

K-means的基本算法流程:
1. 初始化k个聚类中心 c 1 , c 2 , . . . , c k
2. 对于每个样本 x i 和每个聚类中心 c j ,计算样本与聚类中心之间的距离 d i j
3. 对于每个样本 x i ,基于其最小的 d i j 把其分配到第 j 个类 C j
4. 对于每个类 C j ,计算其所有样本的均值作为新的聚类中心,重复步骤2和步骤3直至样本点所属的类不再变化或达到最大迭代次数

K-means与KNN的区别:
- K-means是无监督学习算法,KNN是有监督学习算法
- K-means有明显的训练过程(求聚类中心),KNN在学习阶段只是简单的把所有样本记录
- 在测试阶段,对于K-means,新的样本点的判别与聚类中心有关,即与所有训练样本有关,对于KNN,新的样本点的判别只是与最近邻的K个样本有关。

在目标检测算法中,two stage的算法比one stage在检测小物体上更有效,此说法同意吗,为什么?

基本上同意这个说法。
要说明这个问题主要从感受野的角度去看,one stage的方法,对于SSD,其采取多个特征图进行分类,但由于依赖网络中比较深的层(特征图),感受野很大,因而小物体检测不准确。同样,对于Yolo,由于在方法设计中就把原图分块,即设定了最后用于判断的特征图尺寸,其感受野也很大,因而对小物体判断也不准确。
相对于one stage方法要求同时分离前景和背景以及做出分类,two stage的方法由于proposal的存在可以先用简单的结构分出前景和背景(此时感受野小,特征图分辨率高),再通过深层网络做进一步分类和精修,提高准确率。
one stage的方法也有针对这个问题进行过优化,SSD增加相对不那么深的特征图层作判断,以减小感受野增加分辨率,但层数不深的特征图的判别能力有限,无法大幅增加准确率;Yolo v3增加了FPN,用多尺度特征来判断,增加了对小物体判别能力;RetinaNet也是one stage方法,用了FPN判别,此处对小物体检测更有效,另外其设计了focal loss的训练方式,此方式可认为把two stage中proposal达到的正负样本平衡以修改损失函数的方式达到类似效果,提高了训练效率和整体的准确率。

梯度下降法与牛顿法的区别与优劣性

主要的的区别:梯度下降法是一阶,牛顿法是二阶
牛顿法相对于梯度下降法:
优点:二阶比一阶收敛速度快;
缺点:对目标函数严格,要求目标函数二阶可微,Hessian矩阵正定;需要计算Hessian矩阵以及它的逆,计算量大。
参考:https://www.cnblogs.com/shixiangwan/p/7532830.html

描述Canny算法的流程

以下是简述:
1. 先用高斯滤波器进行图像模糊(一般边缘检测算法都需要先滤波降低对噪声的敏感)
2. 计算图像的梯度幅值图像和角度图像(计算梯度即提取边缘,参考其它边缘检测算法;计算角度是为步骤3要用)
3. 对梯度幅值图像进行非最大值抑制(目的是为了细化边缘)
4. 用双阈值对边缘进行选择和连接(主体思想是把弱边缘连接到强边缘上)

以下问题来自知乎:https://zhuanlan.zhihu.com/p/25005808,提出自己的想法和答案

CNN最成功的应用是在CV,那为什么NLP和Speech的很多问题也可以用CNN解出来?为什么AlphaGo里也用了CNN?这几个不相关的问题的相似性在哪里?CNN通过什么手段抓住了这个共性?

CNN是用于挖掘数据之间的空间相关性(相对于RNN用于挖掘时序相关性),所以不管是NLP,Speech还是AlphaGo,只要数据之间存在空间相关性,就可以使用CNN。而CNN最成功的应用在CV是因为在图像数据中的空间相关性最明显,像素之间存在两个维度上的空间相关性。
回答CNN通过什么手段抓住此共性这个问题,实质上是回答卷积和池化的特点。主要手段有局部连接(local connectivity)权值共享(parameter sharing)池化(pooling)(跟原文回答有点出入,觉得多层次是深度学习的特点而不是CNN的特点)。局部连接和权值共享有效地减少了网络的权值参数,抑制过拟合,同时保持了原始数据之间的空间联系。池化是下采样的一种方式,只取数值最大的特征,减少参数并且在空间上对原图物体保持平移不变性。

什么样的资料集不适合用深度学习?

  1. 数据集太小。数据集太小时,用深度学习提取出来的特征非常容易过拟合,没有泛化能力,因而不及传统的机器学习方法。其本质是样本空间太稀疏,不能反映总体空间的分布,因而用深度学习得到的模型会过拟合。
  2. 数据之间没有局部相关性。深度学习对于结构化的数据提取特征有非常好的效果,但对于没有结构化的数据,即数据之间不存在局部相关性,如可能存在统计关系等,此时用深度学习就不是很合适。

激活函数选用什么,有什么好处,为什么会有这样的好处。

1)sigmoid:
表达式: f ( x ) = 1 1 + e x
求导: f ( x ) = f ( x ) ( 1 f ( x ) )
特点:增强0附近的梯度,放大信号,梯度计算方便,但对非敏感区域会饱和,造成梯度消失
2)tanh:
表达式: f ( x ) = e x e x e x + e x
求导: f ( x ) = 1 ( f ( x ) ) 2
特点:与sigmoid函数相似,另经过原点,不会引起在原点的偏移
3)Relu:
表达式: f ( x ) = m a x ( 0 , x )
求导: f ( x ) = { 0 x < 0 1 x > 0
特点:单侧抑制,增强稀疏性,避免梯度消失
4)Softmax:(不算激活函数,但在这里一并总结了)
表达式: a j L = e z j L k e z k L
特点:用于多类分类问题,将输出归一化,方便计算基于概率的loss
求导过程:

为什么很多做人脸的Paper会最后加入一个Local Connected Conv?

对所有优化问题来说, 有没有可能找到比現在已知算法更好的算法?

Dropout怎么做,有什么用处,解释;用贝叶斯机率说明Dropout的原理

何为共线性, 跟过拟合有啥关联?

广义线性模型是怎被应用在深度学习中?

什么造成梯度消失问题? 推导一下

不同的权值初始化方式以及其造成的后果。为什么会造成这样的结果。

为什么网络够深(Neurons 足够多)的时候,总是可以避开较差Local Optima?

猜你喜欢

转载自blog.csdn.net/ferriswym/article/details/81331191
今日推荐