谁说算法工程师不会写代码

Posted turingbooks

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁说算法工程师不会写代码相关的知识,希望对你有一定的参考价值。

大家好,我是阿星。我的新书《大规模推荐系统实战》前段时间上市了,收到很多反馈,看着那些或感谢、或认可、或鼓励的句子,我很有成就感,在这里感谢大家的支持!

其实上学的时候就有涉猎一些算法知识,但是我真正意识到应该深刻理解算法,是在 2015 年。

因为我发现,算法居然可以让我研究生阶段学到的矩阵论、最优化理论等看上去毫无用处的知识派上了用场!这在计算机行业的其他方向都是不可想象的。比如很多人自嘲:

我开始做商业化的推荐算法是在 2016 年,做短视频推荐。第一个上线的算法是协同过滤,当它“轻而易举”地将用户观看时长提升了 10%+ 时,我都惊呆了!不禁感叹:“一个小小的算法具有这么大的威力!”

看着自己实现的算法能够“控制”几百万人的行为时,那种成就感,我现在仍记忆犹新。

这份成就感,也让我一直保持着对推荐算法热爱,去不断研究它。在这条路上,很幸运地遇到了一些和我一样,对推荐算法感兴趣的人,我也很乐意把我的经验分享给大家。

大概 2020 年的时候,我发现很多推荐算法从业者对算法以外的知识了解得非常少,特别是软件工程相关内容,于是经常会被戏谑:算法工程师不会写代码。

而且还有一个很普遍的现象,由于分工的原因,很多从业者的日常工作只涉及推荐系统的一小部分,久而久之就成了“螺丝钉”,这对于个人发展来说不太友好。

所以我萌生了写一本书的念头,很快就开始盘算“这本书”的定位。

回想起我刚开始接触推荐算法时,到处找博客、看视频、买书。这个领域和其他技术领域很像,资料大都停留在理论层面,讲落地的少之又少。

时至今日这种现象也并没有减少,更别提在当前大数据时代的算法落地,与 10 年前相比,发生了翻天覆地的变化。

因此我打算写一本关于推荐系统实战的书,把重点放在工业界如何将推荐算法落地。当时我认为最重要的就是:一定要给读者提供具备生产标准的代码,让想要入门的人少走弯路。

下面和大家聊聊这本书,其实整本书大体上就是我对推荐系统的看法。

想要推荐算法价值最大化,一般从数据模型两个角度来考虑,往往前者更加重要。

这也是我们平时在学习和工作中容易忽视的地方,很多从业者会把大量时间放在折腾模型上,但是,往往数据的优化带来的收益远远高于模型的调优。

但说到底,模型是为了数据服务的,不能本末倒置。因此数据的构造和优化,在这本书里占据了很大的篇幅。

我在书中讲述具体的算法之前,会首先描述算法用来解决什么样的问题,以及如何构造训练数据(比如第7章一整章都在讲解特征工程和特征选择,毕竟特征是整个建模过程核心中的核心。)

除此之外,我认为对算法的评估也是一个很重要的方面。

评估分为线下评估和线上评估。这在书里都有很详细的说明和实现,比如线下的召回阶段和排序阶段使用的不同评估方式;线上点击率、转化率、AB 测试,包括业界主流的分层实验方案和指标置信度评估,等等。

最后我在这里统一回答一些来自读者的提问。

1. 如何解决系统冷启动?是否有可以分享的经验?

冷启动一般会有用户冷启动、物品冷启动和系统冷启动,字面意思已经可以解释这三种冷启动的差别。关于冷启动问题,在本书的第13章也做了较为详细的说明。

  • 用户冷启动:主要通过热门榜、用户人口属性(地理位置、设备信息等)、外部数据(比如 A 和 B 产品同属一家公司,B 产品是新产品,那么 B 产品可能就会用 A 产品的用户数据)等去做推荐;

  • 物品冷启动:一般通过物品本身的属性去推荐,标题、标签之类的。当然通过多级流量控制也是常规做法。

  • 系统冷启动:这是属于最棘手的,可以使用外部数据,如果没有外部数据,一般就等系统慢慢积累了,在算法层面,多臂机是很常用的算法。

2. 如何衡量一个推荐系统是否优秀?

能为公司赚钱的推荐系统就是优秀的推荐系统(哈哈)。站在技术人的角度,一个优秀的推荐系统,必须具有以下几个特点:

  • 快速迭代、快速反馈:依靠分布式训练、可信的 AB 测试平台和零活伸缩性好的模型服务平台。其中前两者在书里的第11章和第15章做了详细的说明。模型服务平台要能够支持模型快速上线、扩容、下线,最好是零配置、一键上线、扩容、下线。

  • 数据、特征和模型管理:这些需要能够像代码一样,有版本控制、历史追踪等。

  • 完善的监控系统:模型指标监控、数据分布监控、线上服务监控等,保证整个推荐系统的数据质量、模型质量和服务质量。

以上其实就是需要一套高效的 MLOps 工具。

3. 大厂对于推荐算法工程师都有什么样的要求?

我觉得我无法直接代表大厂,我来说说我对于推荐工程师的期望吧。

  • 工程能力coding 能力&软件工程能力,我一直觉得这是技术能力中最重要的一方面;

  • 算法能力:扎实的实战经验,不是浅尝辄止,而是能够刨根问底,做到理论和业务相结合

  • 方法论:属于软实力,这个看上去有点虚,但是如果能够总结出自己在工作中的一套方法论,包括分析问题、解决问题、与人沟通等方面,对于职业生涯更上一层楼大有帮助。

4. 对推荐算法工程师的未来发展道路有什么建议或者经验可以分享吗?

  • 加强工程能力,把算法工程师当成是软件工程师,最起码要能够看一些优秀框架的源码;

  • 不要沦为调包侠/调参侠。注意总结和思考,工作中的很多问题其实都是重复的;

  • 多看书,多看论文:个人的能力和精力有限,多看看优秀的论文,对眼界开阔都特别好,在这里推荐谷歌、FaceBook 和阿里的论文。

5. 您在 SHEIN 工作,与之前在字节、苏宁有什么不同吗?

SHEIN 作为一家跨境电商,依然还在砥砺前行、茁壮成长。我加入 SHEIN 也快3年了,成长了很多。

我在 SHEIN 比较有意思的事是由于我们在多个国家都有业务,而每个国家的气候、习惯、风俗和信仰什么的都可能不一样,因此在算法建模时都要注意这些方面,这与在做国内业务时还是有很大的区别的。

编辑推荐

本书从实战的角度介绍推荐系统,主要包含三部分:召回算法、排序算法和工程实践。

书中细致剖析了如何在工业中对海量数据应用算法,从算法原理,到模型搭建、优化以及最佳实践等。基本涵盖了推荐算法从业人员在实际应用中所要掌握的全部核心技能。

适合人群

本书适合希望入门推荐算法的非行业从业者、希望在推荐算法领域进阶的行业从业者,以及希望全面了解推荐系统及其运作原理的技术管理者阅读。

特色亮点

• 专业背景:一线互联网大厂推荐系统专家经验总结。

• 着眼实战:详细剖析大规模推荐系统从0到1,从1到N。

• 开箱即用:附带可以直接用于生产环境的所有主流推荐算法的代码实现。

作者介绍

阿星,曾在字节跳动、苏宁易购等企业负责推荐/广告算法的设计、开发和优化工作,在应对海量数据下的算法建模以及点击率/转化率预估等任务中积累了大量实战经验。

目前就职于跨境电商巨头 SHEIN,负责提升全球核心业务场景的流量分发效率。

关于推荐系统,小伙伴们有什么疑惑吗?大家可以在评论区留言,有可能会被作者大大翻牌哦~

(对了,很“大”的问题建议购书系统学习哦~)

相关阅读:新书上市 | 关于推荐系统,这本书包含了你想知道的一切!

以上是关于谁说算法工程师不会写代码的主要内容,如果未能解决你的问题,请参考以下文章

左益豪:用代码创造一个新世界|OneFlow U

一点在绘制系统架构图时的思考

谁说低成本挖矿导致Pi不值钱?

谁说博客园只能敲代码——还可以写心情

谁说按键精灵low,按键精灵冒泡排序算法!

记录一些有点难(指我不会写的)的dp