Machine learning design解题思路

364 阅读4分钟

今天是个阳光明媚的日子,此刻我也不知道自己算不算在摸鱼,说我是在摸鱼吧,我又打算分享点儿干货,不是在摸鱼吧,我坐在工位上是在码字却没有在敲代码。

src=http___img3.doubanio.com_view_group_topic_l_public_p136923920.jpg&refer=http___img3.doubanio.jpg

其实我就是觉得今天,天气好,心情好所以我开始了自己的经验总结,也算是经验分享了(摸不摸鱼的不重要了),有关于 < Machine learning design > 的面试中的解题思路。

思路是结构化表达:

大家都是经历过应试化教育的,应该都知道试卷是按要点给分,如果没有一个表达逻辑,有时候不止是 manager 不知道你什么意思,可能自己都不知道要表达什么了。通过结构化的表达来让答案显得很有逻辑,结构化表达,针对一个问题,【一般讲三点答案,逻辑上依次有递进的关系,这样就会显得你逻辑清楚。超过三点,听的人容易lost,所以也没必要。】

  • 比如被问了一个design的问题,答案比较复杂,有很多部分。
回答的时候,第一句话先说,这个问题可以从2(数字)方面来考虑:用户和系统。

用户这方面有2(数字)个solution

系统这方面有3(数字)个solution

因为面试官不知道你想讲什么,在讲细节之前: 先把框架说出来,这样有助于面试官follow 你的逻辑,即使中间在细节上仔细询问你,他也知道你后面还有内容要讲,会配合让你讲完。

image.png

  • 还有一个比较常见的问题,多数的人不知道该如何阐述自己的项目经历(项目小,1分钟结束让对方觉得项目狠水,项目大说个10分钟,让对方觉得,你到底做了个什么项目?其次还会给对方留下一种,思维逻辑不清晰的印象。)
讲自己的项目:主题最好和这个组的方向相关、技术越新、越厉害、越好(后半句好像是废话哈哈哈哈)

适用于做过很多项目以及有很多项目选择的朋友。

  • 有些同学的项目可能是好几年前的工作和技术。怎么解决呢?

在简历的结尾,给一个rethink,讲两部分

第一:反思如果现在做同样的问题,哪些地方可以提高(显示你的见识提高了,不是反思你的缺点哈)千万不要到时候rethink一大堆缺点,到时候没过,说我骗你。

可以提高的地方我也给大家列了一下:

新技术,比如以前用 <logistic regression
现在可以用 deep earning/LSTM,data size scale up,
比如以前只有10k的data,
现在是100M,可以使用更复杂的模型,system,single pc -> distributed system/GPU,
training could be paralleled or in the cloud. 更advanced approach to collect labels
比如大公司都会有自己的crowd sourcing judgment platform]。

还可能会要求同学讲自己的经历,面试官根据你的经历来问问题。

在讲经历的时候,突出哪些关键字和技术?

一、和对方相关

二、新技术

三、显得你水平高的内容

当然一定要是你熟悉的,如果你被问到什么,答不上来,会特别减分。注意精通这个词不要随便用 讲到使用哪个model的时候,列举2-3个相关的model,答案的重点是讲一下各自的优缺点,以及当前问题的特质,基于这些比较,从而决定选哪一个。

image.png

主动推进谈话

比如讲完一段话或者回答了一个问题:主动询问:Does it make sense to you?

比如讲一个复杂的系统之前,先告知对方:I’m going to talk about a few components. If you feel interested in some particular ones, you can point out and we’ll discuss more over them.

有些问题问的非常模糊,可能是面试官故意的,也可能是面试官的表达能力差。

这种时候

通过rephrase问题 + make concrete example

来主动probe面试官,去除面试官自己的误差,clarify需求

能听出面试官的concern,不要等面试官停下来就接过话题

address面试官的concern。有的面试官在交谈中

不是每个问题都会explicitly的问,然后停下来,然后等你答。碰到面试官很不友善的时候

没法develop一个很好的答案,要坚持the principle of problem solving: Break down problem to solvable subtasks。

image.png

比如被问到这个问题 “你deliver了一个ML的产品/系统,用户使用以后,汇报系统的accuracy 远低于你自己test 的accuracy,哪些方面可能出问题了?要求不能看log。”

从problem solving的角度来看, 整个系统有两个element:你的ML系统,用户的applicat‍‍‌‌‌‌‍‌‍‌‌‌‍‍‌‌‍‍‍‍ion。每个element都可能出问题。那么把大问题break down成两个element自己的问题+element之间衔接的问题,就是一个很好的答案。

两个element自己的问题包括:

产品的问题,用户的application的问题(使用产品的domain和develop 产品的domain不一致, 使用方数据的distribution和training data不一致,etc)

用户的问题(没有按照设计的方式来使用系统,measure的方法不对,使用了和开发方不一样的metrics,etc)。

image.png