1.自我介绍?
主要介绍了本科的成绩和几个比赛获奖情况、保研时转专业到计算机、现在实验室的研究方向以及实习的目的。
2.计算机基础课程学过没有?
我说只接触过计算机网络、数据结构和算法、微机原理,没有再深入问下去。
3.编程语言主要使用哪个?
简历上写了 C/C++、Python,我说本科主要学了 C 语言,后来用各种单片机,因此用 C 语言最多,C++ 基础知识也都知道, Python 是接触深度学习之后才开始用,没有再问语言细节。
4.以前主要用什么单片机, arm、FPGA了解吗?
我说以前用过 51 和 arm 系列单片机,FPGA 在学习数电课程的时候了解过。
- 5.数学基础怎么样?
我说本科数学成绩挺好,后来进入实验室后导师也非常注重数学基础,让我们深入学习线性代数、矩阵论、最优化方法,我去年又重新学习了麻省理工的线性代数公开课,收获很大,现在也一直还在学习,面试官没有再具体考证。
6.简单介绍一下 PCA,为什么会有主要特征?
我说 PCA 通过对数据的协方差矩阵进行奇异值分解,然后可以提取出数据的主要特征对数据进行降维。数据之间的相关性可能会导致数据冗余,因此数据就会有主要特征。(面试的时候答成了 PCA 是怎么保证提取出主要特征的,讲了一堆降维后数据损失很小的内容)
7 Batch Normalization 怎么实现?
我说 Batch Normalization 就是对神经网络中的数据进行归一化,使得数据的均值为0 ,方差为 1。在数据变化范围比较大的情况下可以对数据进行一下缩放,增强系统对输入数据的鲁棒性,加快神经网络的收敛速度,同时还可能会有一点正则化的效果。然后面试官举了个例子,给定 H*W*C 的数据,具体怎么实现 BN。我说针对每个 channel 的数据分别求均值和方差,然后再带入相应公式。
8.正则化方法有哪些,具体怎么实现?
L1、L2 正则化,是通过在损失函数中添加一项对权重的约束来实现正则化的,L1 是求权重的绝对值之和,L2 是求权重的平方和; dropout 是通过设置 keep_prob 参数随机让部分神经元在训练过程中不起作用来实现正则化的;早停是通过比较验证集损失和测试集损失在适当时候提前停止训练神经网络来实现正则化的;数据扩增是在图像处理领域通过对输入图片进行裁剪、旋转等方法增大训练数据集来实现正则化的。
9.知道那些激活函数?
sigmoid, tanh, relu, leaky relu。
10.Momentum 优化算法原理,为什么要用?
我说 Momentum 实际上就是指数加权平均,每次更新参数值时通过对最新的数值和以往的数值分配一定权重来实现更新过程,可以让参数平滑更新,某些情况下能够加快训练速度。
11.读过那些论文,了解过计算机视觉哪些领域哪些方法?
刚好最近读过物体检测的几篇论文,我就说看过 YOLO 三个版本、R-CNN 系列、Group Normalization、本征图像分解等的论文。
12.简介 TensorFlow 怎么使用?
我说 TensorFlow 通过定义一系列操作来构成一个图模型,然后构建一个会话运行这个图模型,通过自动的反向传播来训练神经网络,并通过 TensorBoard 可视化工具来辅助调试。
13.熟悉卷积神经网络中用于图像分类的常见网络结构吗?
AlexNet、VGG、GoogLeNet、ResNet、Inception。
14.反卷积、group convolution、dilated convolution?
我说反卷积可以理解为卷积的逆过程,最开始是为了可视化卷积过程,现在多用来生成图片;dilated convolution 叫做空洞卷积,是在卷积过程中引入空洞,可以增大感受野;说 group convolution 的时候当时我有点懵,还以为是一种新的卷积方式,后来一查才发现原来是将卷积过程分散到多个 GPU 上去运算,最后再把计算结果进行合并。
15.知道 RNN 吗?
我说学习过吴恩达的深度学习系列课程,其中第五门课专门讲解 RNN,没有再问下去。
16.为什么用 Linux,Linux 命令:wc、grep、cat、重定向?
我说 Ubuntu 下方便配置深度学习框架的环境,又问了我使用的编程工具,我说用 PyCharm、Clion 和 Code:Blocks。
wc: 统计指定文件中的字节数、字数、行数,并将统计结果显示输出(这个没用过,当时没答上来)
grep: 正则化匹配
cat: 输出文件内容
重定向:默认的标准输入设备是键盘,输出设备是终端,重定向就是在输入输出的时候重新配置输入设备和输出设备,比如输入时从文件读入和输出时写入文件。
17.实习时间?
我说可以保证 7,8 两个月,预计 6 月中旬本科毕业。
18. 接下来面试官问我有什么问题,我问如果能去实习的话会主要负责什么?
面试官说主要应该是搜集计算机视觉领域相关的论文然后用商汤自己的框架来复现这些方法;另一方面就是研究现有框架的底层。
19. 后续是否还有面试环节?
面试官说实习生应该就这一轮电话面试,让我后续等通知就行。
20. 总结
整体上来说考察的都是最基本的知识,应该是针对我简历上列出的主要技能来展开的,项目经历倒是没有被问到。遇到不会的问题还是主动说自己没有深入研究过这方面,未来继续加强学习。另外由于是电话面试,难免会有时候听不太清楚问题,一定要再次询问得到正确的问题,或者重复一遍让面试官确认,这点我认为很重要。