-->

深度学习推荐系统实战_43_结束语深度学习时代需要什么样的推荐工程师

你好,我是王哲,今天是二零二一年的第一天,同时也是咱们课程的最后一课课程。

开始前,我要对你说一句,很荣幸能陪你一起度过这几个月的学习实况。

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

但要想成为一名优秀的推荐工程师,这一路上包括我自己也还在不断的学习和前行着。

虽然我不能给你一张魔法传票,让你收获一达技术专家的彼岸。

但我希望能通过这门课给你一个坚实的基础和宽广的视野。

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

在我刚进入推荐系统这个行业的时候啊,我心中对这个行业有一个初步的印象,认为这个行业就是一群搞推器学习的研究者,在不断的改进模型,但练模型和提高效果。

所以我卯足了劲儿要成为那个能够提出新的模型架构,让全公司都采用我模型的年轻人。

但是啊当我工作了三年之后,我终于明白模型的工作固然重要,但它仅仅是推荐系统的一部分,还有其他很多重要的子系统子模块可以深入研究。

当我工作了五年之后,我又有了进一步的思考。

我意识到原来能够全盘考虑推荐系统的模型工程业务,对他们进行整体优化的工程师才是最优秀的那一拨人。

工作八年之后,我开始思考一个优秀推荐工程师的自我修养到底是什么,换句话说,就是他该具有什么样的能力。

下面我就把我的思考分享给你我认为一名推荐工程师的技术能力基本可以拆解成这四个维度。

知识、工具、逻辑和业务。

我们一一来看,知识,代表了推荐工程师应该具备的推荐系统和机器学习领域的相关知识。

比如,我在推荐模型篇中就强调过,我们一定要建立起自己推荐模型演化的框架,理清各个模型之间的关系。

从整体上建立起推荐系统的知识体系。

而工具指的是我们的工程实践能力,像握推荐系统相关的实践工具的使用方法。

那我在这门课中讲了很多推荐系统相关的工具平台,包括spark、 pencil flow、 flink、 REDIS等等。

就是希望你能够具备推荐系统知识的落地能力,把脑海中的专业领域知识转化成实际的能够支持公司业务的推荐系统。

逻辑指的是我们作为一名程序员的基本功,包括算法和数据结构基础,以及梳理高质量系统架构的能力。

像是我们在第一节课总结构过,以及学习习推荐系统架构图,以及在十四课、二十三课这些推荐章节中总结过的使用方法就是逻辑设计能力的体现。

那至于业务,我想是推荐工程师跟其他后端工程师区别最大的地方了。

在业务维度推荐工程师需要把自己当成半个产品经理,从业务场景的角度来思考用户到底喜欢什么,他们的习惯到底是什么样的。

只有这样,我们才能够不断发现改进模型的动机,持续的迭代模型。

这一点我想你通过第三十二课中,阿里巴巴模型的演进过程肯定也有所体会。

除了推荐工程师的能力维度,我还想跟你聊一聊推荐工程师职位的面试要求。

因为这也是很多在校同学和刚入行的工程师们非常感兴趣的话题。

虽然不同的招聘职位和职级对面试者的能力要求不同,但各个公司也不外乎是从知识、工具、逻辑、业务这四个维度对面试者进行考察。

那接下来我们就依次来看一看面试官都是怎么考察这四项能力的。

我们先来说对知识的考察。

那面试官最关心的就是你对这个领域的知识储备,以及你对一些技术细节的理解。

一般来说,他们会按照由广入深层层递进的方式来考察你的掌握程度。

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

假设你提到你对DIN模型比较熟悉,那接下来的问题可能就是注意力机制具体指的是什么?Din中注意单元的具体结构是什么?你能不能写出注意力元的细形式化定义,并且推导出它的梯度下降过程?总的来说,在面试之前,对你自己熟悉的领域,一定要深入理解每一个细节,切记浅尝辄止,临时抱佛脚。

接下来是对逻辑的考察。

面试官对逻辑思维能力的考察方式就是做题。

那一般来说也会有两种方式,呃,一种是直接出算法面试题,让你写一种排序算法,完成二叉树的构建便利、反转等等操作,或者任意类似的lico的面试题。

那这是所有CS相职职位都会检查的。

因为一名推工工程首先需要是一名合格的基础牢固的工程师。

第二种方式是让你去设计一个推荐系统的工程架构,可能是根据某个推荐场景,设计一套合适的特征工程和推荐模型等等。

那这类系统设计题更能检查你严谨全面的逻辑思考能力。

那对于逻辑能力的积累,其实是一个长期的过程。

不仅要求你在学生阶段打牢自己CS相关的知识基础,而且最好能在工作中面临实际问题的时候,多思考系统设计的问题。

其实这部分功能不属于你的工作范畴,你也可以多想一想有哪些可行的知计方案,不断锻炼自己系统设计的能力。

接下来是对工具使用能力的考察。

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

那如果这个职位要求更强的大数据处理能力,面试官可能会考察你对spark的运用情况,以及对spark背后MARRD ce的过程的原理的理解。

那如果这个职位希望赵一位对tenn、 RFLOXOS等等模工具应用熟练的同学,面试官就会重点考察你tenn NL flow的一些基本概念,以及怎么处理训练过程中遇到的一些问题等等。

那对于这部分,我的建议是你在了解所有工具使用基本方法的同时,一定要注意一到两个工具的深入实践和积累,争取成为一两个方向的理。

这样,你才能在一些高级职位的竞争中脱颖而出,最后是对业务理解能力的考察。

如果说前三项项能力是一名合格推荐工程师的必备条件,那业能力就是你在合格基础上变得优秀的宝贵素质。

只有对业务有深刻的理解,我们才能够从完成项目的阶段进化,到发现项目领导项目的阶段。

所以越高的职位对业务理解能力的考察就越深刻。

比如,对DNN来说,最关键的点其实并不是用注意力机制来解决这个问题,而是发现用户行为意识和目标商品的相关性。

对于y站deep来说,最重要的也并不是这个模型结构,而是怎么设计deep特征和y特征,从而发挥出这个模型最大的功力。

那对于模型服务的部分,最重要的是怎么设计,它才能既满足业务需求,又实现工程上的要求。

除此之外,推荐系统中遇到的一些常见问题,像是冷启动、多目标、优化、探索与利用等等,也是面试官常问的。

你必须能说出自己的思考,充分的分析具体问题,提出有针对性的解决方案。

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

总的来说,知识和逻辑是一名推荐工程师的基本素质。

工具和业务是影响你能不能获得高端职位的关键。

但不管你处于职业生涯的任何阶段,都要注意平时的不断思考和持续学习。

从广度和深度两个方面不断提升自己的综合能力,这样才能在职业生涯的阶梯上不断前行。

清楚了能力,要求了解了面试形式。

最后我们再展望一下未来,让我们预测一下接下来这几年业界最需要怎样的积极学习人才。

说是预测,其实也不能说是十分的准确。

因为我跟业界的很多非常资深的工程师,技术leader探讨的过程中,发现大家对于这个问题的看法其实是惊人一致的。

下面让我们来看一看业界的技术专家们都是怎么说的。

首先是阿里的资深技术专家朱小强给我的书写叙实的总结,他是这么说的。

技术发展将从依赖深度学习算法单点突破收割技术红利开始,转向更为复杂的、系统性的技术体系,推进进一步创造技术红利。

这里关键性的技术破局点是算法与系统架构的协同设计。

所以,朱小强的观点是,单纯依靠深度学习模型改进就能大幅提高效果的时代已经过去了。

现在我们只有把算法和工程协同设计才能取得进一步的突破。

那第二位是前google facebook的高级工程师。

现在的新浪微博广告核心技术的负责人詹莹,他对这个问题的看法是,成熟的算法工程师不应仅满足于基本的建模和调参。

他们对于业务和产品有较为深刻的理解,并且在实践中能够拥有足够的数据分析能力去指导建模方案的完善,并确确实实的带来客观的业务收益。

这一类高端的算法人才是真的稀缺,还远达不到内卷的程度。

那可以说,詹颖的看法和我对算法工程师能力的总结高度一致。

就是只有综合了算法能力、业务能力、工程能力,你才能成为一名高端的算法工程师。

最后是我的前老板呼噜的全球副总裁诸葛跃的话。

他说,算法工程师这一个群体普遍都会遇到的是算法研究能力和工程能力的权衡问题。

在其中任何一个方向成为专家都没有问题,企业都会有合适的位置给到你。

但如果你想走到更高的职级,就需要不断拓宽与现有工作相关的技术站。

随着近两年算法岗位的成熟,有一种说法重新被大家认可,那就是算法工程师。

首先是一名工程师,可见对算法工程师工程能力的重视已经是普遍的观点了。

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

最后我想用自己的话再给这个问题做一个总结。

那未来三到五年,业界最需要的是能够站在机器学习工程体系的高度之上,综合考虑业务特点、模型、结构、工程限制问题目标的算法工程师在算法工程师的发展之路上,切忌好高骛远,只追求好看、好听的先进技术的学生思维。

我们应该回到工程师思维上来,回到解决问题的本质上来,才能够逐渐成为一名优秀的算法工程师。

好了,听到这儿,我要告诉你这是本门课程的最后一段话了。

这门课程我们一直在聊技术学实践,一直没有机会跟你聊一聊内心的话。

所以借着最后的机会,我想和你谈谈心,那说实话,推荐工程师,这条职业道路并不是一条容易的道路。

同行们常说,这是一个时刻处在淘汰边缘的职业,我们时刻面临着这样那样的挑战。

啊,当你在谈一个流行的技术点的时候,他可能已经进入了过时的倒计时。

当你coding一天回家还要勉为其难,再多看一篇配合的时候,也许你也曾和我一样,觉得不如随波逐流。

就算了当你苦心做出一个模型的尝试,却没有任何效果的时候,他感觉自己的工作几乎是要从零开始。

但我还要说,这是一个充满魅力和激情的工作。

他不是在简单的完成一个机械式的任务,而是用你的观察、你的思考、你的智力以及你的经验去实现一个个目标。

当你真正突破这些目标的时候,我相信你会体会到比一道编程题AC大一百倍的成就感。

毫无疑问,它值得你为之付出一个长长的职业生涯。

那这几个月里,你可能是在晚上回家,打开笔记本继续学习,或者是在上班的路上提我的录音。

又或者是在周末通过咱们的课程为自己充电,不管用哪种学习方式,我都要说一声谢谢你的支持和信任,能陪伴你走过这几个月的学习经历,是我的荣幸。

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

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

最后的最后,我还为你准备了一份毕业调查问卷。

题目不多,希望你能够花两分钟时间填一下,期待听到你对我自己和咱们这门课程的反馈和建议,同学们再会。