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

如何成为一名优秀的推荐工程师

王喆 编著

  • 2020-05-22
  • 本文字数:2401 字

    阅读完需:约 8 分钟

如何成为一名优秀的推荐工程师

本文节选自王喆 编著的《深度学习推荐系统》,由电子工业出版社出版授权分享。

如何成为一名优秀的推荐工程师

作为一名推荐工程师,笔者希望与读者探讨优秀的推荐工程师应具备哪些基本素质。作为一名推荐工程师,所擅长的不应仅仅是机器学习相关知识,更应该从业务实践的角度出发,提升自己各方面的能力。

推荐工程师的 4 项能力

抛开具体的岗位需求,从稍高的角度看待这个问题,一名推荐工程师的技术能力基本可以拆解成以下 4 个方面:知识、工具、逻辑、业务。


如果用技能雷达图的形式展示与机器学习相关的几个职位所需的能力,则大致如图 9‑3 所示。读者可以初步体会这几个职位对能力需求的细微差别。



机器学习相关岗位技能雷达图


简单来说,任何推荐系统相关的工程师都应该满足 4 项技能的最小要求,因为在成为一名“优秀”的推荐工程师之前,首先应该是一名合格的工程师。不仅应具有领域相关的知识,还应具有把知识转换成实际系统的能力。一位笔者面试的推荐工程师职位候选人曾发表过一些机器学习相关的论文和专利,从领域“知识”的角度看,他是不错的人选,但当验证他的工程能力时,他明确表示不愿意写代码。也许当时不愿意写代码另有隐情,但对面试官来说,这位候选人使用“工具”的能力无法被验证,他的能力可能严重“偏科”,自然不是一名合格的推荐工程师。在笔者看来,推荐系统相关的从业者应该具备的最小能力要求如下:


  • — 知识:具备基本的推荐系统领域相关知识。

  • — 工具:具备编程能力,了解推荐系统相关的工程实践工具。

  • — 逻辑:具备算法基础,思考的逻辑性、条理性较强。

  • — 业务:对推荐系统的业务场景有所了解。


在最小要求的基础上,不同岗位对能力的要求也有所不同。结合图 9‑3 所示的技能雷达,不同岗位的能力特点如下:


  • — 算法工程师:算法工程师的能力要求是相对全面的。作为算法模型的实现者和应用者,要求算法工程师有扎实的机器学习基础,改进和实现算法的能力,对工具的运用能力及对业务的洞察。

  • — 大数据工程师:更注重大数据工具和平台的改进,需要维护推荐系统相关的整个数据链路,因此对运用工具的能力要求最高。

  • — 算法研究员:担负着提出新算法、新模型结构等研究任务,因此对算法研究员的知识和逻辑能力的要求最高。

  • — 能力“偏科”的工程师:有些读者平时不注重对工具使用、业务理解方面的知识积累,找工作时临时抱佛脚恶补知识、刷算法题,在一些面试场合下也许是奏效的,但要想成为一名优秀的推荐工程师,还需要补齐自己的能力短板。


当然,只用“知识”“工具”“逻辑”“业务”这 4 个词描述推荐工程师所需的能力过于形而上,接下来具体解释这 4 个技能。


  • — 知识:主要指推荐系统相关知识和理论的储备,比如主流的推荐模型、Embedding 的主要方法等。

  • — 工具:运用工具将推荐系统的知识应用于实际业务的能力,推荐系统相关的工具主要包括 TensorFlow、PyTorch 等模型训练工具,Spark、Flink 等大数据处理工具,以及一些模型服务相关的工具。

  • — 逻辑:举一反三的能力,解决问题的条理性,发散思维的能力,聪明程度,通用算法的掌握程度。

  • — 业务:理解推荐系统的应用场景、商业模式;从业务中发现用户动机,制定相应的优化目标并改进模型算法的能力。


请读者根据自己的具体岗位、具体项目有针对性地学习相关技能。

能力的深度和广度

在一项具体的工作面前,优秀的推荐工程师所具备的能力应该是综合的——能够从“深度”和“广度”两个方面提供解决方案。例如,公司希望改进目前的推荐模型,于是你提出了以 DIN 为主要结构的模型改进方案。这就要求你在深度和广度两个方面对 DIN 的原理和实现方案有全面的了解。


深度方面,需要了解从模型动机到实现细节的一系列问题,一条从概括到具体的学习路径的例子如下:


  • — DIN 模型提出的动机是什么?是否适合自己公司当前的场景和数据特点。(业务理解能力。)

  • — DIN 模型的模型结构是什么?具体实现起来有哪些工程上的难点。(知识学习能力,工具运用能力。)

  • — DIN 模型强调的注意力机制是什么?为什么在推荐系统中使用注意力机制能够有效果上的提升?(业务理解能力,知识学习能力。)

  • — DIN 模型将用户和商品进行了 Embedding,在实际使用中,应该如何实现 Embedding 过程?(知识学习能力,逻辑思维能力。)

  • — 是通过改进现有模型实现 DIN 模型,还是使用全新的离线训练方式训练 DIN 模型?(工具运用能力,逻辑思维能力。)

  • — 线上部署和服务 DIN 模型有哪些潜在问题,有哪些解决方案?(工具运用能力。)


从这个例子中读者可以看到,一套完备的模型改进方案的形成需要推荐工程师深入了解新模型的细节。缺少了深度的钻研,改进方案就会在实现过程中遇到方向性的错误,增加纠错成本。


推荐工程师除了要深入了解所采用技术方案的细节,还需要在广度上了解各种可能的备选方案的优劣,做到通过综合权衡得出当前客观环境下的最优解。接着上文模型改进的例子,推荐工程师应该从以下方面在广度上进行知识储备:


  • — 与 DIN 类似的模型有哪些,是否适合当前的使用场景?

  • — DIN 模型使用的 Embedding 方法有哪些,不同 Embedding 方法的优劣是什么?

  • — 训练和上线 DIN 的技术方案有哪些?如何与自己公司的技术栈融合?


在深度了解了一个技术方案的前提下,对其他方向的了解可以是概要式的,但也要清楚每种技术方案的要点和特点,必要时可通过 A/B 测试、业界交流咨询、原型系统试验等方式排除候选方案,确定目标方案。


除此之外,工程和理论之间的权衡能力也是推荐工程师不可或缺的技能点之一。只有具备了这一点,才能在现实和理想之间进行合理的妥协,完成成熟的技术方案。

推荐工程师的能力总结

想要成为一名优秀的推荐工程师,甚至一名优秀的算法工程师,应该在“知识”“工具”“逻辑”“业务”这 4 个方面综合提高自己的能力,对某一技术方案应该有“深度”和“广度”上的技术储备,在客观技术环境的制约下,针对问题做出权衡和取舍,最终得出可行且合理的技术方案。


图书简介:


https://u.jd.com/QWhPKt


2020-05-22 09:221656

评论

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

回"疫"录(1):口罩危机也许是一种进步

小天同学

疫情 回忆录 现实纪录

常用手机软件清单

彭宏豪95

效率工具 App 手机 移动应用

有关Kotlin Companion 我们需要了解到的几个知识点

王泰

Java 编程 kotlin 编程语言

过滤数组中重复元素,你知道最优方案吗?

麦洛

数据结构 数组 数组去重

用python爬虫保存美国农业部网站上的水果图片

遇见

Python GitHub 爬虫

最近的一些人生感悟

小智

人生 哲学

敏捷(组织)转型的6个准备条件

Bob Jiang

团队管理 敏捷 组织转型

像经营咖啡店一样扩容 Web 系统

Rayjun

Web 扩容

【SpringBoot】为什么我的 CommandLineRunner 不 run ?

遇见

Java Spring Boot

Nginx代理Oracle数据库连接

遇见

MySQL nginx oracle 反向代理

揭秘|为何程序员们能一直保持高收入?

丁长老

学习 程序员 写作 高薪

【SpringBoot】为什么我的定时任务不执行?

遇见

Java Spring Boot 定时任务 debug

理性主义和实证主义

王泰

理性主义 实证主义 哲学 软件工程

软件工程的史前时代 -- Therac-25 事件

王泰

质量管理 软件工程 软件危机 软件测试

写作平台使用感受

小天同学

产品 体验 反馈

Zoom的加密算法,到底有什么问题?

X.F

算法 编码习惯 产品设计 安全 编程语言

太慢是不行的

池建强

创业 产品

【SpringBoot】给你的 CommandLineRunner 排个序

遇见

Java Spring Boot

关于HSTS - 强制浏览器使用HTTPS与服务器创建连接

遇见

https 安全 浏览器 TLS 证书

软件世界中的个人英雄与团队协作

王泰

团队管理 软件工程 团队协作

死磕Java并发编程(6):从源码分析清楚AQS

Seven七哥

Java Java并发 并发编程 AQS

终极 Shell

池建强

Linux Shell

回"疫"录(2):不知者无畏

小天同学

疫情 回忆录 现实纪录

程序员陪娃看绘本之启示

孙苏勇

程序员 生活 读书 成长 陪伴

dubbo-go 中如何实现路由策略功能

joe

Apache 开源 微服务 dubbo Go 语言

Disruptor为何这么快

Rayjun

Java Disruptor

Facebook在用户增长到5亿时的扩容策略

Rayjun

团队管理 扩容

死磕Java并发编程(3):volatile关键字不了解的赶紧看看

Seven七哥

Java Java并发 volatile

个人知识管理精进指南

非著名程序员

学习 读书笔记 知识管理 认知提升

如何画一个闹钟

池建强

视觉笔记

我敢说 80% 的程序员都掉进了「老鼠赛跑」的陷阱

非著名程序员

读书笔记 程序员 程序人生 提升认知

如何成为一名优秀的推荐工程师_大数据_InfoQ精选文章