面经个人向(算法岗)

从三月份开始,一直在找算法岗的实习,因为导师不让出去实习的缘故,所以对于找实习一直很佛系,到今天也只面试了三个公司(阿里、字节跳动和华为)。

想记录一下这段时间面试所遇到的问题(可能只适用于我自己,大家看了觉得没有用勿喷)。

1、人群计数模型的原理:
首先根据标注的人头位置和核密度估计生成每个人群图像所对应的人群密度图,然后采用CNN网络模型基于人群特征回归人群密度图,最后计算人群密度图的数值总和作为最终的预测人数。其中,所使用的CNN网络模型包含了13个卷积层,卷积层使用了maxpooling。

2、KCF算法的原理:
KCF目标跟踪算法通过线性脊回归模型实时更新被跟踪对象的位置,使用循环矩阵和内核函数减少计算的次数,使得KCF目标跟踪算法达到了较快的速度。

3、知道的图像分类模型及各自优缺点(答案引用自别人的博客)

(1)AlexNet:5个卷积层,3个全连接层。 优势:ReLU激活函数。ReLU相比Sigmoid的优势是其训练速度更快,因为Sigmoid的导数在稳定区会非常小,从而权重基本上不再更新。这就是梯度消失问题。
Dropout。Dropout层以一定的概率随机地关闭当前层中神经元激活值,Dropout背后理念和集成模型很相似。在Drpout层,不同的神经元组合被关闭,这代表了一种不同的结构,所有这些不同的结构使用一个的子数据集并行地带权重训练,而权重总和为1。如果Dropout层有
个神经元,那么会形成
个不同的子结构。在预测时,相当于集成这些模型并取均值。这种结构化的模型正则化技术有利于避免过拟合。Dropout有效的另外一个视点是:由于神经元是随机选择的,所以可以减少神经元之间的相互依赖,从而确保提取出相互独立的重要特征。

(2)VGG: VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,5x5)。
优势:对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核优于采用大的卷积核,因为多层非线性层可以增加网络深度来保证学习更复杂的模式,而且代价还比较小(参数更少)。

(3)GoogLeNet/Inception:GoogLeNet设计了一种称为inception的模块,这个模块使用密集结构来近似一个稀疏的CNN。GoogLeNet基于这样的理念:在深度网路中大部分的激活值是不必要的(为0),或者由于相关性是冗余。因此,最高效的深度网路架构应该是激活值之间是稀疏连接的,只有很少一部分神经元是真正有效的,所以一种特定大小的卷积核数量设置得非常小。同时,GoogLeNet使用了不同大小的卷积核来抓取不同大小的感受野。

(4)ResNet:随着网络深度增加,网络的准确度应该同步增加,当然要注意过拟合问题。但是网络深度增加的一个问题在于这些增加的层是参数更新的信号,因为梯度是从后向前传播的,增加网络深度后,比较靠前的层梯度会很小。这意味着这些层基本上学习停滞了,这就是梯度消失问题。深度网络的第二个问题在于训练,当网络更深时意味着参数空间更大,优化问题变得更难,因此简单地去增加网络深度反而出现更高的训练误差。

4、介绍一下ResNet网络
解决退化问题,即网络层数增加,但是在训练集上的准确率却饱和甚至下降了,ResNet增加了一个恒等映射,将深层网络后面的那些层作为恒等映射,模型就退化成了一个浅层网络。
如果把网络设计为H(x) = F(x) + x,如下图。我们可以转换为学习一个残差函数F(x) = H(x) - x. 只要F(x)=0,就构成了一个恒等映射H(x) = x. 而且,拟合残差肯定更加容易。

5、介绍一下垃圾分类项目
分成了6类:其中5类是可回收的,包括cardboard硬纸板、metal铜制品、塑料制品等还有不可回收垃圾。
基于Keras深度学习框架:采用了4层卷积网络和2层全连接层,卷积层使用了maxPooling和relu激活函数,第一个全连接层使用了relu激活函数,第二个全连接层使用了softmax激活函数进行了分类。

6、Xgboost和lightgbm的区别
Xgboost:对每个特征都要扫描所有的样本点来选择最佳的切分点,非常耗时。
Lightgbm:运行效果更好,且速度更快。Lightgbm采用了GOSS(基于梯度的单边采样)和EFB(互斥特征捆绑)。
GOSS(基于梯度的单边采样):不是对所有样本计算梯度,而是对样本进行采样计算梯度。
EFB(互斥特征捆绑):不是对所有特征进行扫描来选择最佳的切分点,而是对某些特征进行捆绑来减少特征的维度。

7、介绍一下决策树
决策树以信息增益为准则选择最优划分属性,并按照递归的过程生成决策树。

8、介绍一下决策树可能出现的问题及相应的解决办法
在决策树学习的过程中,为了尽可能正确分类样本,节点划分过程不断重复,有时会造成决策树分支过多,以致于把训练集自身的一些特点当做所有数据都具有的一般性质而导致过拟合。
解决方法: 剪枝(包括预剪枝和后剪枝)

你可能感兴趣的:(Job)