机器学习系统设计 ML系统 设计面试的剖析

作者 : IT 大叔 本文共3894个字,预计阅读时间需要10分钟 发布时间: 2020-10-5

随着越来越多的行业采用ML系统,机器学习系统设计面试变得越来越普遍。虽然ML采访在某些方面与通用系统设计采访相似,但它们的差异足以使最老练的开发人员感到失望。最常见的问题是被大多数ML解决方案的大规模应用所卡住或吓倒。

今天,我们将通过分解它们的独特性,准备工作以及解决任何ML问题应使用的5个步骤,为您下一次ML系统设计面试做准备。

今天我们将介绍:

  • ML与通用系统设计访谈
  • 如何准备ML系统设计面试
  • 解决任何机器学习系统设计问题的5个步骤

ML与通用系统设计访谈

机器学习系统设计面试的一般设置类似于通用SDI。对于这两种情况,您都将被安排面试官45至60分钟的时间,并被要求考虑计划的各个组成部分。

机器学习访谈通常更侧重于宏观层面(如体系结构,推荐系统和扩展),而避免了就可用性和可靠性等主题进行更深入的设计讨论。很少会要求您在组件中定义特定的编码结构。

对于机器学习SDI,您将需要解释程序如何获取数据并实现可伸缩性。在通用设计访谈中,受访者可以评论说他们可以使某个组件具有可伸缩性,而无需说明如何做到这一点。在ML访谈中,系统将询问您一些高层问题,说明如何设置系统的每个组件(数据收集,ML算法,信号)以处理繁重的工作量并快速适应。

如何准备ML系统设计面试

ML系统设计面试将测试您对两件事的了解:

  1. 您对大型ML系统背后的设置和设计选择的了解。
  2. 应用ML概念时具有清晰的表达能力。

让我们看一下准备知识和表达的三种方法。

了解常见的ML面试问题

准备这些问题的最好方法是自己练习ML SDI问题。在现代ML SDI中,仅会询问几种类型的ML面试问题。

最常见的是:

  • “创建一个Twitter风格的社交媒体供稿,以向用户显示相关帖子。”
  • “建立一个推荐系统来推荐产品/服务。”
  • “设计一个Google风格的搜索引擎,为用户量身定制结果。”
  • “建立一个向用户展示个性化广告的广告系统。”
  • “设计ML系统可以识别社交网络中的不良行为者。”

在目标工作的描述中搜索要使用的特定系统的提及,并为面试研究类似的系统。对于没有明确倾向于任何问题类型的工作,请关注“媒体源”和“推荐”系统,因为这是两个最常被问到的问题。

在线搜索针对每种类型问题的ML解决方案论文,以了解专家如何解决它们。然后,自己完成每个解决方案的模拟架构。建议手动执行此操作,因为大多数ML采访都只会使用白板。这些知识将为您节省宝贵的时间来讨论更多的中间ML主题,例如算法选择或可伸缩性。

专注于每个机器学习解决方案的4个部分

每个ML解决方案都有四个主要部分:

  • ML算法
  • 训练数据
  • 信号(有时称为功能)
  • 验证和指标

在审查ML问题时,请确保您直接讲话以解决所有这些部分。

对于算法,您将选择哪种算法,为什么选择?深度学习,线性回归,随机森林?每种算法的优缺点是什么?

对于数据,您将在哪里获得测试数据?您将从哪些数据点中提取数据?您将处理几个数据点?

对于信号,您的程序使用什么度量标准来确定相关数据?您会发信号要关注数据的某一方面还是将其从多个方面进行综合?确定数据相关性需要多长时间?

对于指标,您将跟踪哪些指标以获取成功和学习计划?您将如何衡量系统的成功?您将如何验证您的假设?答案来自于了解哪些指标和目标最适合ML模型学习以及在线实验如何工作。

练习大声解释

许多受访者会研究概念和算法,但没有练习采访的口语部分。要通过面试,您必须清楚,简洁地表达您对ML的知识。

在整个过程中练习大声地解释系统的体系结构。叙述您所做的任何决定,并简要解释您做出该选择的原因。这是显示面试官一个很好的机会,如何你认为,不只是什么你知道。

一旦您善于解释解决方案,请尝试在我们的5个步骤涵盖的期限内解释它!

另外,练习常见问题的答案。面试官将要求您澄清程序中的任何决策点或不确定性。确保您可以证明在过程中的任何时候所做的设计选择都是合理的。

一些常见的探查问题是:

  • “该程序将如何大规模执行?”
  • “您将如何获取训练数据?”
  • “您将采取什么措施来降低延迟?”

解决任何机器学习系统设计问题的5个步骤

ML SDI面试通常会有45或60分钟的严格时间限制。面试官将在面试开始时使用5分钟进行介绍,并在结束时使用5分钟进行汇报。通常,您需要在35至50分钟内覆盖ML程序的所有关键领域。相反,有些访问者可能希望大部分时间专注于深入研究主题或组件,例如训练数据或算法优化。无论哪种情况,您都将在截止时间之前停靠任何未提及的ML组件。

因为ML采访是自由形式的,所以许多受访者在没有完成其计划的情况下就超过了时间限制。重要的是要有一个结构化的计划,以计划如何起草系统以确保您按计划进行。

接下来,我们将研究如何分配时间解决ML问题。为了帮助理解该过程,我们还将在45分钟的采访中通过示例提要类型的问题演示每个步骤。

我们的问题是:“创建内容供稿以向用户显示个性化帖子。”

如果增加每个步骤的时间,则可以将这些步骤调整为60分钟的采访时间。重要的是您在每个步骤中花费的面试百分比。

步骤1:弄清要求(5分钟)

在最初的5分钟内,我们将与面试官一起阐明我们的系统目标和要求。这些面试问题刻意含糊,使您直接询问所需的信息。您提出的问题将有助于指导设计并确定系统的最终目标。

一些常见的澄清问题是:

  • “我们希望该程序可以处理多少个用户?”
  • “我们目前正在跟踪哪些指标?”
  • “我们想用这个系统实现什么?我们要优化什么?”
  • “我们期望什么类型的输入?”

不要害怕问问题!面试官在那里为您提供所需的信息。最好多问而不是少问。实际上,如果您不询问有关需求的问题,您将看起来毫无准备。

提要示例

如果要澄清供稿问题,我们会问:

  • “这将是哪种饲料?纯文字?文字和图像?”
  • “我们期望有多少用户?每天每条发多少条帖子?”
  • “我们的系统针对什么指标进行了优化?我们要增加每个职位的参与度还是增加职位数量?”
  • “我们有目标延迟吗?”
  • “我们的系统将多快应用新的学习?”

第2步:高级设计(5分钟)

在接下来的5分钟内,创建一个高级设计,处理从输入到使用的数据。直观地绘制图表并连接所有交互的组件。面试官在构建时会询问一些探索性问题,因此请注意那些表明您缺少组件的问题。

记住要保持抽象:确定多少层,数据如何进入系统,如何分析数据,以及如何确定相关数据?确保明确提及您为可伸缩性或响应时间所做的任何选择。

提要示例 我们可能会说我们的培训数据来自我们当前的社交媒体平台。每当创建新帖子时,根据创建者的位置,创建者过去的帖子的受欢迎程度以及跟随该创建者的帐户,新的实时数据将进入系统。我们将使用这些指标来确定帖子与用户的相关性。相关性将在启动应用程序时确定。我们的目标是增加每个职位的参与度。

步骤3:深入资料(10分钟)

在接下来的10分钟内,深入研究数据。确保同时涵盖训练数据和实时数据。考虑一下在整个过程中数据将如何转换。

ML面试官正在寻找了解数据采样重要性的候选人。您将需要澄清从何处获得训练数据,当前系统中将使用的数据点以及要开始跟踪的数据。这不同于普通的SDI,后者的受访者仅考虑数据进入程序流程发生的情况。

有关训练数据,请考虑:

  • “我将从什么来源获得训练数据?”
  • “我将如何确保它没有偏见?

对于实时数据,请考虑:

  • “我将在数据中使用什么信号?”
  • “为什么这个信号有意义?”
  • “在任何情况下,该信号都不能反映我想要的结果吗?”
  • “我的算法反应如何?变化会在10分钟或10小时之内发生吗?”
  • “我的程序一次可以处理多少数据?输入更多信息,效果会变差吗?”

提要示例

我们希望每个用户关注300个帐户,每个帐户平均每天发布3条帖子。我们将分三层进行数据评估,以在系统评估1000个帖子时保持较低的延迟。第一层根据后受欢迎程度快速削减了大部分职位。

第二层使用位置数据根据位置来剪切过帐,这是我们第二快的层。第三层将是最长的,并且将使用关注者和关注者之间的交叉参与数据来剪切帖子。

步骤4:机器学习演算法(10分钟)

在接下来的10分钟内,将您选择的机器学习算法分解给面试官。每种算法处理某些任务的方式都不同,面试官会希望您了解不同算法的优缺点。如果您使用多种算法来处理比例,请提及它们的结果如何一起考虑以及您选择多种算法的原因。

请务必提及每种算法如何利用您的信号来创建内聚解决方案。同一信号在一种算法中可能不如在另一种算法中有效。

提要示例

我们将使用前馈神经网络算法来预测相关性。该算法与我们的创建者/用户互动信号配合得很好,因为它形成了非圆形连接网的预测。

第5步:实验(5分钟)

在最后5分钟内,提出关于系统将要完成假设。本节是您的程序的一种总结,您可以在其中总结组件如何共同实现特定目标。您的假设可能很广泛,例如“按相关性排序的帖子比按时间顺序排列的参与度更高”,也可能很具体,例如“添加位置信号将使参与度提高0.5%”。

在这里,说明您如何检验该假设。确保涵盖最初的离线评估以及如何在线评估。

  • 您将使用哪些离线评估?
  • 您需要多少离线数据集?
  • 在线时,如果存在错误,您将怎么办?
  • 您将如何跟踪用户对变更的满意度?
  • 您是否通过评论或与帖子的任何形式的互动来计算参与度?

ML工程师每天都会不断地检验假设。专注于实验将使您与其他申请者区分开,因为它表明您可以综合程序的功能并拥有正确的工作思路。

提要示例

我们基于相关性的供稿将使用户参与度提高0.5%。我们将首先使用编程为模拟用户的离线模型,并查看将哪些类型的帖子发送到供稿。在线上移动之后,我们将使用关键字“更新”和“相关性”来跟踪帖子以确定效果。

五步总结:

  • 步骤1:弄清要求(5分钟)
  • 第2步:高级设计(5分钟)
  • 步骤3:深入资料(10分钟)
  • 步骤4:机器学习演算法(10分钟)
  • 第5步:实验(5分钟)
免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 机器学习系统设计 ML系统 设计面试的剖析

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论