自我介绍
学校、专业、项目简单介绍、竞争优势、表达很愿意加入公司
HR面试问题
- 职业规划?主要表明自己稳定的工作意愿,以及上进心。
我希望可以通过自己较强的学习能力和认真负责的态度,通过2-3年的沉淀,能够成为实际项目中独当一面的角色。在第5年左右,能够凭借扎实的技术功底和一定的管理能力,成为能够带领一只小团队的负责人,为公司贡献自己的决策,创造更多的价值。 - 工作地点的要求?表明自己为什么喜欢那个城市。
- 工作中最受打击的事情?
是第一次和博士师兄参加科研的时候,实验做完后,已经开始着手论文的写作了,却发现idea和别人撞车了。因为第一次的原因,当时比较难受。后面在科研过程中发现idea撞车是非常常见的事情,现在已经比较习惯了。 - 在项目过程中遇到过什么困难?怎么解决的?
在实习的时候,mentor要我根据团队已有的工作成果,继续深入研究下去,但是他给我的代码却复现不出来实验结果。代码是mentor自己写的,mentor也反复检查了几次没有发现什么问题,我只好自己一行一行的去检查。最后发现是特征提取器提取到的特征没有做归一化,导致了精度下降。其实归一化这个操作就是一行代码,但是恰恰因为一行代码的差异太难以发现,导致结果相差较大。能解决这个问题,我觉得也能说明我是个比较细心的人。 - 评价一下自己的性格?
我的性格优势在于简单直率、心胸宽广,乐于助人。我自己认为我虽然不是一个特别外向的人,但是和我相处一般会感觉到比较轻松愉快。然后在实习期间,同组的实习生遇到问题也经常会找我帮忙解决问题。
深度学习相关
卷积层、BN层等:
- BN层有哪些超参数?
momentum、affine、track_running_stats 。 - Batch Normalizition是什么?它的作用?
BN是一种批规范化操作,公式为减均值除标准差,然后乘 γ \gamma γ加 β \beta β。它将输入分布归一化到0,1分布,使得激活函数更好的作用,因此解决了梯度消失的问题,同时因为数据被归一化,可以使得网络有更好的收敛速度,但是似乎没有证据表明它可以解决高层的网络输入分布变化剧烈的问题(Internal Covariate Shift)。 - BN为什么要变换重构?
为了尽可能的还原出之前的分布,让下层神经元学习到的分布不会被破坏。 - BN训练和测试时的区别?
训练时用当前batch计算均值、方差,测试时用所有batch累积的。 - 卷积层的参数量计算: C i n ∗ K 1 ∗ K 2 ∗ C o u t + C o u t C_{in} * K_1 * K_2 * C_{out} + C_{out} Cin∗K1∗K2∗Cout+Cout
- 卷积层的计算量:
乘法个数为 C i n ∗ K 1 ∗ K 2 ∗ C o u t ∗ H o u t ∗ W o u t C_{in} * K_1 * K_2*C_{out} * H_{out}*W_{out} Cin∗K1∗K2∗Cout∗Hout∗Wout
不考虑bias,加法个数为 C i n ∗ ( K 1 ∗ K 2 − 1 ) + ( C i n − 1 ) = C i n ∗ K 1 ∗ K 2 − 1 C_{in} * (K_1 * K_2-1) +(C_{in}-1) = C_{in} * K_1 * K2-1 Cin∗(K1∗K2−1)+(Cin−1)=Cin∗K1∗K2−1
考虑bias,加法个数为 C i n ∗ ( K 1 ∗ K 2 − 1 ) + ( C i n − 1 ) + 1 = C i n ∗ K 1 ∗ K 2 C_{in} * (K_1 * K_2-1) +(C_{in}-1)+1 = C_{in} * K_1 * K2 Cin∗(K1∗K2−1)+(Cin−1)+1=Cin∗K1∗K2
卷积神经网络相关
- LeNet5:最早的卷积神经网络,卷积层+AveragePooling+全连接
- AlexNet :ReLU增强非线性,DropOut避免过拟合,MaxPooling,GPU
- VGG: 更小的卷积核(3 * 3)
- NIN,1 * 1卷积核
- Inception v1:通过1*1的卷积核,减少特征的数量;通过不同大小的卷积核,增大了网络的宽度和尺度适应性。
- Inception v2:BN层引入,两个3 * 3的卷积代替1个5 * 5的卷积
- Inceptionv3:3 * 3的卷积核改为3 * 1和1 *3的组合,减少参数量的同时网络更深、增加了非线性
- ResNet:残差结构,防止梯度消失、网络退化的问题,第一次可以把网络构建到上百上千层
- Inceptionv4:增加了残差结构,类似ResNet
- SqueezeNet:1* 1卷积squeeze,然后3*3卷积expand,减少模型参数量
- WideResNet:增加网络的宽度(特征图的通道数)
- ResNeXt:与inception相似,只是把通道数的cat换成了相加
- DenseNet:每一层都与之前所有层相并联
- MobileNet:深度可分离卷积,depthwise的卷积,压缩了很多参数量,也节省了很多计算时间,可以有效应用在移动端和嵌入式设备
损失函数
- 交叉熵损失的梯度推导
- 交叉熵为什么广泛应用在深度学习框架中
- 为什么softmax-cross-entropy-loss在各个深度学习框架中都是直接实现的,而不是先算softmax后,再算cross-entropy?可查看这篇博客
- triplet loss为什么要加margin?其一,如果不加margin,那么模型很可能就将所有的样本都学习为0向量,这样loss就为0了。其二,不加margin会导致模型对正负样本的区分能力不大。
- 为什么人脸识别要加margin?分类任务为什么不加margin?面试官的答案:因为人脸识别最后的目标是学习到一个较好的encoder,然后这个encoder提取到的特征可以计算相似度,进而判断是哪个人的,但是加margin会提高学习难度,因而没有用在分类任务上
- triplet loss的梯度推导?根据损失函数,对三元组中的样本求偏导即可。
- 交叉熵、相对熵、信息熵之间有什么联系和区别?首先有相对熵=KL散度,可以度量两个分布之间距离;其次信息熵表示着信息量的期望;而交叉熵 = 信息熵 + 相对熵,通常作为损失函数应用在深度学习中,另外在训练模型的时候由于真实的概率分布已经确定,故信息熵部分是个常量,优化交叉熵损失等价于优化KL散度。
- 手动实现一个网络的backward(根据损失函数,对参数求偏导,即可得到梯度,然后根据 l r × 梯 度 × l o s s lr \times 梯度 \times loss lr×梯度×loss来更新参数)
其他常见问题
-
各个优化器的优缺点?
SGD最终模型效果比较好,但是收敛时间长,容易困在鞍点。SGDM,带动量的SGD,解决了困在极值点的问题。Adam同时包含一阶动量(为了避免鞍点)和二阶动量(自适应学习,即以往的优化中更新多的学习率低),但是泛化性不如sgd,精调参数的sgd效果会更好。 -
你知道哪些评价指标?
各种评估指标 包括Acc,精度,召回率,F1值:2PR/(P+R),ROC曲线:FP_rate为x轴和TP_rate为y轴,AUC:ROC曲线下方的面积 -
常见的数据增强方法?
平移、翻转、裁剪、缩放 、随机噪声扰动 -
WGAN和GAN有什么区别?链接
-
weight normalizition是什么,有什么作用?feature normaliziton是什么,有什么作用?两个问题的答案都可以看这个[链接].(https://zhuanlan.zhihu.com/p/76391405)weight normalizition主要是为了解决样本不均衡的问题,因为样本多的类别weight会比较大。feature normalize是因为欧式距离下norm小的feature(困难样本)容易分错类。
-
样本不均衡如何解决?
A.数据方面可以补充数据,欠采样和过采样
B.损失函数方面可以代价敏感的损失函数(增大数据量少的类别的权重)
C.使用多个分类器,L1是正常采样训练的分类器,L2是均衡采样训练的分类器,L3是L1和L2分类结果不一致的采样训练的分类器
D.weight normalizition归一化
E.换一种代价函数
F.修改算法,比如sigmoid中的阈值 -
准确率不能反应这个样本不均衡的模型性能!那么有哪些评价指标?F1,ROC, precision,recall等。
传统算法、机器学习算法
-
解释一下SIFT的算法流程?SIFT为什么具有尺度不变性、旋转不变性、亮度不变性?
SIFT有4个主要步骤:
a. 建立高斯差分金字塔:通过降采样的方式得到多个组,每个组里是由不同的sigma的高斯卷积函数得到的卷积结果。在n+3层的高斯金字塔中,我们可以得到n+2层(相减)的高斯差分金字塔(代表纹理),然后可以得到n张(最上和最下没法找极值点)图片的极值点。而正因为拉普拉斯算子具有尺度不变性,近似的高斯差分也才具有尺度不变性。
b. 极值点的精准定位:查找亚像素的极值点。在极值点处泰勒展开,计算真正的极值点(而不是像素点)。此外还需要阈值化、消除边缘效应等操作来去掉不符合实际情况的点。
c. 确定关键点的主方向,通过3sigma邻域内的梯度方向直方图,确定主方向和辅方向。共有8个方向。
d.生成关键点特征描述符,在这里每次都要把16个子块以中间点为原点旋转到主方向的方向上面,因而具有旋转不变性。 -
K-means的优缺点?优点:原理比较简单,实现也是很容易,收敛速度快。知道有几个类的时候,即知道k的时候,效果比较好。缺点:K值需要预先给定,很多情况下K值的估计是非常困难的。对噪音和异常点比较的敏感。
-
SVM的推导。根据点到平面的距离公式,即几何间隔,目标函数为:max最小的距离,s.t.所有距离大于最小距离,然后根据拉格朗日函数,以及对偶问题(KKT条件)进行目标函数转化。最后根据导数为0求得极值。
-
常见的分类模型有哪些?决策树、逻辑回归、SVM、神经网络等
-
逻辑回归的公式推导?优缺点?优点:训练速度较快,简单易理解,适合二分类问题,内存资源占用小。缺点:线性决策面,准确率并不是很高(太简单),易受到数据集不平衡影响,多重共线性
-
决策树算法知道么? ID3,C4.5,CART有什么区别?信息增益、信息增益率、gini指数。
-
决策树算法的优缺点?优点:计算快、精度高、可视化效果好 缺点:容易过拟合、易受到属性之间相关性影响。
编程基础
- 红黑树
- c++11新特性?nullptr的引入,类型推导auto,类似python的for循环,匿名函数lambda,各种容器等
- python中"@"符号有什么作用?装饰器,可以修饰一个函数,增加新的功能。