推荐算法工程师需要掌握哪些核心技能点? 您所在的位置:网站首页 推荐算法工程师需要掌握哪些知识 推荐算法工程师需要掌握哪些核心技能点?

推荐算法工程师需要掌握哪些核心技能点?

2023-12-21 16:28| 来源: 网络整理| 查看: 265

有幸在去年4月份,被分配到鹅厂推荐组,接触了国内顶尖的算法团队,截止现在自己做推荐也有半年时间了,如果说以前自己的成长速度是线性成长,那么在这半年时间,自己的成长可以说是指数级成长。

鉴于目前工作上越来越驾轻就熟,逐渐从小白状态脱离出来,回答一下这个问题,算是给自己这半年算法工作的一个记录。

先给大家奉上,一名合格的推荐算法工程师所需要掌握的各项知识点和技能图:

图片

如题主所说,推荐系统涉及到的知识点“大而杂”,是一项复杂的工程,那么一条完整的推荐系统学习进阶路径,需要包含哪些方面呢,我认为至少需要包含以下6大方面:

**1、数学基础:**微积分、线性代数和概率论

**2、机器学习:**需要掌握一些基础的术语和概念,以及常见的模型。

**3、深度学习:**TensorFlow和PyTorch这两大框架至少掌握一个,然后深度学习基础知识,比如训练算法、激活函数、正则化等内容也是必须掌握的。

**4、数据挖掘与分析:**熟练掌握相关工具包,包括numpy、pandas、matplotlib、Scikit-Learn等等。

**5、大数据:**掌握Hadoop、Spark两大生态,不过这部分不用学的太深,建议大数据这块可以先掌握到会用的层次,当做工具即可。

**6、推荐系统理论和实战:**主要包括推荐系统五大环节——召回、粗排、精排、重排和冷启动,其中每一个环节都涉及大量的知识点,此外除了掌握理论外,还需要进行必要的项目实战。

**其中,机器学习、深度学习、推荐算法理论和实战这三块是核心知识,也是面试中的重中之重。**而像数学、数据挖掘和分析、大数据这些算是基础知识,面试中考察相对比较少,后续等你参加工作后,再反过头来学习也是完全可以的。

以上6大模块,每一个模块都涉及大量的知识点需要学习,我本人推荐大家通过看一些经典的书籍来啃透推荐系统,因为,看书是效率最高的学习方式。

至于每个模块所涉及到的一些经典必读书籍,我已经帮大家总结好了,点击下方链接,就能领取。

我这里分享的书单,包含数学、机器学习,深度学习、数据分析、大数据和推荐算法等硬核内容,对我当年自学推荐系统有很大帮助,这些资料都是经过我本人验证过的,个人认为非常适合新手学习的学习资料,在这里免费分享给大家。

(后续我还会持续不断更新推荐系统的优质干货资料,大家方便的话可以点个赞鼓励下~

**PS:**网上关于推荐系统的资料特别多,包括很多已经出版的书籍,质量也参差不齐,大家学习时候一定要注意辨别,以免浪费宝贵学习时间和精力投入。

接下来详细讲一下每个模块所涉及到的内容。

一、数学

主要是微积分、线性代数、概率论这三门课。

1、微积分

通常情况下,机器学习需要得到一个函数(模型,或者说假设)来预测未来的数据。既然是函数,那自然就离不开微积分了。微积分为我们研究函数的性质提供了理论依据,同时它也是学习概率论、最优化方法等后续课程的基础,是整个高等数学的基石。

重点掌握函数的求导法则(特别是链式法则),以及泰勒公式。这对后续的梯度下降法,牛顿法,拟牛顿法等优化算法的推导至关重要!

2、线性代数

机器学习算法的输入、输出、中间结果通常为向量、矩阵、张量。这些都属于线性代数里的知识。

重点掌握向量、矩阵含义及其数学运算公式。

3、概率论

对于机器学习来说,概率论是一种重要的工具。如果将机器学习算法的输入、输出看作随机变量/向量,则可以用概率论的观点对问题进行建模。使用概率论的一个好处是可以对不确定性进行建模,这对于某些问题是非常有必要的。另外,它还可以挖掘变量之间的概率依赖关系,实现因果推理。

重点掌握常见概率分布、概率公式。

总结

数学好是入门机器学习的优势,但并非关键。因为数学知识量太庞大了,花太多时间在其上,容易打击学习积极性。另外做算法一般分两种:理论模型和实际应用,前者的行业title是算法研究员,主要发paper、提出新的模型或者优化方法,所以对于数学能力要求很高。后者的行业title是算法工程师,致力于把模型应用于数据上,攫取商业价值,对于数学能力要求并不高。往往大部分人都属于后者,我个人也是后者。熟悉不同算法的应用场景、掌握模型落地工程技术,才是我们更应该投入精力的地方。

推荐资料:

《DeepLearning》,又名「花书」,被誉为深度学习领域圣经。它前面有必备数学知识的介绍,讲得挺不错的。

B站搜索微积分、线性代数、概率论关键词,会有很多教学视频,随便选取时长较短的看看即可。

二、机器学习

人工智能、机器学习、深度学习关系如下:

图片

我们一般说机器学习都是指除了深度学习以外的机器学习,也称为传统机器学习。虽然近几年深度学习越来越火,但是很多领域还是在使用机器学习,并且学好机器学习,对于AI算法基础和知识广度都有很大提高。这里可以先给大家罗列一些必备的基础知识:

首先要知道一些基础的术语和概念,比如有监督与无监督,训练集,验证集与测试集,经验误差与泛化误差,方差与偏差,过拟合与欠拟合等,再比如比较重要的一些模型性能度量方法(混淆矩阵,精确率,召回率,auc,roc等), 再比如经典的评估方法(留出,交叉验证,自助等)

其次是经典的模型。机器学习模型非常多,全部掌握不现实,我给大家罗列几个经典,也是面试中常考的模型:逻辑回归、SVM、树模型、集成学习、朴素贝叶斯、K-Means聚类、PCA。(EM、最大熵、概率图这些考的少,能了解是加分项)。

在学习过程中,各个模型是相互联系的,不要孤立去分析单个模型。比如:逻辑回归,我认为是最基础、也最重要的模型:

图片

逻辑回归=线性回归+sigmoid激活函数,从而将回归问题转换为分类问题

逻辑回归+矩阵分解,构成了推荐算法中常用的FM模型

逻辑回归+softmax,从而将二分类问题转化为多分类问题

逻辑回归还可以看做单层神经网络,相当于最简单的深度学习模型

通过逻辑回归由点及面,就能演化出如此多模型。

再比如树模型。我们把以决策树为基础的一系列模型统称为树模型,也是AI比赛中最常用的模型。

决策树经历了三次改进,ID3、C4.5、CART,主要区别在于一个根据信息增益划分特征、一个根据信息增益率、一个根据基尼指数。

随机森林=决策树+Bagging集成学习

GBDT=决策树+AdaBoost集成学习

XGB是陈天奇2014年提出,相当于GBDT的工程改进版,在实用性和准确度上有很大提升。比如:使用泰勒二阶展开近似损失函数,支持处理缺失值、在特性粒度上并行计算等等特性。

LGB是微软2016年提出,对XGB进行了改进,使用单边梯度采样算法减少不必要的样本;在寻找最优分割点时采用直方图算法使计算代价更小;支持类别特征…

CGB是Yandex2017年提出,对类别特征进行了更完美的支持。

所以学习模型,要由点及面,层层递进。这样不仅方便理解,也有利于归纳总结,同时还能锻炼搭建知识体系的能力。

推荐资料:

如果是一个机器学习小白,那么推荐两个入门视频, 吴恩达或者李宏毅的ML视频(B站上都有),先快速过一遍,了解机器学习是什么。

如果有了一定的机器学习基础,就需要去进阶。建议是看书与高质量文章。推荐两本书:周志华的《机器学习》、李航的《统计学习方法》这两本书,可以好好先研究一本,注意这里是研究,一本通了,另一本也就差不多。如果发现看一遍很难看懂,这是正常现象,随着后面实践经历慢慢变多,再看一遍,会有很多新的感悟。

注意:学习过程中一定要跟着实战,否则知识很难真正理解。

三、深度学习

前面也提到了,深度学习本属于机器学习,但是鉴于其发展迅速、应用越来越广泛,所以单独拿出来说。深度学习每年新模型、新技术层出不穷,一味追求新技术不可取,要先打好基础。比如:对于一个简单的全连接神经网络,包含训练算法(正向传播、反向传播),激活函数(sigmoid、ReLU、Maxout、softmax等),正则化(L1和L2、Dropout、提前早停等),优化算法(随机梯度下降、Momentum、Adagrad、Adam等)

掌握了基础后,再根据自身领域学习相关的模型。大部分人找工作属于这三个领域:

计算机视觉(CV):卷积神经网络(CNN)及其改进。

自然语言处理(NLP):循环神经网络(RNN)及其改进,Transformer、Bert等。

推荐算法:Embeding、Wide & Deep及其改进。

推荐资料:

李沐《动手学深度学习》https://zh-v2.d2l.ai/

邱锡鹏《神经网络与深度学习》https://nndl.github.io/

吴恩达《深度学习》https://www.bilibili.com/video/BV1FT4y1E74V

《DeepLearning》,又名「花书」,被誉为深度学习领域圣经。

TensorFlow、pytorch官网是最好的参考资料。如果英语不好,那么可以看看下面的资料:

Pytorch学习笔记:https://blog.csdn.net/wuzhongqiang/category_10024538.html

《30天吃掉那只TensorFlow2》:https://github.com/lyhue1991/eat_tensorflow2_in_30_days

《20天吃掉那只Pytorch》:https://github.com/lyhue1991/eat_pytorch_in_20_days

PyTorch深度学习快速入门教程:https://www.bilibili.com/video/BV1hE411t7RN

四、数据挖掘与分析

熟练使用相关工具包:numpy、pandas、matplotlib(seabron是matplotlib的简化版)、Scikit-Learn。完成数据的可视化、分析以及特征工程。工具包的学习建议边用边学,可以先看一些中文教程整体了解一下工具包的使用。在具体使用的时候,如果忘记了可以去对应工具包的官网查看详细的文档。

除了熟悉数据分析工具以外,其实更需要的是数据分析的方法,我觉得最好的学习方式就是看开源竞赛的方案,因为在开源方案中,作者会写很多他们分析问题的思路,以及对可视化结果给出的他们认为的正确观点。

推荐资料:(加我:xtyifan1019,领取以下参考资料)

英文教程首推官网,中文教程推荐Datawhale的开源项目

numpy中文教程:https://github.com/datawhalechina/powerful-numpy

pandas中文教程(这份文档可能比官方文档还适合学习):https://github.com/datawhalechina/joyful-pandas

matplotlib中文教程:https://github.com/datawhalechina/fantastic-matplotlib

《Hands-on-Machine-Learning-with-Scikit-Learn》用sklearn工具实现各种机器学习模型

五、大数据

在实际工业场景中,我们面临的都是海量数据,也就是所谓的大数据。再用上面提到的MySQL数据库、numpy、pandas等工具是不行的。这个时候就需要专业的大数据处理工具:Hadoop、Spark生态。有的同学想从这些生态的基本原理学起, 如果有时间,知其所以然是好的,但往往我们需要兼顾算法和大数据,时间并不是很充足,所以建议大数据这块可以先掌握到会用的层次,当做工具即可。

常用的:首先是Hive查询,也就是用HQL进行一些表数据的基础查询,这个和SQL有些类似,另外一个,就是sparkSQL以及spark的DataFrame, 这些相关操作常用来做数据分析和处理,处理完毕之后,写回到Hive表里面。其次,遇到复杂的处理逻辑,就需要写原生spark脚本去跑数据了。

推荐资料:

这一块实操性特别强,所以建议先看视频,跟着视频一步步来:

尚硅谷大数据Hadoop 3.x:https://www.bilibili.com/video/BV1Qp4y1n7EN

尚硅谷大数据Spark教程从入门到精通:https://www.bilibili.com/video/BV11A411L7CK

推荐系统算法基础+综合项目实战:https://www.bilibili.com/video/BV1qK4y1479r

六、推荐算法理论和实战

终于到了核心部分。再次强调一下,上面的知识不要求全掌握,既不需要,也不现实。如果为了快速入门,掌握机器学习、深度学习基础后就可以直接进入这一节了。

在实际的工业推荐系统中,一般会有四个环节:

图片

我梳理了这四个环节中用到的主流技术,整理成了如下导图:

图片

上图就是整个推荐算法的核心内容。这里先放出这个导图,一是让大家对推荐算法有个整体框架,二是告诉大家后续文章的内容:打算通过解读论文的形式,结合自身在工作中接触的工业场景,把里面的模型和知识点一一为大家解读。

这个系列我取名:"热追"推荐算法。主要包括以下四个部分:

1、召回

召回的目的是根据用户部分特征,从海量物品库快速找到小部分用户感兴趣的物品交给精排,重点是强调快。主要有两大类召回方式,一类是策略规则,一类是监督模型+embedding。

其中策略规则,往往和业务场景是强相关,不同的场景会有不同的召回方式,这部分知识"特异性"比较强,一篇文章讲不清楚。

这里可以简单讲讲比较普适的方法,也就是监督模型+embedding。该领域比较主流的方法, 比如FM系列(FM,FFM等), 用户行为序列,基于图和知识图谱系列,经典双塔系列等。这些方法看似很多很复杂,其实本质上还是给用户和物品打embedding而已,只不过考虑的角度方式不同。

这一块的内容,几乎每个模型都对应着经典paper,大家如果要学习推荐系统,这些经典paper是必须要去阅读学习的,并且在阅读过程中,对于一些重要模型,要会进行代码复现,并应用到一些真实的实践任务中。

2、粗排

有时候召回环节返回的物品数量太多,精排速度跟不上,所以需要在召回和精排之间加一个粗排环节,通过少量用户和物品特征,简单模型,来对召回的结果进行个粗略的排序,在保证一定精准的前提下,进一步减少往后传送的物品数量,这就是粗排的作用。

粗排用到的很多技术与召回重合,粗排不是必需的环节。如果你的候选数量非常少,那连召回都不需要了;如果你的精排能吃的下召回的输出,那可以考虑实验对比是不是需要粗排。但是假如不加粗排,总感觉欠缺点什么。有时候甚至会出现粗排输出候选变少,整个系统反而涨点的情况。像这样的情况出现,就说明整个链路设计存在不合理的地方。

3、精排

精排阶段使用你能想到的任何特征,可以上你能承受速度极限的复杂模型,尽可能精准地对物品进行个性化排序,强调准确性。这一块关键技术主要分为三大块:

CTR预估:LR、FM家族、自动特征交叉的DNN家族。

多任务学习(Multi-Task Learning,也称为多目标学习)。多任务是很常见的,比如视频推荐中,用户喜欢、收藏、评论。而不同的任务可能会互相冲突,互相影响,造成模型学习起来十分困难。所以这一块是重难点,也是很多大公司的研究重点,更是未来的一大发展趋势。但好在这里每个模型或者技术有对应paper,所以和召回一样,这里依然可以利用解读paper的方式,把这些模型和技术娓娓道来。

排序打分公式融合。

4、重排

考虑到上面的三块是核心,这块没有详细的展开整理,并且这块和业务场景策略强相关,很依赖工作经验,目前了解的也不是很多。后续先解读几篇重排模型的经典论文,等学习了相关技术,再来不断完善这块。

5、冷启动

冷启动问题是指对于新用户和新商品,他们没有历史交互数据,无法分析历史喜好,这个时候我们应该如何做推荐。冷启动技术会穿插到召回或者重排中,有时也会和上面推荐系统做成并行的两路,专门应对冷启动场景。

推荐资料:

首先当然是后续自己写的文章啦哈哈哈。主要是因为搞算法的人学习模型都是参考论文,这也是为什么我后面分享这一块内容都是以解读论文的形式。

一定要推荐一本书籍的话,我选王喆的《深度学习推荐系统》。这本书高屋建瓴的介绍了推荐系统整体架构,发展历史以及未来趋势,还有各种推荐模型的演化之路,很适合前期用来当做科普。但是具体的模型并没有深入讲解,还是得自己去看论文解读。

再就是一些我认为很优秀的开源项目:

好友整理的 https://github.com/zhongqiangwu960812/AI-RecommenderSystem

另一个好友潜心整理,star已过千 https://github.com/ZiyaoGeng/Recommender-System-with-TF2.0

6、推荐系统实战项目

理论一定要与实践结合,否则就是空中楼阁。在这里给大家推荐datawhale打造的一个新闻推荐项目:https://github.com/datawhalechina/fun-rec

项目规划图如下:

图片

阶段一

物料池的构建:

Mysql基础及python调用(简介、安装、简单的命令行基础、python如何调用mysql数据(增删改查,排序))

MongoDB基础及python调用

Redis基础及python调用

Scrapy基础及新闻爬取

新闻画像构建(存入MongoDB)

前端展示:

Vue简介及基本使用(对于我们做推荐算法的,了解一些前后端交互之类的就够了)

前后端如何交互

用户注册界面

新闻展示(内容、时间、点赞次数,收藏次数)

可以保留用户的行为(user_id, news_id, action(点赞、收藏、阅读),time)

阶段二

有了前端及物料池后,就需要设计简单的冷启动规则来收集用户的行为数据以及用户的基本属性特征。这一部分数据可能需要参加开源学习的同学来一起帮忙完善这个数据集,这样数据才是有意义的。

收集数据

在服务器上部署数据收集的系统(新闻数据+用户行为数据)

冷启动策略

冷启动

用户侧

物品侧

系统侧

阶段三

这个阶段就是推荐算法大展身手的地方啦。我们可以把上一节学到的推荐算法,在这里尽情尝试,吹拉弹唱任你挑选。

离线评估指标

多路召回

特征工程

规则类

模型类

召回评估

排序

DeepFM

排序评估

规则+重排

阶段四

最后就是一些运营类知识,保证系统的高可用性

推荐服务,前后端交互(flask)

任务调度

系统部署

规范类修改

以上便是全文了。不知不觉码字这么多,整理不易呀,虽然嘴上说不在乎点赞到底有多少,但其实内心还是希望点赞高一点的,因为好看啊!人总不能拒绝内心真实的想法吧。所以脸皮厚一点跟大家说:求大家来个赞,鼓励一下,也扩散给更多的对推荐算法感兴趣的同学,帮助到更多的人!!~

关于我

你好,我是对白,清华计算机硕士毕业,现大厂算法工程师,拿过8家大厂算法岗SSP offer(含特殊计划),薪资40+W-80+W不等。

高中荣获全国数学和化学竞赛二等奖。

本科独立创业五年,两家公司创始人,拿过三百多万元融资(已到账),项目入选南京321高层次创业人才引进计划。创业做过无人机、机器人和互联网教育,保研清华后退居股东。

我每周至少更新三篇原创,分享人工智能前沿算法、创业心得和人生感悟。我正在努力实现人生中的第二个小目标,上方关注后可以加我微信交流。

期待你的关注,我们一起悄悄拔尖,惊艳所有在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有