写点什么

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

王喆 编著

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

评论

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

同步计数器设计与建模

timerring

FPGA

Elasticsearch dynamic_templates 实战 通用配置

alexgaoyh

elasticsearch dynamic_templates index template

Flomesh Ingress 使用实践(三)多租户 Ingress

Flomesh

命名空间 多租户 ingress Ingress Controller

ITSM | Atlassian被Gartner评为IT服务管理平台魔力象限的领导者

龙智—DevSecOps解决方案

Atlassian ITSM Gartner

简单好上手!1分钟带你体验Apipost

叶小柒

云小课|GaussDB(DWS)数据存储尽在掌控,冷热数据切换自如

华为云开发者联盟

开发 华为云 数据存储 企业号 2 月 PK 榜 华为云开发者联盟

react源码分析:babel如何解析jsx

flyzz177

React

react源码中的生命周期和事件系统

flyzz177

React

【IntelliJ IDEA】idea常用快捷键汇总

No8g攻城狮

IDEA intellij IntelliJ IDEA

A100 买不到了,只有小显卡怎么训大模型

MegEngineBot

深度学习 开源 大模型 显卡、gpu MegEngine

Spring Data + DDD = 王炸!!

程序知音

动态防御|零信任安全的自动化枢纽

权说安全

网络安全 零信任 动态防御

区块链DEFI质押挖矿系统开发流程丨土狗币智能合约系统开发源码方案

I8O28578624

一文详解TensorFlow模型迁移及模型训练实操步骤

华为云开发者联盟

人工智能 华为云 昇腾AI 企业号 2 月 PK 榜 华为云开发者联盟

量化Python交易系统开发技术,合约量化系统开发源码部署方案

I8O28578624

chatgpt背后的人工和智能

刘旭东

ChatGPT

前端leetcde算法面试套路之树

js2030code

JavaScript LeetCode

Node.js 应用全链路追踪技术——全链路信息存储

vivo互联网技术

nodejs OpenTracing zipkin

高性能存储SIG月度动态:ublk完成POC、dsms-storage在Anolis OS上成功适配

OpenAnolis小助手

技术 高性能存储 龙蜥社区 sig 月报

用javascript分类刷leetcode21.树(图文视频讲解)

js2030code

JavaScript LeetCode

前端leetcde算法面试套路之堆

js2030code

JavaScript LeetCode

KCL 与其他 Kubernetes 配置管理工具的异同 - Helm 篇 - Helm 篇 [一个自研编程语言能做什么?(系列 3)]

Peefy

Kubernetes DevOps 编程语言 #开源

我们从 CircleCI 安全事件获得的3个经验教训

SEAL安全

安全 软件供应链 企业号 2 月 PK 榜 端点保护 恶意软件检测

搞懂设计模式——代理模式 + 原理分析

京东科技开发者

jdk 代理 cglib 框架 企业号 2 月 PK 榜

携程MySQL迁移OceanBase最佳实践|分享

OceanBase 数据库

数据库 oceanbase

【IntelliJ IDEA】idea中的插件之一:Free Mybatis plugin跳转插件的使用(方便在Dao接口和Mappper XML文件之间进行切换)

No8g攻城狮

插件 IntelliJ IDEA

用 AI 取代人工?或许 LLMs 可以给你答案

鼎道智联

#人工智能

从历代GC算法角度刨析ZGC

京东科技开发者

ZGC JVM GC算法 垃圾回收算法 企业号 2 月 PK 榜

react源码中的协调与调度

flyzz177

React

直呼牛逼!阿里最新SpringBoot进阶笔记涵盖了SpringBoot所有骚操作

程序知音

Java ssm springboot Java后端 Java进阶

Flink Table Store 典型应用场景

Apache Flink

大数据 flink 实时计算

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