写点什么

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

王喆 编著

  • 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:221420

评论

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

实测 | Apipost和Apifox哪个更好用?

不想敲代码

接口调试 接口管理工具 API接口工具

Spring+Vue工程部署在Linux

Geek_7ubdnf

Java spring Linux Vue

面试官:什么是自旋锁?自旋的好处和后果是什么呢?

风铃架构日知录

Java 程序员 后端 自旋锁 循环

Tapdata Cloud 场景通关系列:集成阿里云计算巢,实现一键云上部署真正开箱即用

tapdata

SQL常用语句

Geek_7ubdnf

sql

研讨会回顾 | UI自动化测试现场演示

龙智—DevSecOps解决方案

软件测试 自动化测试 测试软件

卷扩容业务失败了,在线等…

华为云开发者联盟

开发 华为云 企业号 1 月 PK 榜 卷扩容 磁盘扩容

定时任务cron

Geek_7ubdnf

Java

pip安装更换镜像

Geek_7ubdnf

Linux

4个MySQL 数据同步 Elasticsearch 的方案!

风铃架构日知录

Java MySQL elasticsearch IT 数据同步

聊聊 SpringMVC 是如何工作的?

风铃架构日知录

程序员 springmvc IT springboot

现代数据平台要实现自助用数,要解决的三个问题

华为云开发者联盟

大数据 后端 华为云 企业号 1 月 PK 榜

从状态机的角度async和await的实现原理

C++后台开发

多线程 linux开发 Linux服务器开发 状态机 C++开发

本地安装并创建MySQL数据库

Geek_7ubdnf

MySQL 数据库

GoLang的安装和使用

Geek_7ubdnf

golang

为什么建议SQL初学者尽量选择Web版SQL工具?

雨果

sql 数据库管理工具 SQL开发

选择LED显示屏电源的7个指南

Dylan

电源电路 LED显示屏 led显示屏厂家

软件测试/测试开发 | 代码覆盖率集成

测试人

软件测试 自动化测试 测试开发 代码覆盖率

软件测试/测试开发 | 接口测试价值与体系

测试人

软件测试 自动化测试 接口测试 测试开发

RTE 领域的发展,为视频编解码标准带来哪些新变化?丨Dev for Dev 专栏

声网

Java中restTemplate的使用

Geek_7ubdnf

Java

Linux安装Vue环境

Geek_7ubdnf

Linux Vue

华为云云筑·开发者年度盛典精彩回顾

华为云开发者联盟

云计算 开发者 华为云 数字人 企业号 1 月 PK 榜

openEuler资源利用率提升之道 05:虚机混部介绍与功耗管理技术

openEuler

数据库 Linux 操作系统 openEuler OpenStack

【Unity干货教程】如何实现Unity和Android原生互相调用?

3DCAT实时渲染

Unity 实时云渲染 Unity3D

【UE虚幻引擎】干货!UE修改分辨率的3种方法

3DCAT实时渲染

游戏开发 虚幻引擎 ue 游戏开发引擎

阿里云化身“智能云管”,助力中国联通首次实现大规模平台自主运维

云布道师

阿里云

SpringBoot基础知识

Geek_7ubdnf

Java springboot

如何使用 Node.js Stream API 减少服务器端内存消耗

华为云开发者联盟

后端 开发 华为云 内存消耗 企业号 1 月 PK 榜

内部分享讲解DevOps后,我再组织成文

MavenTalker

DevOps 研发管理 敏捷实践

来自开发者的点赞,龙蜥社区荣登“2022 中国技术品牌影响力榜单”

OpenAnolis小助手

开源 龙蜥社区 思否 榜单 技术先锋

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