查看: 10492|回复: 50
收起左侧

[职场感言] 【长文】亚麻8年经验分享:怎样做好ML scientist

    |只看干货
bpnetz | 显示全部楼层 |阅读模式
本楼: 👍   100% (107)
 
 
0% (0)   👎
全局: 👍   100% (133)
 
 
0% (0)    👎

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 bpnetz 于 2021-12-1 00:06 编辑
. From 1point 3acres bbs
第一次在一亩三分地发文,请大家轻拍。 . From 1point 3acres bbs

本文的写作目的是总结自己八年来在亚马逊工作中的一些经验教训,也希望能对AI领域的职场新人有所帮助。这里面更多讨论的是如何做事,没有过多优化升职。但是大部分情况,职称和能力是相符合的。当然这里面仅仅是个人所见,难免有局限,欢迎交流和批判指正。

因为个人经验的局限,这里的机器学习ML科学家主要指为了解决一个实际的商业问题(比如检测信用卡欺诈、个性化推荐商品、语言情感分析等),负责ML模型设计-训练-评价,与工程师合作完成模型部署上线的技术人员。很多公司也称为applied scientist, machine learning engineer, data scientist等。这里并不讨论偏重于研究通用方法(如Transformer)或者通用平台(如PyTorch)的AI研究工程人员。

第一,要勤快。这一条是从林彪的《怎样当好一名师长》的文章里面借过来的,但却不是套话,各行各业都是相通的。很多人满足于拿来别人准备好的数据,训练一个复杂的(深度学习)模型,看看表现(performance)数据还好,就让工程师去部署上线,然后到处做演讲写文章。这样的系统实际上线效果一般不会很好,我们看到的很多垃圾推荐信息、无关广告、AI系统各种犯傻很多就是源于这样的模型。

真正要做好AI模型和系统是需要做大量的工作,而且很多工作都是繁琐、琐碎和千头万绪的,既无法写在文章里发表,也无法给领导汇报,甚至做完后都会忘记的那种,所以你去读他人的书、文章,甚至当面请教他人,都不一定能知道。但是,如果不勤快地把这些事情做到位,最后的结果就是会不好。比如,模型是否优化到位?有没有根本性错误?能不能简化?各种依赖dependency是否厘清?上下游进度是否可控?某年,我上线一个模型之前,重复做了大量数据验证的工作,仅仅是为了保证模型在线上系统的输出和训练数据上的输出一致。我反复测试,后来模型上线成功了;而另一个组做的类似模型,在上线后预测广告点击率在某些情况下会出现负值,造成服务器异常,不得不下线重来。当然我也有反面的教训,对于一个模块的工作没有及时跟进检查,造成进度延误,要花大量精力去弥补。所以,我认为很多时候用人要看重其做事的态度和方法,是认真严谨还是马虎大意,是诸多求证还是武断鲁莽,这就是公司招人强调的leadership吧。

第二,要熟悉数据。做为数据科学家,数据不会自己来找你。从刚入职,就要尽量多的了解数据的种类、如何获取、如何分析,最好都在文档上写下来(很多公司都有wiki文档系统)。平时打基础或者使用前,要多探索数据(exploratory data analysis)的各种分布特点,比如销售数据在各国、各商店、各种人群的数值都要了解,设置可以提前写些分析文档。这个数据基础对于理解真实问题、寻找改进机会、建立合适的模型都会有帮助。很多人错误地认为,现在深度学习的建模使人们不再需要了解数据的特点,简单的把所有数据fit进模型就行了。我们的分析表明,garbage-in garbage-out的原理还是适用的。我曾经见过一个简单的数据操作,比如把同一个样本上互相矛盾的label去掉,就提高了深度学习模型的表现。也见过数据标定过程混乱造成模型混乱的情况,很多人认为数据标定数据清洗是脏活累活,干的都是和“民工”打交道的工作,远不如训练fancy的模型听上去高大上。可事实就是万丈高楼平地起,沙滩上盖不起高台,一定要重视标定数据的质量。

做了tech lead或者经理之后也要重视过手第一手数据。如果不过手原始数据,只看报告或者听汇报,逐渐就会失去对实际情况的掌握,造成决策失误,因为数据处理过程中就会有选择、粉饰和失真的情况。我就曾经有因为对一手数据失去感觉,武断设定了一个无法完成的目标,最后坑了组员的惨痛教训。然后很多时候,定发展方向、想idea也是在操作实际数据的过程中产生的。

第三,要做end-to-end的项目,得到全方位锻炼。东做一个任务,西做一个任务是无法系统地提高一个人的水平的。我发现对自己成长帮助最大的经历就是把几个实际项目从头到尾完整执行,从构想、分析、建模、优化、工程实现、实验设计到上线、维护。只有经历了几次完整的过程,才能掌握一整套工具和技能,才能知道什么重要什么不重要,才能知道哪里会有陷阱和风险,才会制定合理的计划(对自己或者对团队)。我到现在还记得第一次从一个想法,鏖战许多日夜,历经千辛万苦,最后打开A/B实验,然后看到系统指标提高的感觉,和航天人发射火箭差不多。当然,曾经有的项目失败的教训也刻骨铭心,拥有“踩地雷”的经验也很重要。怎么正确的失败?最好是fail fast,一个想法不对,能够迅速用数据验证“此路不通”是最好的。当然万一论证不周,已经投入很多,最后失败了,也不能“逃跑主义”,能在逆境中行动也是一种重要能力。我认为,打过败仗但没倒下,还能总结经验教训的干部最宝贵。后来在自己带新人的时候,也会有意识给他们创造能完整执行项目的机会,但是自己同时也不能失去了对细节的把握。

第四,要重视“战前侦查”(项目前期调研)。很多人拿到一个任务或者项目就开始埋头干活,这是不对的。我们一定要从大的方向想一想这个任务有没有道理,这样做有没有成功的可能。如果想想觉得这个任务没有必要,或者这样做不可能成功(通过估算最大机会),就要大胆否定。大到一个项目,在上马之前一定要尽可能多的科学论证,不仅要看到机会有多大,也要看到隐藏的风险,比如合作的组不靠谱、对外依赖太多、人手不够或者不稳定、客户需求来源不稳定等等。绝不打无把握的仗。之前说的武断设了一个目标,原因就是前期论证不充分。有时候因为事情太多赶进度,忽略了论证,最后发现都做了无用功。

第五,要迭代,先实现再优化,还要快。很多人拿到项目,就会花很多时间研究最优的方法,反而忽视了很多更关键的问题。比如,你可能在方法上有了很大的创新(比如最新的深度模型),但是没有办法得到高质量的数据,或者工程成本过高导致上线推迟。我建议第一个版本用rule-based模型或者heuristics算法先实现一个可用版本,把各环节都走通。在第一版上线的时候马上组织一手数据采集、数据标定、模型升级等工作。因为商场如战场,公司内部外部环境也是变化很快,为了避免“做着做着项目没有了”的窘境,我们需要做得快,还要留下后续优化提高的空间。我个人观察,很多学术界的大教授到公司挂个虚衔还好,若是真的做产品,很多也不能成功,原因可能在于做事学院风太重,不能适应商业环境。

第六,要简化。随着深度学习的飞速发展,AI模型也越来越复杂。很多情况下,大的深度学习模型确实能学出很多隐含的关系,系统表现更好。但是很多人仅仅是喜欢追求fancy的方法,或者复杂的模型,或者为好发文章,削足适履地去套在问题上面,反倒效果不好。比如,如果数据量很小,或者问题本身并不复杂,能用简单模型解决的问题就不必用复杂模型。甚至有时候为了顾及工程难度或者成本,需要牺牲一些性能达到系统的简化。所以,在有条件的情况下,我们要尽量考虑系统的简化,简单的系统更容易调试和维护。

第七,要提高理论修养。好的ML科学家需要了解模型的实现机理(比如Transformer里的注意力机制),不要简单的当调包侠、调参侠。AI的发展肯定是越来越易用,一定会普及化。这个和电力的发展一样,从工程师的玩意到进入千家万户。但是我们现在有“电工”和“电气工程师”的区别:电工只管按照操作规程,布线安装;而电气工程师则需要设计、制造各种电气设备,编写操作规程和使用说明。所以,ML科学家也需要把各种模型的盖子打开,学习它的理论和代码。我在面试的时候,一般会通过问一些细节的问题,来判断面试者是只知道buzz word(名词),还是实际使用过(调包),还是更牛的了解内部实现的细节。很多时候,会修车的人开车也能更好。

第八,要关注最新发展。AI领域发展非常快,很多新技术出来后直接颠覆了老的技术,使很多人积累了多年的经验效果大打折扣。比如自然语言处理NLP领域在深度学习应用之前(2013年前)和之后完全是两个时代,之前是冷兵器时代,需要手动制造各种feature,之后是热兵器时代,可以让模型自动学习feature。等到2018年左右,Transformer模型推出之后,也颠覆了很多之前基于RNN的方法。后来更是出现了各种基于大数据预训练pre-train的Transformer模型(如BERT),使用者只需要使用少量数据微调后就能使用,和前面相比,是不是相当于坦克加入了实战。如果我们不与时俱进地提高理论修养,做起事来不就相当于拿冷兵器打热兵器,拿步枪对阵坦克了。但也不能沉醉于理论,削足适履地解决问题,上面已经说过了。

第九,要发挥个人的积极作用,但不要搞个人英雄主义,也不要做无原则的好人。首先要积极发挥自己的影响力,就算是刚入职的新人,也需要积极思考事情应不应该这样做,而不是单方面被PM或者经理的要求牵着鼻子走,那样很可能做无用功,因为很多提需求的人不一定懂技术实现的可行性。因势利导,尽量能调动各方的积极性,不要搞单干。如果你所处的环境是一个做事的环境,就要旗帜鲜明地表达自己的观点,不要和稀泥;如果你所处的环境是办公室政治盛行的地方,说明这里没有发展,那就离开去寻找发展的地方。在工作环境中,多和靠谱的人合作,向能干的人学习,帮助努力但是未掌握方法的人,远离不靠谱的人。

第十,要有所为有所不为。相对应的,要有所“不为”才能有所“为”。想要做成一些事情,就不能事事都做,必须有所舍弃。比如,做为干活的人(IC),开会曾经占据了我每天大量的时间,有讨论计划的会议sprint planning,有讨论技术的会议review meeting,有分享知识的会议knowledge sharing,有向上汇报的会议demo,有团队活动happy hour,还被同事不定期拉去参加各种会议,完全无法静下心来做事。每天好像是很忙,却什么也没做。为了解决这个问题,一方面我向领导反映,希望能优化会议设置,另一方面,也只能放下面子,不去那些对自己无益,或者我去了对别人也无益的会议。时间大大节省出来,效率也提高了,工作的成绩也提高了。

当然,上面总结的这些点里,我也不是时时都能做得好。写出来,既是分享,也希望与大家共勉。感谢在我成长过程中给予过帮助,提出过批评的人们。

希望大家多给些大米以资鼓励,我下次再写一个ML scientist求职相关的文章。

评分

参与人数 73大米 +201 收起 理由
haku117 + 1 给你点个赞!
tttttttttt + 1 给你点个赞!
背对疾风 + 2 欢迎分享你知道的情况,会给更多积分奖励!
crj02 + 1 给你点个赞!
QueenieV + 5 欢迎分享你知道的情况,会给更多积分奖励!
zd987 + 1 欢迎分享你知道的情况,会给更多积分奖励!
沽名钓誉 + 2 很有用的信息!
tCommander + 1 给你点个赞!

查看全部评分


上一篇:有没有非码农的manager来聊聊IC转管理的心路历程?
下一篇:为什么大家选择性忽视了烙印创业的力量

本帖被以下淘专辑推荐:

司华年 2021-12-2 02:15:06 | 显示全部楼层
本楼: 👍   100% (5)
 
 
0% (0)   👎
全局: 👍   97% (107)
 
 
2% (3)    👎
Echo 一下LZ的第一点和第五点
1. “真正要做好AI模型和系统是需要做大量的工作,而且很多工作都是繁琐、琐碎和千头万绪的,既无法写在文章里发表,也无法给领导汇报,甚至做完后都会忘记的那种,所以你去读他人的书、文章,甚至当面请教他人,都不一定能知道。但是,如果不勤快地把这些事情做到位,最后的结果就是会不好。”
this is so fxxking true. 一个performance好的Model仅仅是整个project的50% even less,后面的operation,上下游数据的on time/quality/operation占了非常之多,而且都是千里之堤毁于蚁穴。一旦performance不好,customer不会说是某个corner case不好,直接说model不行;这一点是我最近换组KT的时候领悟到的,有非常之多的detail是wiki和white paper都无法概括的;
2. 要迭代,先实现再优化,还要快。
入职第一天老板就强调两点:Deliver Results; if fail,fail fast。
回复

使用道具 举报

地里的匿名用户
匿名用户-9F2  发表于 2021-12-4 05:49:23
本楼: 👍   100% (4)
 
 
0% (0)   👎
匿名者 发表于 2021-12-3 13:05
你在亚麻也待了八年之久?
-baidu 1point3acres
亚麻伤害你这么深么?这个楼主在这分享经验 你为啥盯着八年不放?
回复

使用道具 举报

 楼主| bpnetz 2021-12-3 13:15:56 | 显示全部楼层
本楼: 👍   100% (3)
 
 
0% (0)   👎
全局: 👍   100% (133)
 
 
0% (0)    👎
TechIlliterate 发表于 2021-12-2 18:43
写的好。不过楼主是不是要跳槽了。一般写这么长的都是人生阶段性总结

倒不是人生阶段性总结。主要之前和别人讲过一些,后来想着不如写下来,也许对更多人有用
回复

使用道具 举报

地里的匿名用户
匿名用户-AF1  发表于 2021-12-1 16:45:14
本楼: 👍   0% (0)
 
 
0% (0)   👎
说得非常好 做为AS很赞同 谢谢分享
回复

使用道具 举报

Caroline_1 2021-12-1 19:25:24 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (2)
 
 
0% (0)    👎
总结的很全面,赞,楼主想问一下,现在ML sentist 面试需要什么要求吗
回复

使用道具 举报

jrh 2021-12-1 20:50:32 来自APP | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   95% (58)
 
 
4% (3)    👎
大赞👍干货总结!感谢
回复

使用道具 举报

eteyogi 2021-12-1 22:03:21 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (5)
 
 
0% (0)    👎
感谢。顺便问一下对于as,KPI中publication通常占比大吗?
回复

使用道具 举报

地里的匿名用户
匿名用户-EC4  发表于 2021-12-1 22:08:38
本楼: 👍   0% (0)
 
 
0% (0)   👎
作为一个学了ML 2年的不得不说楼主说的对,是真才实学。真希望所有在做DS的都看看
回复

使用道具 举报

sunyuzheng 2021-12-1 23:01:26 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   63% (400)
 
 
36% (233)    👎
说得太好了!
回复

使用道具 举报

地里的匿名用户
匿名用户-B92  发表于 2021-12-1 23:04:31
本楼: 👍   0% (0)
 
 
0% (0)   👎
感谢分享!!!
回复

使用道具 举报

jobsccc 2021-12-1 23:09:57 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   95% (197)
 
 
4% (10)    👎
这些经验太重要了
回复

使用道具 举报

光辉岁月203 2021-12-2 00:45:15 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   91% (107)
 
 
8% (10)    👎
LZ这都是肺腑之言啊。赞!
另外想请教LZ,MLE的出路是不是没有SWE宽?感觉MLE的需求量会小于MLE
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
职场达人
  • ↑ 本版用于讨论职场各种干货话题,闲聊请去🔗聊聊或者🔗匿名版
  • ❌ 本版严禁水贴,引战,发布广告,拉群,贴个人联系方式,扣分无警告
  • ☑ 求职、面经等去 🔗北美求职和 🔗回国求职大区,刷题和学习请去 🔗终身学习大区
  • ☑ 请去专版发布 🔗内推, 🔗招聘信息,和讨论 🔗创业内容

本版积分规则

>
快速回复 返回顶部 返回列表