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

一面 

项目与自我介绍

哈希表的优缺点:

优点:

不论哈希表中数据有多少,增加,删除,改写数据的复杂度平均都是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

相关推荐

06-05 20:07
已编辑
上海大学 Java
当时还比较稚嫩,而且本身专业是后端开发,但是去面数分。岗位描述要求懂pytest、requests用来爬取竞争对手官网数据,存入已有数仓。还要会简单的前后端全栈开发,支持公司内部b端数据应用。最后就是要熟悉Power&nbsp;BI搭建可视化看板,熟悉Excel,并参与公司内部数字化工具的后期维护。一面是主管和组长一起上,给我按在地上鞭尸。1.&nbsp;自我介绍,第一段实习在法国灯泡公司做质量管理,那具体负责了哪些?跟客户交流遇到什么问题2.&nbsp;提到有想过开发一个Spring&nbsp;Boot项目,达到验货报告中的相关数据能够及时传输给进出口部门,优化链路。但是当时时间太紧,只是个设想。主管反问,为什么下班时间不去做呢?很多事情空想没用。3.&nbsp;用Python的sys库完成了一些简单的功能,如邮件自动发送,文件批量复制。然后被嘲讽一年级小孩都能做。4.&nbsp;介绍第一个玩具项目,Java控制台小游戏,对战流程,架构思路。UML图是自己画的吗,编码过程中是否有过调整?遇到分歧与无法实现的功能,如何与组员交流?5.&nbsp;这个游戏有联网吗?能不能远程交互?不能的话,有没有想过做成在线小游戏,比如说用C++或Golang写游戏服务器,然后可在浏览器中打开,开始游戏。没有的话,当时为什么不去做?了解过Unity吗?6.&nbsp;明明是做Java后端,连个Spring&nbsp;Boot都不知道,还搞个控制台课设作业和swing这种清朝编程,有个屁用。7.&nbsp;然后介绍第二个R语言课设项目,两个CBD的数据分析,预测未来商业趋势。被喷,没必要介绍了,完全没有任何意义。完全是为了做而做,体现不出任何商业思维。8.&nbsp;明明是软件和前后端的那套技术栈,为什么来数分?完全不对口,来了以后,认为最大的挑战是什么?9.&nbsp;主管问题:为什么选择我们公司?出于什么动机?组里哪一点吸引了你?是否想创新,实现个人理想。还是仅仅做个实习,应付学校学分要求?10.&nbsp;介绍第三个机器学习课设项目。关于numpy和pandas,认为用得太简单了,只不过是读一下数据,然后传给python那几个臭名昭著的机器学习库,如skLearn。随便设几个参数,本地玩一玩,然后传到云计算平台上去xjb跑,跑出来也是一坨。最后喷,就是玩具项目,demo,下去吧你。11.&nbsp;说一下课上做的灰度图像压缩,然后具体介绍对应的细节。12.&nbsp;监督与非监督学习的区别?聚类和分类的区别。常用算法,各有什么优劣?13.&nbsp;有了解过自动化测试和爬虫吗?具体用什么库,有没有比selenium更好的办法?14.&nbsp;pandas和numpy常用方法,基本数据类型。怎么做数据清洗?比如说空值和极值。了解过mongoDB吗?15.&nbsp;用PCA进行降维,分析出了主成分,但是损失了什么?skLearn可以直接跑,不用降维。降维除了方便画图,还有什么其他好处?16.&nbsp;推荐我课设作业使用逻辑回归和线性回归,画个阈值,不要先用k均值聚类再硬凑两类,最后svm瞎搞。17.&nbsp;有考虑过模型评估吗?有哪些公式和指标?训练集验证集测试集。这个比例如何确定?17.&nbsp;有了解过数据开发吗?比如静态数仓,实时数据流。Hadoop、Hive、Spark、Flink听过吗?和数分和后端的联系。提出大数据需要经验,相比数分来说更偏技术,编码。属于后端开发的延申。最后提出互联网中大厂比较多,传统企业少。18.&nbsp;Excel和Power&nbsp;BI掌握情况,不是简单在Excel里面拖拖玩玩,要求会宏编程,Python操作,还有Power&nbsp;BI搭建demo级数据看板的经验。19.&nbsp;介绍公司业务,是拿业务产生的数据去做一些分析。做一个数据报表,搭建数据看板。更看重商业思维和数学能力,相对来说不怎么要求编程能力。所以更像mkt职位,不是程序员。20.&nbsp;主管:职业规划。到底想做后端开发还是数据分析?21.&nbsp;反问:竞品部门,那相关业务基于什么分析?总结,当时我还没背Java相关八股,也没有小厂实习经验,同时也没在自己电脑上跑过几个烂大街项目。而且去面数分,确实有点跨行了。整体来说印象挺深,也是一段难忘的经历。总的来说,不能用Java的技术栈去面,但当时没办法了,找不到实习就会肄业,所以只能硬上。最后结果也同样惨淡,但是也锻炼了我的心理素质。
查看21道真题和解析
点赞 评论 收藏
分享
评论
5
45
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务