地平线助理研究员面经

地平线,助理研究员,真心不是助理,而是一个漫长的过程转正为正式研究员的过程,想想就觉得掉头发,能进去的大牛还是厉害,我这要的菜菜就不去拖后腿了
传说第一年上午全是上课,下午实现上课的内容,刷竞赛,刷项目,想想就能学到一大堆干货。能进去还是得努力。

*******************************************************************************机器学习
1、项目中Auto-encoder实际中是怎么采集数据确保有噪声和无噪声的

2、PCA

主成分分析法 principal component analysis ==》平均均方误差与训练集方差的比例尽可能小
正交属性空间中的样本点要用一个超平面来对所有样本进行表达得满足最近重构性(样本点到这个超平面的距离足够近)最大可分性(样本点在这个超平面上的投影尽可能分开)
目标函数就是最小化的是原样本点与投影重构后的样本点的距离

二维——>一维,找一方向向量,把所有数据投射到其上,使得平均均方误差最小
n维——> k维, 找到k维向量使得总的投射误差最小
特征放缩+均值归一化的预处理后 计算训练集的的协方差矩阵,对协方差矩阵特征值分解并计算协方差矩阵的特征向量,选择主成分K(特征值最大的k个特征向量)
==》逐一选取方差最大方向

当数据受到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,将它们舍弃能在一定程度上起到去噪的作用



3、PCA与Autoencoder的区别

PCA存在一个问题,比如数据原维度为n=2,现在的维度k=1,我们在线性变换的时候丢失了另一个维度的信息,虽然它相对于
其它维度并不那么重要,但它仍包含数据信息。
注:PCA是将数据转换到另一个维度空间,使数据更容易分析,比如对于分类问题,在一个特征空间并不能很好的分类,如果转换到
另一个特征空间,就可以很好学习分类器,降维只是PCA的一个应用而已。
Autoencoder是PCA的推广(这里主要是降维作用),它要学习一个数据的特征表示,要保持原数据的主要特征。Autoencoder
分为两个部分encoder, decoder,先对数据编码,然后再解码,通过最小化原数据与解码数据之间的误差学习变换矩阵


4、autoencoder 除了去噪还有什么功能

Sparse AutoEncoder 对 AutoEncoder 的 Code 增加了稀疏的约束 ,有降维的效果,可以用于提取主要特征 由于可以抓住主要特征,故具有一定抗噪能力 稀疏的可解释性好,现实场景大多满足这种约束
Contrative AutoEncoder(CAE)与 DAE 的区别就在于约束项进行了修改,意在学习出更加紧凑稳健的 Code。
Stacked AutoEncoder(SAE)对单层 AutoEncoder 进行了扩展,提出了多层的 AutoEncoder,意在学习出对输入更抽象、更具扩展性的 Code 的表达。


5、如何实现autoencoder的

tensorflow
首先,导入将要使用到的各种库和数据集,定义各个参数如学习率、训练迭代次数等,清晰明了便于后期修改。由于自编码器的神经网络结构非常有规律性,都是xW + b的结构,故将每一层的权重W和偏置b的变量tf.Variable统一置于一个字典中,通过字典的key值更加清晰明了的描述。模型构建思路上,将编码器部分和解码器部分分开构建,每一层的激活函数使用Sigmoid函数,编码器通常与编码器使用同样的激活函数。通常编码器部分和解码器部分是一个互逆的过程。定义代价函数,代价函数表示为解码器的输出与原始输入的最小二乘法表达,优化器采用AdamOptimizer训练阶段每次循环将所有的训练数据都参与训练。经过训练,最终将训练结果与原数据可视化进行对照,如下图,还原度较高。如果增大训练循环次数或者增加自编码器的层数,可以得到更好的还原效果。
初始化为什么选择Xavier(发音[‘zeɪvɪr])

深度学习模型的权重初始化太小,那么信号将在每层传递缩小而失去作用;太大将导致发散.Xavier初始化器就是让权重被初始化得不大不小,正好合适。
一篇论文指出首先通过实验分析标准初始化方法的问题;然后根据两个目标——状态方差和梯度方差保持不变推导出参数的特点,给出Xavier初始化方法的具体形式;最后通过实验验证Xavier初始化的效果确实不错。
从数学的角度看,Xavier就是满足均值为:0,方差为2/(n_in+n_out)的均匀或高斯分布

参数初始化的目的是为了让神经网络在训练过程中学习到有用的信息,这意味着参数梯度不应该为0。而我们知道在全连接的神经网络中,参数梯度和反向传播得到的状态梯度以及入激活值有关——激活值饱和会导致该层状态梯度信息为0,然后导致下面所有层的参数梯度为0;入激活值为0会导致对应参数梯度为0。所以如果要保证参数梯度不等于0,那么参数初始化应该使得各层激活值不会出现饱和现象且激活值不为0。我们把这两个条件总结为参数初始化条件: 初始化必要条件一:各层激活值不会出现饱和现象。 初始化必要条件二:各层激活值不为0。


对tensorflow的理解

TensorFlow作为目前最欢迎的深度学习框架,是由Google开源的一个计算框架,该框架已经很好的集成了深度学习的各种算法,所以说是非常方便,并且与Keras也兼容,再加上Google强大的资源,可以说选TensorFlow进行深度学习是非常明智的。TensorFlow这个名字是由Tensor(张量)与Flow(流)两部分组成
Tensor,翻译成张量,是TensorFlow中管理数据的形式,其中Tensor并不保存真正的数据,他保存的是得到这些数字的计算过程。
Flow可以理解成各个张量计算相互转化的过程,而TensorFlow计算过程是基于一个叫计算图的的方式进行的。


5、SVM 如何实现多分类

直接法       直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”实现多类分类。这种方法看似简单,但其计算复杂度比较高,实现起来比较困难,只适合用于小型问题中;
间接法    主要是通过组合多个二分类器来实现多分类器的构造,常见的方法有one-against-one和one-against-all两种。
一对多法(one-versus-rest,简称OVR SVMs)    训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。
一对一法(one-versus-one,简称OVO SVMs或者pairwise)      其做法是在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM。

6、SVM 核如何避免维度爆炸
遇到线性不可分的样例,此时,我们的常用做法是把样例特征映射到高维空间中,凡是遇到线性不可分的样例,一律映射到高维空间,那么这个维度大小是会高到可怕的
常用的核函数来代替自己构造核函数 :线性核函数、多项式核函数、高斯核函数、sigmoid核函数
价值在于它虽然也是将特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算。
7、感知机与线性SVM的区别
感知器是最简单的一种线性分类器,相当于一个阶跃函数 ,感知机是SVM的基础。优化函数就是所有误分类点的几何距离
SVM也是线性分类器,优化函数是参数的L2范数,也就是结构风险最小化的,可以通过核函数把低维不可分数据映射到高维,从而线性可分,所以SVM也有非线性分类器。
感知机与线性SVM的区别在于损失函数不同,后者的损失函数的目的都是增加对分类影响较大的数据点的权重,SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。

二分类问题中,感知机追求最大程度的正确划分,最小化错误,很容易造成过拟合,而svm在追求大致正确划分的时候最大化margin,一定程度上避免了过拟合

8、bagging 和boosting的方差和偏差比较

boosting迭代不断进行误差越来越小,bias降低,
bagging取样再取样在样本训练出的模型取平均,variance降低
其他不同点

训练集不同
bagging 随机选择,各轮测试集相互独立
boosting各轮训练集的选择与前面各轮的学习结果有关
权重不同
bagging各个预测函数没有权重
boosting有权重
预测函数
bagging各个预测函数并行生成
boosting各个预测函数顺序生成
稳定性
bagging比较稳定,总是可以改善学习系统性能
boosting有效时效果好,无效时使学习系统性能恶化

*************************************************************************深度学习

9、知道卷积神经网络嘛

CNN
卷积神经网络默认输入是图像,可以让我们把特定的性质编码入网络结构,使是我们的前馈函数更加有效率,并减少了大量参数。

CNN主要由以下五种结构组成:
(1)输入层。输入层是整个网络的输入,这可以是一维数据(如时间信号、传感器信号等),也可是***数据(如图片等)。CNN的输入层一般为一个三维矩阵,形式为[size1,size2,depth],三个参数分别代表输入数据的行、列、深度。可以通过reshape自定义数据的形式。
(2)卷积层。和FCNN中的全连接层不同,卷积层中每一个节点的输入只是上一层神经网络的一小块,这个小块的大小通常使用3*3、5*5(这个小块叫filter或者卷积核,所以这个过程也可以说是滤波过程),也可是其他大小。卷积层将每一小块进行深入分析得到抽象程度更高的特征,一般来说,通过卷积层处理的数据矩阵的depth会变大。小矩形代表一个过滤器,小矩形中黑色为输入,黄色为过滤器的权重。如果移动时(移动时可以选择步长,这儿为1)矩阵数据不够,可以边界上用0填充(zero-padding)。
上图第一个滤波器计算的简单示例:1*1+1*0+1*1+0*0+1*1+0*1+0*1+0*0+1*1=4
小结一下,卷积层的主要参数有:A.过滤器的长、宽,B.长、宽方向过滤器移动的步长,,C.填充方式
Ps:在CNN每一个卷积层中使用的过滤器参数都是一样的,这是CNN一个非常重要的性质,使得目标数据或者信号不受在矩阵中位置的影响。
(3)池化层。这一层可有可无,但一般有。池化层不会改变矩阵的深度,但会改变矩阵的大小,类似于将高分辨率图片变为低分辨率图片。池化***作减少最后全连接层的节点个数,达到减少整个网络复杂度的目的。
池化层的计算与卷积层类似,不同的是卷积层计算的是加权和,池化层一般采用最简单的最大值或者平均值,前者称为最大池化层,后者称为平均池化层,池化层的主要参数与卷积层类似。
(4)全连接层。卷积层与池化层可以看作是对输入数据自动特征提取的过程,但最终还是要用全连接层给出最后的结果。
(5)Softmax层。这一层主要用于分类问题,通过softmax层可以得到当前样例属于不同种类的概率分布。

ResNet

在一定深度下,深层网络的训练误差大于浅层网络的训练误差
随着网络的加深,出现了训练集准确率下降的现象,我们可以确定这不是由于Overfit过拟合造成的(过拟合的情况训练集应该准确率很高);所以针对这个问题提出了一种全新的网络,叫深度残差网络,它允许网络尽可能的加深,其中引入了全新的结构如图1;  其中ResNet提出了两种mapping:一种是identity mapping,另一种residual mapping,,所以最后的输出是 y=F(x)+xy=F(x)+x identity mapping顾名思义,就是指本身,也就是公式中的xx,而residual mapping指的是“差”,也就是y−xy−x,所以残差指的就是F(x)F(x)部分。 ResNet可以解决“随着网络加深,准确率不下降”的问题

************************************************************************编程语言,感觉那边用Python和C++
Python

10、深复制、浅复制

直接复制,传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变

copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变

深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

11、map()

映射,第一个参数是函数,第二个参数是可迭代序列,将序列的每个元素作为函数的参数,处理后的返回值作为新的元素组成一个可迭代元素


12、函数的形参 *arg  **karg

当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值


13、C++ 不会 题目是const的作用好像是


*********************************************************************学习能力
14、如何学习机器学习
统计学习方法(李航) 机器学习(周志华) 斯坦福大学视频(吴恩达)  模式识别与机器学习

#面经##算法工程师##秋招##地平线#
全部评论
楼主面到几面啊
1 回复
分享
发布于 2018-09-23 19:24
你好,请问下是根据简历上提到的知识点展开问的吗?
点赞 回复
分享
发布于 2018-09-22 10:58
阅文集团
校招火热招聘中
官网直投
这么牛逼啊地平线。。。
点赞 回复
分享
发布于 2018-09-22 12:11
我面提前批时候,看我是学数学的,呵呵,把数学分析多元回归微分方程全部走一遍
点赞 回复
分享
发布于 2018-09-22 14:21
我是面了个假的提前批吗,你居然问了这么多问题。。。。。
点赞 回复
分享
发布于 2018-09-22 15:02
第一年上午全是上课?你面的是南京地平线研究院吗?
点赞 回复
分享
发布于 2018-09-22 16:46
楼主这些问题全答上来了吗?
点赞 回复
分享
发布于 2018-09-23 11:20
其他岗位呢?地平线不是传说9107么
点赞 回复
分享
发布于 2018-09-24 13:11
第一年上午学习???那么牛逼的嘛?
点赞 回复
分享
发布于 2018-09-24 14:48
听了好想去啊……可是自己太菜……
点赞 回复
分享
发布于 2018-09-24 14:59

相关推荐

10 82 评论
分享
牛客网
牛客企业服务