面经 | 机器学习算法岗(阿里-优酷 半年经验社招)

一面 

项目与自我介绍

哈希表的优缺点:

优点:

不论哈希表中数据有多少,增加,删除,改写数据的复杂度平均都是O(1),效率非常高,不仅速度快,编程实现也相对容易。

缺点:

它是基于数组的,数组创建后难于扩展,某些哈希表被基本填满时,性能下降得非常严重,所以程序员必须要清楚表中将要存储多少数据,或者准备好定期地把数据转移到更大的哈希表中,这是个费时的过程。

哈希表的原理:

通过把关键码值(Key value)映射到表中一个位置来访问记录,以加快查找的速度

·

L1、L2、dropout 之间有什么联系

都是为了防止过拟合,提高模型的泛化能力

但正则化并不改变问题的本质,L1、L2正则化是通过修改代价函数来实现的

而Dropout则是通过修改神经网络本身来实现的,它是在训练网络时用的一种技巧(trike)

· 

Dropout与集成思想

dropout本质上体现了集成学习思想。

在集成学习中,我们采用了一些"较弱"的分类器,分别训练它们。由于每个分类器都经过单独训练,因此它学会了数据的不同"方面",并且它们的错误也不同。将它们组合起来有助于产生更强的分类器,不容易过度拟合。

一种集成算法是装袋(bagging),其中每个成员用输入数据的不同子集训练,因此仅学习了整个输入特征空间的子集。

dropout,可以看作是装袋的极端版本。在小批量的每个训练步骤中,dropout程序创建不同的网络(通过随机移除一些单元),其像往常一样使用反向传播进行训练。从概念上讲,整个过程类似于使用许多不同网络(每个步骤一个)的集合,每个网络用单个样本训练(即极端装袋)。

在测试时,使用整个网络(所有单位)但按比例缩小。在数学上,这近似于整体平均。

显然这是一种非常好应用于深度学习的集成思想。

 

LR 逻辑回归能不能加dropout

当然不能


深度学习能不能用L1 L2

可以,L2还是用得比L1多,因为一般的深度学习模型不太关注稀疏性。

· 


二面 

项目工作经验与自我介绍

深度学习模型压缩算法与优化加速

轻量网络设计

模型裁剪

模型蒸馏

矩阵分解

量化与低精度运算

计算图优化

卷积算法优化

硬件加速

解释性语言怎么做到交互式编程

解释型语言:

是在运行的时候将程序翻译成机器语言。不需要在运行前编译,在运行程序的时候才翻译,专门的解释器负责在每个语句执行的时候解释程序代码。这样解释型语言每执行一次就要翻译一次,效率比较低。

· 

交互式编程:

直接输入脚本语句,回车就执行了,结果立即显示出来,而不用经过复杂的保存和编译阶段。这对于简单的尝试性的操作是很方便的,比如测试一个函数的用法。因为输入语句之后,就可以立即得到结果,你就知道问题出在哪里,立即就可以修正。

期望风险、经验风险的区别:

经验风险是局部的,基于训练集所有样本点损失函数最小化的;

期望风险是全局的,是基于所有样本点的损失函数最小化的。

经验风险函数是现实的,可求的;

期望风险函数是理想化的,不可求的。

期望风险、经验风险和结构风险是什么:

经验风险是对训练集中的所有样本点损失函数的平均最小化。经验风险越小说明模型f(X)对训练集的拟合程度越好;

期望风险是因为未知的样本数据(<X,Y>)的数量是不容易确定的,没有办法用所有样本损失函数的平均值的最小化这个方法,所以使用期望风险来衡量这个模型对所有的样本(包含未知的样本和已知的训练样本)预测能力。

只考虑经验风险的话,会出现过拟合的现象,过拟合的极端情况便是模型f(x)对训练集中所有的样本点都有最好的预测能力,但是对于非训练集中的样本数据,模型的预测能力非常不好。怎么办呢?这个时候就引出了结构风险

·

结构风险是对经验风险和期望风险的折中。在经验风险函数后面加一个正则化项(惩罚项)便是结构风险了。

三面 

项目与自我介绍

梯度下降过程中如果不按正确的方向进行怎么办?

编译原理学过没

分布式了解吗

编程题1:浮点数开根号

二分法(通过缩小根值范围的方法来逼近结果)

牛顿法,级数逼近

编程题2:浮点数的N次方

快速幂,查表


编程题3:01矩阵求所有的联通域

解法:BFS/ DFS + 标记是否检测过

加速法:分布式算法:划分为4块,从四个角分别计算,最后Merge

概率法

编程4:方阵的N次方

快速幂,特征值/矩阵快速幂

· 

 


#社招##面经##阿里巴巴##机器学习#
全部评论
为什么没人回复
1 回复 分享
发布于 2022-03-04 12:04

相关推荐

点赞 评论 收藏
分享
5 44 评论
分享
牛客网
牛客企业服务