前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >掌握这些问题,成为 Facebook 机器学习工程师

掌握这些问题,成为 Facebook 机器学习工程师

作者头像
新智元
发布2018-03-23 18:13:51
7050
发布2018-03-23 18:13:51
举报
文章被收录于专栏:新智元
【新智元导读】彭博社最近推出了一些列大公司面试指南,其中包括Facebook、Uber和高盛等大公司。那么,如果想进入Facebook做一名机器学习工程师,需要具备哪些素质?要多牛才能与Yann LeCun做同事呢?

职位:软件工程师,机器学习

招聘负责人:James Everingham,Instagram工程主管

薪资:$130,000-$145,000

职位描述:

构建更智能的系统;检测数据,增强用户体验,编写和实现代码,评估结果。该职位不仅是写代码,而且要做研究。例如,尝试提供更好的个性化搜索结果。

资历要求:

最好有博士学位。硕士或学士学位但有相应的经验亦可。

面试过程

第一轮:

15至30分钟面谈,通常由招聘专员通过电话面试。

第二轮:

45分钟技术评估,可以现场或远程进行。考查内容包括系统、算法和数据结构、写代码的逻辑、清洁度和速度,以及与技术面试官的互动。面试官的话:“这也是为了面试者的成功,因为这样能让我们了解他们的水平,引导他们进入状态,并给他们公平的面试机会。”

第三轮:

通常是针对面试者背景和兴趣的五个左右的提问。面试官主要是工程师,也会有一些技术经理或领导。问题包括编码、设计、团队合作等。面试官的话:“我喜欢问面试者他最棒的一天是哪天,那天具体发生了什么。因为他们已经在技术考查中胜出了,或者他们已经做出一些成就让我们很想录取他了。…这能让我们了解他们的激情是什么,让我们提供能够再次唤起他们的激情的工作类型。我喜欢提的另一个问题是,他们进入这个领域的理由是什么。”在这一轮中,面试者也能对公司有更多的了解。

评分方式:

面试官会提交反馈,然后进行小组讨论。被录取者需要参加Facebook的新人训练营,并可以选择他们想进入的团队。面试者也可以在招聘过程中表达对某个团队或产品的兴趣。面试官的话:“我们的招聘过程实际上提供了不只一个职位。面试是为了发现他们是否适合,我们的价值观是否一致,以及他们是否通过技术考核。因为我们有许多开放的职位,面试也是为了找出他们最适合的角色。”

建议:

与面试官互动。面试官的话:“我们非常注重团队合作。 所以,那些面试表现很好的人会有这样的态度,不是认为我们在测试他们,而是他们是团队的一分子,就像他们已经得到了工作一样与我们进行互动。”

了解产品。面试官的话:“面试者对我们的产品有了解,能提出如何改善产品的想法——这很好。”

确保简历是最新的。面试官的话:“我们不会只浏览一下简历就得出‘噢,就这个人了’。我们会仔细阅读简历,研究它,如果你适合,我们会想为你定制一个职位。因此,简历重要的是要保持最新,要简洁,信息准确,将重点放在你的强项上。很多人喜欢把他们做过的所有事情都放到简历上,以彰显他们做了很多事。但是,更好的方法是专注于你的优势,好的简历专注于深度而不是广度。”

了解Facebook的使命。面试官的话:“我们公司是使命驱动型的,我们寻找的是想为公司贡献的人。”

多做练习。面试官的话:“有时人们在白板上写代码会有些紧张,尤其当他们面对的是不认识的人时…练习将思考和说话连接起来,写代码的同时解释你在做什么,为什么那样写。你可以讲错,然后认识到自己的错误并改正。我们宁愿看到你讲错了,而不愿看到你沉默不语。”

承认自己的弱点。面试官的话:“承认你有不懂的东西。这是加分项。同时也要了解自己的优势。”

不要让自己陷入困境。面试官的话:“向面试官提问以寻求提示是OK的,要让对话进行下去。”

附:机器学习面试常见十问

Q:朴素贝叶斯(naive Bayes)为何如此“naive”?

A:朴素贝叶斯如此“naive”,是因为它假设一个数据集中的所有特征具有同等的重要性和独立性。在现实世界中这种假设很少成真。

Q:假设你正在处理一个时间序列数据集,你的上司要求你建一个高精度模型。你先是用了决策树算法,因为你知道它在各种数据类型上都运行得相当好。后来,你尝试了一个时间序列回归模型,并获得比决策树模型更高的准确度。这种情况可能发生吗?为什么?

A:时间序列数据是线性的,而我们知道决策树算法在检测非线性交互上效果最好。决策树模型未能提供鲁棒预测是因为它在映射线性关系上不像回归模型那样好。因此,这是可能的,由于数据集满足其线性假设,线性回归模型能够提供鲁棒预测。

Q:你发现你的模型偏置低、方差高,应该使用那些算法来解决?为什么?

A:当模型的预测值接近实际值时,会出现低偏置。换句话说,低偏置模型足够灵活,能模仿训练数据的分布。但灵活的模型缺乏泛化能力。这意味着,当用未知数据测试这个模型时,得出的结果会不如人意。在这种情况下,我们可以使用bagging算法(如随机森林)来降低方差。bagging算法能将数据集切分为用重复随机抽样的子数据集。然后,使用单个学习算法和这些子数据集生成一组新的模型,使用投票(分类)或平均(回归)来组合模型预测。

Q:KNN和kmeans聚类有什么区别?

A:不要被它们名字中的“k”误导。这两种算法间的根本区别是,kmeans本质上是无监督的,而KNN本质上是有监督的。Kmeans是一种聚类算法,而KNN是分类(或回归)算法。

Q:在处理数据集时,如何选择重要变量?

A:以下是可选择的方法:

  1. 在选择重要变量前删除相关变量
  2. 使用线性回归并根据p值选择变量
  3. 使用前向选择、后向选择、逐步筛选
  4. 使用随机森林、Xgboost并绘制变量重要性图
  5. 使用套索回归
  6. 测量可得的一组特征的信息增益,并选择n值高的特征。

Q:都是基于树的算法,随机森林和梯度boosting算法(GBM)有什么区别?

A:根本的区别是,随机森林使用bagging技术做预测,GBM使用boosting技术进行预测。Bagging技术中,使用随机抽样将数据集分成n个样本,然后使用单个学习算法对所有样本建模,最后使用投票或回归来对得到的预测结果进行组合。Bagging是平行进行的。

Boosting(提升)则是在第一轮预测后,算法将错误分类的预测权重提高,使它们在下一轮预测中得到校正。这个过程会重复进行,知道达到标准精度才停止。

随机森林主要通过降低方差来提高模型精度,随机森林的树相互间没有相关性,能尽可能的降低方差。另一方面,GBM提高精度的同时可能同时降低模型的偏置和方差。

Q:假设你在处理分类问题,为了验证,你从训练数据集中随机抽样出子集用于训练和验证。因为验证得到的准确度很高,你确信你的模型在未见数据中也能运作得很好。但是,模型的测试精度非常低。是什么地方出了错?

A:在分类问题中,应该使用分层抽样而不是随机抽样。随机抽样没有考虑目标类别的比例。而且,分层抽样也有助于保持目标变量在样本中的分布和数据集中的分布一致。

Q:假设我是个5岁小孩,请向我解释机器学习。

A:机器学习就像婴儿学走路。当他们跌倒时,他们会(无意识地)认识到,他们的腿应该直着,而不是弯曲着。下一次他们再跌倒,会感到痛苦,会哭,但这次他们又学会了“不要再像这样子站”。为了成功学会走路,他们甚至扶着门或墙壁或其它东西,以帮助他们不跌倒。这就是机器如何从环境中发展出直觉的工作原理。

Q:机器学习算法有那么多,给定一个数据集,你怎样决定使用哪个算法?

A:选择哪个算法完全取决于数据的类型。如果给定的是一个线性数据集,那么线性回归是最好的算法;如果数据集是图像或音频,那么就选择神经网络;如果数据集包括非线性相互作用,则应该选择boosting或bagging算法;如果任务需求是建一个可以部署的模型,那么应该使用回归或决策树模型(易于解释),而不是像SVM、GBM这些黑盒算法。总之,没有一个主算法能适用所有情况。

Q:机器学习中什么时候需要正则化?

A:当模型显示出过拟合/欠拟合时,就需要正则化。正则化引入了成本项,用于为目标函数带来更多特征。正则化试图将许多变量的系数变为零,从而减少成本项。这有助于降低模型复杂度,使模型的泛化能力更好。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档