深度学习工程师面试题目收集(自用)

1.自我介绍
我叫XX,是来自XX大学的学生,现在做的方向是XX,目前做过的项目有XX,所熟悉的语言有XX。目前处于XX阶段。

2.Faster rcnn的优势是什么
(1)使用RPN(Region Proposal Network)代替原来Rcnn的Selective Search方法产生建议窗口
(2)FASTER-RCNN创造性地采用卷积网络自行产生建议框,并且和目标检测网络共享卷积网络,使得建议框数目从原有的约2000个减少为300个,且建议框的质量也有本质的提高

3.faster rcnn的作用和原理
(1)输入测试图像;
(2)将整张图片输入CNN,进行特征提取;
(3)用RPN(region proposal network)生成建议窗口(proposals),每张图片生成300个建议窗口;
(4)把建议窗口映射到CNN的最后一层卷积feature map上;
(5)通过RoI pooling层使每个RoI生成固定尺寸的feature map;
(6)利用Softmax Loss(探测分类概率) 和Smooth L1 Loss(探测边框回归)对分类概率和边框回归(Bounding box regression)联合训练

4.ROI pooling的主要作用是什么?ROI align是什么?两个的区别
1)RoIPooling顾名思义对Roi进行Pooling操作,主要用于目标检测任务。RoI(Region of interest)指的是一张图片中认为有存在目标的区域。该操作的目的是对输入feature map中的不同大小的ROI利用池化方法获得固定大小的输出feature map。
2)对Roi的max pooling操作的kernel size记作A, 即A = 多层卷积后的feature map的size / fix feature map 的size
第一种办法:对A进行四舍五入(最近邻插值法)
第二种办法: 不直接丢弃feature map的值,即改变A的值为多个不同的整数,使得划分多层卷积后的feature map的区域的个数等于fix feature map size , 然后对划分的每一个区域取最大值,即得到fix feauture map
RoIAlign针对第一种方法进行改进,何凯明在Mask RCNN中指出第一种方法会损失空间对称性 ,从而将最近邻插值法替换为双线性插值,并且命令为RoIAlign。
对于检测图片中大目标物体时,两种方案的差别不大,而如果是图片中有较多小目标物体需要检测,则优先选择RoiAlign,更精准些…

5.说一下 Faster rcnn anchor 机制,说一下 RPN
RPN的本质是 “ 基于滑窗的无类别obejct检测器 ”
anchor其实就是一堆有编号有坐标的bbox

6.Faster rcnn 有什么不足的地方吗?如何改进?
提取特征网络的改进:使用ResNet代替原来的VGG提取特征,效果显著
RPN升级版本:FPN
ROI升级:PS_RPI

7.BN 的原理
BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。

8.可以介绍你经常用的 optimizer 吗?
SGD、AdaGrad、Momentum、NAG、RMSProp、Adam

9.解释一下什么是凸优化
凸优化“ 是指一种比较特殊的优化,是指求取最小值的目标函数为凸函数的一类优化问题

编程题:手推 SVM, 补全 CNN 部分 BP 的代码

编程题: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值,就是平时写的滑动窗口最大值。

编程题: Leetcode 315 原题,线段树,好像也是一个算法竞赛题。

开放性题目:如何进行数据预处理,如何进行数据归一化等等,最后还抛出一个他们业务中正在做的项目中遇到的问题。

总结:百度面试,技术面试总共 3 轮,记得的题目就是上面这些了。感觉面试的范围还是很全面的, 对编码能力和解决问题的能力格外看重。
商汤面试经历

还是介绍自己… …
看到你做过目标检测的项目,能说明一下你在项目中主要做了什么吗?
能解释一下梯度消失或者梯度爆炸的原因,以及如何解决吗?
请问你在 Faster rcnn 中使用的哪个基础神经网络模型,VGG 还是 ResNet? 能介绍一下常用的神经网络模型吗?
看到你使用过 LSTM,请问 LSTM 主要解决什么问题,它的三个门分别是什么,有什么作用?
能从数学层面分析一下梯度消失或者梯度爆炸的原因吗?
说一下 dropout 可以解决什么问题,为什么有效?
请介绍一下你常用的 Loss 函数, cross entropy 的原理是什么?
你知道的凸函数求极值的方法有哪些?我们在机器学习中经常使用梯度下降,为什么不使用牛顿法?
如何将高维的变量映射到低维?
过拟合的原因及解决办法
平时使用什么编程语言? 请介绍一下 python 中闭包的作用?
c++ 中,类成员变量可否同时声明为虚函数和静态函数
编程题:找出数组中两数之和为指定值的所有整数对,时间复杂度为 O(n)
编程题: 找出数组前 K 的数
开放性题目:一个 5 层的教学楼,每层有若干个教室和大于 2 个的楼梯,请建立一个数学模型计算出火灾发生时所有人员撤出的时间,并列出你考虑的主要因素
总结:商汤的面试,非常注重基础,喜欢能说出自己想法的候选人,博主在面试中多次和面试官 argue,比如在答第 10 题时,博主犹豫了一段时间,面试官提示:
你听说过 PCA 降维吗, 这个问题可以通过 PCA 解决。我解释说,PCA 并不能完全解决您的这个问题,因为 PCA 只能解除线性相关,无法解决高阶相关性,
可以考虑 Kernel PCA。另外,整体感觉商汤的面试官幽默又不失严谨,博主常年在国外读书,
有时不知如何将一些专业术语翻译成中文,因此会再三和面试官确认问题,所以有了如下的对话:
面试官:你能解释一下 cross entropy 吗?
我:cross 什么?请问您说的是英文名字吗?
面试官:是,我是说的英文,哈哈哈哈
我:不好意思,我是担心我中文不好,真不是有意冒犯… …
面试官: 没事,是我英语太不好,哈哈哈哈,哈哈哈
然后是面试官长达半分钟的大笑,而我一脸懵逼 : )

其它公司的面试

能解释一下 xgboost 的原理和实现过程吗?
解释 L0 L1 L2 正则化
各种激活函数的优缺点
Bagging 和 Boosting 的区别
Max Pooling 和 Average Pooling 的区别,使用场景分别是什么?
1*1 卷积核的作用
Loss 不收敛的原因和解决方法

你可能感兴趣的:(笔记)