2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

在深度学习的浪潮中,如何做好一名算法工程师?

  • 2020-04-14
  • 本文字数:4596 字

    阅读完需:约 15 分钟

在深度学习的浪潮中,如何做好一名算法工程师?

2020 年 4 月 1 日,AlphaGo 研发团队领导者 David Silver 获得了 ACM 计算奖,作为深度强化学习领域的领军人物,他领导开发的 AlphaGo 集深度学习、强化学习、传统树搜索算法和大规模计算的思想为一身,其横扫人类所有围棋高手的表现一次又一次向这个世界宣告了深度学习在各领域的应用进入了高潮。需要清楚的是,David Silver 不仅是 DeepMind 的首席科学家,而且在 AI 系统工程化、密集计算领域都有诸多贡献,在深度学习的浪潮之中,将理论落地于实践,让学术创新驱动产业升级成为了所有公司,以及相关的算法工程师、研究员们的首要目标,作为应用属性更强的计算广告、推荐系统、个性化搜索领域,深度学习也已经成为了驱动公司业务发展的引擎。


作为一名在计算广告、推荐系统领域工作了八年的算法工程师,借发布我的新书《深度学习推荐系统》的机会,在此与大家一同探讨“在深度学习的浪潮中,做好一名算法工程师”的经验,以及我对这个行业,对算法工程师职业前景的看法。

1、知识体系的重要性

可能有的同学读过我之前在 AI 前线(公众号 ID:ai-front)写的一系列深度学习 CTR 预估模型的文章,或者关注过我的知乎专栏“王喆的机器学习笔记”。持续与业界同行分享这些知识的好处就是可以快速梳理自己的知识体系,期间有无数同行在文章的留言中反馈过自己的经验、指出过我的错误,记得我在知乎写的一篇文章《YouTube 深度学习推荐系统的十大工程问题》获得了 232 条留言,要知道技术文章是有一定的阅读门槛的,在这篇文章下留言的全都是业界和同行或者在校相关方向的博士生、研究生,他们给我自己带来的信息量也是巨大的。


但要清楚的是,所有外界的反馈都是零散的,片段似的,只有让这些零散的知识生长到你自己的知识体系上,才能够对自己的技术选择,甚至之后的职业生涯产生积极的影响。


拿我熟悉的推荐系统领域来说,推荐模型的发展日新月异,只有把模型的发展串联起来,才能够在业界知识爆炸式增长的浪潮之中,让自己的这棵知识树也能开枝散叶。正如《深度学习推荐系统》这本书中的模型演化图(如图 1),当把模型的知识压缩成这样的知识体系之后,零散的知识点才能够压缩成紧凑的知识面,而你对各个模型的理解,对他们应用的场景也会更加深刻。



图 1 深度学习推荐模型的演化趋势


这样类似推荐模型演化图的形式已经被越来越多的同学采用,也有很多热心的同行在此基础之上进行了进一步的补充和更新。这是秉着开放精神分享知识的另一好处,就是能为这个行业提供一点自己的贡献,同时获得越来越多的正向反馈,这是一个双赢的过程。


这样的思路也可以延续到所有的知识点的梳理过程中,比如推荐系统的评估方法也应形成一个多层的筛选体系;从 Word2vec,到 Item2Vec,再到各种 Graph Embedding 方法也遵循从经典到前沿的演化过程。在建立了这样一个深度学习技术框架之后,以此为基点,或者说起点,每个人都可以生发出属于自己职业生涯的知识体系。

2、“不谋全局者,不足谋一域”的工程能力

如果说理论知识体系是驱动一个人作出正确技术抉择的“内功”,那么工程能力就是决定着能否把技术抉择成功落地的“招式”。


一个资深的工程师跟一个一般的工程师的差距不仅在于工具用的熟不熟练,代码写的快不快,而更多是在于技术的格局和知识体系化上的差距。有一句话我是非常推崇的——“不谋万世者,不足谋一时;不谋全局者,不足谋一域。”技术也是这样,它同样遵循事物发展的一般规律。要作出最合理的技术改进,必须要有一个全局的技术框架在心中,只有这样,才能够提出全局最优的技术决策,和充分考虑各方利弊的技术权衡。


还以推荐系统为例,我们应该建立的是类似图 2 一样的整个深度学习推荐系统的业界主流的技术架构图,并熟悉自己公司当前采用的技术方案,在此基础上才能够作出更合理的、技术投资回报比最大的技术改进。



图 2 深度学习推荐系统的技术架构


如果所有人都一头扎进模型结构改进的“红海”之中,而忽视一些投资回报比更高的技术点,是难以取得效果上较大的提升的。就像我在书中提到的技术迭代中的“木桶理论”,一名嗅觉敏锐的算法工程师应该做的事情是找到整体技术框架中那个“最短的木板”,而不是盯着一块已经很长的木板“执着”地继续补强,这块最长的木板不会对蓄更多的水起到太大的作用。


在所有人都盯着“模型结构”这块木板的时候,也许你在“数据实时性”,“模型在线学习”,“边缘计算”这些本来不长的木板上的投入,会取得事半功倍的效果。而毫无疑问,这些都需要建立在你自己的业界“知识体系”,以及对公司整体的技术框架有了充分认知的基础上实现的。这也是我自己实践中一贯倡导的技术思路。

3、对于算法工程师职业生涯的看法

这里为什么一再强调“知识体系”,“技术框架”的重要性,这涉及到我对算法工程师这个职业方向的理解,或者说对机器学习相关行业的认识。


首先在我看来,这个行业是值得你去投资一生的职业方向。一个算法工程师最大的魅力在于 TA 凭一己之力影响了千万人的兴趣、爱好、以及生活的方方面面,无论从发展、薪资还是知识总量上来说,这个行业的天花板都足够高,足够你用整个职业生涯去触摸新的高度。


要知道,互联网在带给人们看似平等自由的交流空间的同时,它的核心却越来越中心化、集约化,头部公司的影响力在日益扩大,但头部公司的技术核心是什么?不正是由诸位算法工程师驱动的各种推荐、广告、图像、翻译等等不同的 AI 引擎吗?在电商、搜索、新闻、视频等真正实现机器学习落地的领域,根本不存在所谓的 AI 泡沫,你要看到,在整个互联网行业的 AI 泡沫之中,总有那些真正在用机器学习驱动产品并以此构建成功的商业模式的公司在引领互联网的发展方向。


但是,越来越中心化的互联网也给算法工程师带来了另外一个挑战,那就是所有的公司都紧缺资深的算法工程师,而却在不断裁员边缘的、初级的算法从业者。因为在这样一个中心化极端严重的行业,(10 个初级算法工程师 +1 个资深算法工程师)带来的收益无限接近于(1 个资深算法工程师)。一个不太合格的算法工程师为公司和团队作出的贡献甚至是负的,因为他们产生出的东西经常需要被重构甚至重写,他们提出的模型也经常会成为 AB Test 中的失败者而无法产出。这也就是为什么在这样一个互联网寒冬,某些一线的机器学习团队用 200 万的年薪招不到满足要求的算法工程师,而另一边,校招的同学们又叫苦连天说今年是史上算法工程师招聘最差的一年。


也还记得我 07 年刚进入清华的 KEG 实验室的时候,那时正是上一轮互联网泡沫破裂到这一轮 AI 浪潮间的低谷时期,即使在那个阶段,当时如日中天的百度、腾讯、搜狗这些公司也毫不吝啬对学界的优秀人才和业界的资深工程师的追求。在这个金字塔式的人才结构之上,与其怨天尤人大环境的不堪,不如好好修炼自己的“内功”,跨越金字塔那个大大的基座。

4、深度学习的发展及算法人员的“技术护城河”

话题自然而然的过渡到了对整个深度学习相关行业发展的理解。刚刚说到技术的整体性,而推荐系统,广告搜索这些行业在深度学习时代的发展也从最初的“深度学习模型”快速迭代的单峰模式,发展到了“深度学习模型”+“深度学习工程架构”并举的双峰模式。甚至可以说,在深度学习模型已经成为显学的今天,各大公司在“深度学习工程架构”上的投入日益剧增,几乎成为了一线公司和二线公司拉开差距的主要领域。


在这样的行业大趋势下,身为算法工程师的我们也要深入的思考什么才是在这个行业安身立命的根本。是用 TensorFlow 训练一个模型吗?是看一看最新的 paper,尝试几个新的模型架构吗?在刚走出高校、实验室的应届生都能完成这些任务的时候,我想这不能成为一位资深算法工程师“资深”的理由。


诚然,模型相关的一切是我们之所以被称为“算法”工程师的原因,这是我们应该掌握的基本技能,但是在一线企业动辄上万 QPS,动辄千万维特征,TB 级数据量,亿级用户量的前提下,只有在这些高强度的、苛刻的压力下建立高效、高可靠且高效果的模型及模型服务基础设施才是一位“工程师”坚不可摧的技术护城河。比如深度学习工程上的热点 model serving,数据实时性,模型压缩与数据蒸馏,对这些技术点的理解和实现是在实验室环境下很难进行的,也是你永远也无法替代的工程经验。


另一方面,拥有深刻的洞察能力也成为了一个敏锐的算法工程师的“稀缺超能力”。我在之前的专栏文章不止一次的提到,对用户行为以及背后动机的感知,并将这些动机融合进模型结构之中才是构建推荐模型的“银弹”。没有任何一个模型结构是万能的,只有最适合你的应用场景的,符合你的用户使用习惯的模型才是解决问题的“灵丹妙药”。能够站在产品经理的角度去思考推荐问题,甚至是站在一个普通用户的角度去换位思考我们要应对的场景,将是你永远也无法被替代的行业洞察。


就像图 3 中直观展示的,资深的算法工程师一定是拥有“领域知识”,“算法基础逻辑”,“业务理解”和“深度学习工具”全面技能的业界专家,而不是在一个能力方向偏科,抑或是歧视产品思考、不愿去做更多业务理解的“学生思维”型工程师。



图 3 深度学习相关各职位的技能雷达图

5、共勉

当然,还有很多想跟大家去沟通,比如理论和工程的权衡问题,对优化目标的理解,对算法团队与其他团队的沟通问题,以及算法工程师面试跳槽的建议。我们不可能在这一篇文章中倾诉所有,还是回到我们卖书的“正事”上来:),大家可以在《深度学习推荐系统》这本书中找到我的一些想法,希望继续在书中与大家探讨这些略“形而上”的经验。它不是本书的重点,但丝毫不影响这些内容是重要的。


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


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


最后,希望《深度学习推荐系统》这本书能够成为你职业生涯中的一个小小的知识节点,在这深度学习的浪潮之中,帮助你成为一个更好的算法工程师,与君共勉。


作者介绍:


王喆,毕业于清华大学计算机科学与技术系,美国流媒体公司 Roku 资深机器学习工程师,推荐系统架构负责人。曾任 Hulu 高级研究工程师,品友互动广告效果算法组负责人。清华大学 KEG 实验室学术与搜索引擎 Aminer 早期发起人之一。主要研究方向为推荐系统、计算广告、个性化搜索,发表相关领域学术论文 7 篇,拥有专利 3 项,是《百面机器学习:算法工程师带你去面试》等技术书的联合作者。曾担任 KDD、CIKM 等国际会议审稿人。


书籍介绍:


深度学习在推荐系统领域掀起了一场技术革命,本书从深度学习推荐模型、Embedding 技术、推荐系统工程实现、模型评估体系、业界前沿实践等几个方面介绍了这场技术革命中的主流技术要点。


《深度学习推荐系统》既适合推荐系统、计算广告和搜索领域的从业者阅读,也适合人工智能相关专业的本科生、研究生、博士生阅读,帮助他们建立深度学习推荐系统的技术框架,通过学习前沿案例加强深度学习理论与推荐系统工程实践的融合能力。


购买地址:https://item.m.jd.com/product/12630209.html


2020-04-14 12:054268

评论

发布
暂无评论
发现更多内容

Golang并发操作中常见的死锁情形

Regan Yue

协程 Go 语言 8月日更

MySQL半同步复制的数据一致性探讨

OpenIM

网易云iOS开发一面面经

iOSer

ios 面试

设计 | 基于 Redis 谈一谈缓存设计思想

RadonDB

数据库 redis RadonDB

致远互联2021年中报:扎根协同的广阔天地,撸起袖子加油干

海比研究院

三面阿里被挂,竟获内推名额,历经5面拿下口碑offer(Java后台)

Java 程序员 架构 面试 计算机

6年Java经验,4面阿里定级P7,多亏阿里13万字+脑图+源码面试笔记

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

【等保知识】等保三级要求多少分?几分能过?

行云管家

网络安全 等保 等级保护

NFT盲盒玩法详解|盲盒系统开发

Geek_23f0c3

DAPP智能合约交易系统开发 NFT 盲盒

莫慌!阿里人用五个模块讲明白了SpringCloud,可下载

Java~~~

Java 架构 面试 微服务 Spring Cloud

竟有阿里大牛用678页PDF只讲Java程序性能优化,除了干货就是干货

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

高安全等级网络是什么意思?有什么特点?

行云管家

网络安全 数据安全 安全事故 安全等级

架构实战营模块1作业

^_^

架构实战营

springboot+cloud实战派PDF让开发和微服务架构像喝水一样简单

Java~~~

Java spring 架构 面试 Spring Boot

细节爆炸!腾讯用13个案例实战讲明白MySQL,没想到这么全

Java~~~

Java MySQL 数据库 架构 面试

GitHub阅读量最高的文章竟是图解Java,不愧是Alibaba内部资料

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

构建可靠分布式架构的最佳方式,竟记在国内第一本“凤凰架构”上

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

AI加持数据管理服务DAS,让数据库运维更“聪明”,DBA更轻松

华为云数据库小助手

GaussDB dba 华为云DAS 华为云数据库

硬核!阿里自爆虐心万字面试手册,Github上获赞89.7K

Java~~~

Java 架构 面试 算法 JVM

深入了解RocketMQ之过滤器

邱学喆

bloomfilter TAG过滤 SQL92

FL Studio中钢琴卷帘窗的工具的使用

懒得勤快

微信开源C/C++ RPC框架PhxRPC

OpenIM

叹服!阿里自述SpringCloud微服务:入门+实战+案例

Java~~~

Java spring 架构 面试 Spring Cloud

啥?阿里DBA团队总监把MySQL 性能调优 金字塔,写进了800页笔记?

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

牛掰!阿里人用7部分讲明白百亿级高并发系统(全彩版小册开源)

Java~~~

Java 架构 面试 高可用 高并发

48W字?GitHub上下载量破百万的阿里:图解Java、网络、算法笔记

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

The Data Way Vol.3|做到最后只能删库跑路?DBA 能做的还有很多

SphereEx

数据库 开源

项目中全局变量的灵活用法 12/100 发布文章

CodeNongXiaoW

膜拜!首次公布Java10W字面经,Github访问量破百万

Java~~~

Java 架构 面试 微服务 多线程

MapReduce高阶 分区、排序,Combine

Mike

游戏开发者的通关之旅,华为AGC for Games带来了什么?

叶落便知秋

在深度学习的浪潮中,如何做好一名算法工程师?_AI&大模型_王喆_InfoQ精选文章