跳转至

结束语 深度学习时代需要什么样的推荐工程师?

你好,我是王喆。

今天是2021年的第一天,也是咱们课程的最后一讲,课程开始前,我要对你说一句,很荣幸能陪你一起度过这几个月的学习时间。

我相信,在这门课中,只要你认真学习、亲手实践,就一定能够搭建起深度学习推荐系统的知识框架,并且收获一套亲手实现的、包含工业级推荐系统各个模块的开源项目SparrowRecSys。这是咱们这门课的目标,也是你作为推荐工程师对深度学习方向的一次探索。

但要想成为一名优秀的推荐工程师,这一路上,包括我自己,也还在不断地学习和前行着。虽然我不能给你一张魔法船票,让你直接到达技术专家的彼岸,但我希望能通过这门课给你一个坚实的基础和宽广的视野。

在这最后一课,我想结合自己近十年的从业经验,包括国内和硅谷互联网公司的工作经历,跟你谈一谈,这个时代到底需要什么样的推荐工程师,我们应该继续朝什么方向持续努力

一名推荐工程师的“自我修养”

在我刚进入推荐系统这个行业的时候,我心中对这个行业的初步印象是,认为这个行业就是一群搞机器学习的研究者在不断地改进模型、训练模型和提高效果,所以,我卯足了劲要成为那个能提出新的模型架构,让全公司都采用我模型的“年轻人”。

当我工作了三年之后,我终于明白,模型的工作固然重要,但它仅仅是推荐系统的一个部分,还有其他很多重要的子系统、子模块可以进行深入研究。当我工作了五年之后,我又意识到,原来能够全盘考虑推荐系统的模型、工程、业务,对它们进行整体优化的工程师才是最优秀的那一拨人。

工作八年后,我开始思考一个优秀推荐工程师的“自我修养”到底是什么,换句话说就是他该具备什么能力。下面我就把我的思考分享给你。

我认为一名推荐工程师的技术能力基本可以拆解成4个维度:知识、工具、逻辑、业务。我们一一来看。

“知识”代表了推荐工程师应该具备的推荐系统和机器学习领域的相关知识,比如我在推荐模型篇中就强调过,我们一定要建立起自己的推荐模型演化框架,厘清各个模型之间的关系,从整体上建立起推荐系统的知识体系。

而“工具”指的是我们的工程实践能力,掌握推荐系统相关的工程实践工具的使用方法。我在这门课程中讲了很多推荐系统相关的工具、平台,包括Spark、TensorFlow、Flink、Redis等等,就是希望你能够具备推荐系统知识的落地能力,把脑海中的专业领域知识转化成实际的能够支持公司业务的推荐系统。

“逻辑”指的是我们作为一名程序员的基本功,包括算法和数据结构基础,以及梳理高质量系统框架的能力。像是我们在第一课中总结过的深度学习推荐系统架构图,以及在第14课、23课这些实践章节中总结过的各种架构图,就是逻辑设计能力的体现。

至于“业务”,我想是推荐工程师跟其他后端工程师区别最大的地方了。在业务维度,推荐工程师需要把自己当成半个产品经理,从业务场景的角度来思考用户到底喜欢什么,他们的习惯到底什么样。只有这样,我们才能够不断发现改进模型的动机,持续地迭代模型。这一点,我想你通过32课中阿里模型的演进过程,肯定也有所体会。

推荐工程师职位的面试要求

除了推荐工程师的能力维度,我还想跟你聊一聊推荐工程师职位的面试要求,因为这也是很多在校同学和刚入行的工程师们非常感兴趣的话题。

虽然,不同的招聘职位和职级对面试者的能力要求有所不同,但各个公司也不外乎是从“知识”、“工具”、“逻辑”、“业务”,这四个维度对面试者进行考察。接下来,我们就依次来看一看面试官都是怎么考察这四项能力的。

1. 对知识的考察

面试官最关心的就是你对这个领域的知识储备,以及你对一些技术细节的理解。一般来说,他们会按照由广入深,层层递进地方式来考察你的掌握程度。

比如说,在知识广度方面,面试官可能会让你说说主流的推荐模型有哪些,主流的Embedding方法有哪些,然后,再根据你的回答挑一到两点继续深入。

假设,你有提到你对DIN模型比较熟悉,那么接下来的问题可能是:

  • 注意力机制具体指的是什么?
  • DIN中注意力单元的具体结构是什么?
  • 能否写出注意力单元的形式化定义,并推导它的梯度下降更新过程?

所以,在面试之前,对于你自己熟悉的领域,一定要深入理解每一个细节,切忌浅尝辄止,临时抱佛脚

2. 对逻辑的考察

面试官对“逻辑思维能力”的考察方法就是做题,一般来说也会用两种方式。

一种是直接出算法面试题,让你写一种排序算法,完成二叉树的构建、遍历、反转等等操作,或者任意类似的LeetCode面试题。这是所有CS相关职位都会检查的,因为一名推荐工程师首先需要是一名合格的、基础牢固的工程师。

第二种方式是让你去设计一个推荐系统的工程架构,可能是根据某个推荐场景,设计一套合适的特征工程和推荐模型等等。这类系统设计题更能检查你严谨、全面的逻辑思考能力。

对于逻辑能力的积累是一个长期的过程,不仅要求你在学生阶段打牢自己CS相关的知识基础,而且最好能在工作中面临实际问题的时候,多思考系统设计的问题,即使这部分功能不属于你的工作范畴,你也可以多想一想有哪些可行的设计方案,不断锻炼自己系统设计的能力。

3. 对“工具”使用能力的考察

其实,对工具的考察跟公司职位的实际需求最相关,特别是一些比较高级的职位。

如果这个职位要求更强的大数据处理能力,面试官可能会考察你对Spark的运用情况,以及对Spark背后Map Reduce过程原理的理解情况;如果这个职位希望招一位对TensorFlow,XGBoost等建模工具应用熟练的同学,面试官就会重点考察你TensorFlow的基本概念,以及怎么处理训练过程中遇到的主要问题。

对于这部分,我的建议是,你在了解所有工具基本使用方法的同时,一定要注意一到两个工具的深入实践和积累,争取成为一两个方向的专家。这样,你才能在一些高级职位的竞争中脱颖而出

4. 对“业务”理解能力的考察

如果说前三项能力是一名合格推荐工程师的必备条件,那么业务能力则是你在合格基础上变得优秀的宝贵素质。只有对业务有深刻理解,我们才能够从完成项目的阶段进化到发现项目、领导项目的阶段,所以越高的职位,对业务理解能力的考察就越深刻。

比如:对于DIN来说,最关键的点其实并不是用注意力机制来解决这个问题,而是发现用户行为历史和目标商品的相关性。对于Wide&Deep来说,最重要的也并不是这个模型结构,而是如何设计Deep特征和Wide特征,从而发挥出这个模型最大的“功力”;对于模型服务的部分,最重要的是如何设计它才既能满足业务需求,又能实现工程上的要求。

除此之外,推荐系统中遇到的一些常见问题,如冷启动、多目标优化、探索与利用,也是面试常问的业务问题,你必须能说出自己的思考,充分地分析具体问题,提出有针对性的解决方案。

“业务”方面的提高,虽然是一个长期的过程,但我还是要建议你,在平时的工作中,不要总是想着完成一个个工程任务,按部就班的执行上级的命令,而是多思考任务背后的逻辑,多提出自己的见解,这样才能真正的提高自己解决业务问题的能力。

总的来说,“知识”和“逻辑”是一名推荐工程师的基本素质,“工具”和“业务”是影响你能不能获得高端职位的关键。但不管你处于职业生涯的任何阶段,都要注意平时的不断思考和持续学习,从“广度”和“深度”两个方面,不断提升自己的综合能力,这样才能在职业生涯的阶梯上不断前行。

什么样的机器学习人才最紧缺?

清楚了能力要求,了解了面试形式,最后我们再展望一下未来,让我们预测一下接下来这几年,业界最需要怎样的机器学习人才。

说是预测,其实也不能说是十分准确,因为我跟业界的很多非常资深的工程师,技术leader探讨的过程中发现,大家对于这个问题的看法其实是惊人一致的。下面,让我们先来看看业界的技术专家们都是怎么说的。

首先是阿里的资深技术专家朱小强给我的书写序时的总结,他说:

技术发展将从依赖深度学习算法单点突破收割技术红利,开始转向更为复杂的、系统性的技术体系推进,进一步创造技术红利。这里,关键性的技术破局点是算法与系统架构的协同设计(algo-system co-design)。

所以朱小强的观点是,单纯依靠深度学习模型改进就能大幅提高效果的时代已经过去了,现在我们只有把算法和工程协同设计,才能取得进一步的突破。

第二位是前Google、Facebook高级工程师,现在的新浪微博广告核心技术负责人詹盈,他对这个问题的看法是:

成熟的算法工程师不应仅满足于基本的建模和调参,他们对于业务和产品有较为深刻的理解,并且在实践中能够拥有足够的数据分析能力去指导建模方案的完善,并确确实实地带来客观的业务收益。这一类高端的算法人才是真的稀缺,还远达不到“内卷”的程度。

可以说,詹盈的看法和我对算法工程师能力的总结高度一致:只有综合了算法能力、业务能力、工程能力,你才能成为一名高端的算法工程师。

最后是我的前老板,Hulu的全球副总裁诸葛越的话,她说:

算法工程师这个群体普遍都会遇到的是,算法研究能力和工程能力的权衡问题。在其中任何一个方向上成为专家都没有问题,企业都会有合适的位置给到你。但如果你想走到更高的职级,就需要不断拓宽与现有工作相关的技术栈。随着近两年算法岗位的成熟,有一种说法重新被大家认同,那就是“算法工程师首先是一名工程师”,可见对算法工程师工程能力的重视已经是普遍的观点了。

越姐从一个技术管理者的角度表达了自己的观点,结论也和前几位工程师一样:只有算法研究能力和工程能力都突出的人,才会在现在愈加成熟的业界环境下取得更高的职位。

最后,我想用自己说的话再给这个问题做一个总结:未来3-5年业界最需要的是:能够站在机器学习“工程体系”的高度之上,综合考虑“业务特点”、“模型结构”、“工程限制”、“问题目标”的算法工程师。在算法工程师的发展之路上,切忌“好高骛远”,只追求“好看好听”的先进技术的学生思维,回到工程师思维上来,回到解决问题的本质上来,才能够逐渐成为一名优秀的算法工程师。

写在最后

好了,如果你学习到这里,我要告诉你,这是本门课程的最后一段话。这门课程,我们一直在聊技术、学实践,一直没有机会跟你聊一聊内心的话,所以借着最后的机会我想跟你“谈谈心”。

说实话,推荐工程师这条职业道路并不是一条容易的道路,同行们常说这是一个时刻处在淘汰边缘的职业,我们时刻面临着这样那样的挑战。比如说,当你在谈一个流行的技术点时,它已经进入了过时的倒计时;当你coding一天回家,还是勉为其难再多看一篇paper的时候,也许你也曾和我一样觉得不如就随波逐流算了;当你苦心作出一个模型的尝试却没有效果的时候,感觉自己的工作几乎是要从零开始。

但我还要说,这是一个充满魅力和激情的工作,它不是在简单地完成一个机械式的任务,而是用在你的观察、你的思考、你的智力,以及你的经验去实现一个个目标,当你真正突破这些目标的时候,我相信你会体会到比一道编程题AC大100倍的成就感,毫无疑问,它值得你为之付出一个长长的职业生涯。

这几个月里,你可能是在晚上回家打开笔记本继续学习,或者是在上班的路上听我的录音,又或者是在周末通过咱们的课程为自己充电,不管是用哪种方式学习,我都要说一声:“谢谢你的支持和信任”,能陪伴你走过这几个月的学习历程是我的荣幸。

今天的最后没有思考题,但如果你对这门课、这个职业,对未来和前途,有任何的感悟,我都欢迎你写下来,总结给自己看,也与这门课一同走过的同学们共勉。

好了,同学们,虽然我们的课程结束了,但我相信你的职业生涯从这里开始会更加精彩!

最后的最后,我还为你准备了一份毕业调查问卷,题目不多,希望你能花两分钟的时间填一下。一起走过了这些时间,期待听到你对我和这个课程的反馈和建议!

精选留言(15)
  • 王喆 👍(24) 💬(0)

    各位同学好,我在知乎创建了一个问题 “如何评价极客时间的「深度学习推荐系统实战」课程?” https://www.zhihu.com/question/437552262 欢迎大家在那里给这门课进行反馈,评价,勘误。 我个人从课程报酬中抽出了5000元作为反馈奖励,到时候会不定期选出优质的反馈和有价值的勘误,到时候私信大家我的微信号,然后红包奖励50元,钱不在多,略表心意,欢迎拍砖、好评和错误指正:)

    2021-01-02

  • 浣熊当家 👍(25) 💬(3)

    听着最后的结束语,我居然感觉要哭了┭┮﹏┭┮ 不知不觉课程居然结束了,有太多的不舍,这几个月感觉就像身边多了一个优秀的一线算法工程师的朋友,特别耐心,系统,务实的, 从浅入深,从理论到实践的, 从开始到前沿的全方位,毫无保留的讲解业界顶尖的推荐系统。 我的收获很大,总结一下,技术方面 1)对于系统设计有了big picture 2) 对主流的深度学习模型的类型有了了解 3)对于spark, redis, TensorFlow, Docker, Flink这些技术栈有了认识 4)对模型的设计,评估标准有了了解。 但是由于本人知识储备太少了,对于后来的深度学习模型部分理解起来有点困难。但是仅仅是通过对Word2Vec的学习,就让我能够在工作对公司网站的搜索词进行分析, 成功的发掘了用户痛点,得到了部门广泛的肯定,深切感受到了知识就是力量。 除了对技术上的学习,让我收获更大的是老师务实的态度, 老师的“学生思维”这个概念特别的点醒,让我意识到了长久以来的思维误区, 老师对于推荐系统要解决的问题的总结,还有上节课如何权衡的总结,可以用到平时生活和工作中的各种问题上, 时时想起感觉受益匪浅。 感谢老师的每一条用心的回复,给我很大的鼓励。希望以后还能看到老师其他的课程。 最后想问老师一个问题, 我觉得深度学习有三个主要应用领域 推荐,NLP, CV, (游戏?)我打算从NLP入手进行学习,目的是有效的找到MLE的工作。 您觉得这个方向可行吗? 您有什么建议吗?

    2021-01-02

  • SecooHR 👍(10) 💬(1)

    多谢老师,这么课让我受益匪浅,对推荐系统有了更深度的理解。 非常希望老师后续再开一些 推荐 或者 广告相关的 高级课程,重点介绍在 实际场景的业务落地的思考,设计及实际的填坑历程。

    2021-01-04

  • 胡译匀 👍(9) 💬(5)

    新年好!感谢王喆老师的几个月的指导,正因为你的《深度学习推荐系统》和这门课,让我入门了推荐系统,期待你的其他课程,我也希望能和王老师一起把Sparrow培养成Eagle!

    2021-01-01

  • Cheng~千禧 👍(7) 💬(1)

    作为一名在校生,还是先打好pytorch和tensorflow的基础,数据结构的基础。把知识框架和逻辑做好。在之后的实习过程中,加强spark和redis等工具的熟练度。并且在实习过程中重视背后业务逻辑的思考。王喆老师我这样的想法对吗?

    2021-04-10

  • rcblq 👍(7) 💬(1)

    终于看完了一遍课程,感谢老师的付出。 作为一名在大厂的工程师,曾经从后端尝试转向算法,但是实践中遇到的问题,让我感觉到算法模型不是一个ai项目唯一的要点,模型的工程落地问题,以及真正上线后的部署和运维问题都是要一一解决的,甚至比一些算法模型更为关键。 因为这样的踩坑经历,放下了一定要转算法的执念,选择作为一名后端工程师,去学习和接触算法,尝试从工程架构和业务的角度反推算法的应用,从更为务实的角度看待技术和自己。 感谢老师在课程最后的寄语,相信往这个方向努力会有所收获。

    2021-01-30

  • arcTanh 👍(6) 💬(1)

    作为一个已经在推荐领域干了几年的菜鸟来看王老师的课 确实全是干货 句句是经验总结 其实我觉得这个课程不能只看一遍 要多看几遍 我看了不下两遍 每一遍都有不一样的收货 真实超值

    2021-03-02

  • fsc2016 👍(3) 💬(1)

    课程结束啦,完结撒花!这一个季度在王喆老师的教导下,从0到1搭建起推荐系统知识框架,不管是理论讲解还是实战操作,老师都讲的非常细致,耐心回答每一个学员的问题,在这里给老师鞠一个90度躬,王老师,您辛苦了! 这一个季度以来,每到周1,3,5早上,上班的路上听着老师的课程,下班回来复习实践,即使现在结束了,也是反复听着以前的章节,每次都会感觉有新收获。认真揣摩老师讲的每一句话,都是自己多年来真实的工作体验精华总结,有些可能我现在感受不到,相信会在以后学习工作中,体会会越来越深刻。这是目前我在极客时间学过最好课程,当之无愧! 课程虽然结束了,但是自己在推荐系统这条路还刚刚开始,正如老师文中所述‘这是一个充满魅力和激情的工作’,在以后时间里,在老师帮忙搭建起知识框架里继续添枝加叶,细化知识要点,努力为之付出一个长长的职业生涯!

    2021-01-05

  • Jun 👍(3) 💬(1)

    结束啦!非常感谢老师的这门课!今年有幸接触到推荐系统这个行业,刷了两遍老师的《深度学习推荐系统》这本书,跟着老师认真上完了这门课,也追着老师的公众号读了一些经典paper,让我不管从技术蓝图、主流模型、评估方法、相关工具等等各方面都有了些许的进步,也在实际的工作中有了一些让自己满意的尝试。感谢老师的指导,也非常期待以后继续跟随老师学习,在推荐系统这条道路上更加精进~

    2021-01-02

  • 张弛 Conor 👍(2) 💬(1)

    很幸运能在自己对职业规划迷茫的时候遇到王喆老师的这门课程。“推荐工程师这条职业道路并不是一条容易的道路”,可是王喆老师让我们骑上了一只Sparrow,从天空快速领略了一遍这条道路的风景。我想我会因为这一次旅程,即便在道路中途迷路也不会迷失方向,即便看到了美景也不会沾沾自喜久久驻留。路漫漫其修远兮,吾将上下而求索!愿新的一年,我们都能在这条道路上收获更丰富的体验!

    2021-01-04

  • 香格里拉飞龙 👍(1) 💬(2)

    王老师,您对8月27日”网信办就《互联网信息服务算法推荐管理规定(征求意见稿)》公开征求意见“怎么看? 规定里说用户可关闭算法推荐服务,”第八条 算法推荐服务提供者应当定期审核、评估、验证算法机制机理、模型、数据和应用结果等,不得设置诱导用户沉迷或者高额消费等违背公序良俗的算法模型。“(https://baijiahao.baidu.com/s?id=1709211754458365576&wfr=spider&for=pc) 会不会影响推荐算法岗位的就业? 有点慌……

    2021-08-27

  • 戴景波 👍(1) 💬(1)

    跟着老师的节奏一点一点做,从爬虫到数据分析,再到后评估模型,做了自己的预测项目(个人认为预测项目和推荐系统是异曲同工),有兴趣的朋友可以一起交流!github.com/acredjb/FBP谢谢老师的课程!这样系统化的课程我已经推荐给我的朋友。另外,学以致用才是学习课程收获最多的东西!

    2021-04-16

  • ヽoo胡琪ツ 👍(1) 💬(1)

    老师老师,想问问计算广告和推荐系统什么关系啊?点击率估计ctr二分类问题好像算计算广告领域,推荐系统范围是包含计算广告吗?

    2021-03-23

  • 明月 👍(1) 💬(1)

    感谢老师的陪伴,以前对推荐好是很零散的理解,终于串成了一条线,很多不理解的地方,有时间再多刷几遍。

    2021-03-20

  • Wiiki 👍(1) 💬(1)

    结束是一段路程的最后一程,又是新梦想的开始。感谢王喆老师在2020这个普遍大家都不好过,厚积薄发的日子送给我们工作和生活上的冬日暖阳,多的是激动和不舍~ 这一季度走来,跟着王老师的节奏,我们建立了推荐系统知识体系和工程经验,领悟更多的是对待工程上需要灵活机动,游刃有余,集思广益,不能陷入局部,在思想上钻牛角尖以至于无法到达目标的彼岸~ 我相信,课程的结束是另一个开始,在之后的工作当中,带着疑惑和新的感悟找到课程相应的章节找解决思路,不断完善和更新对知识的理解~ 在这里,还要给王喆老师一个大大的赞~ 谢谢啦

    2021-01-04