Py学习  »  机器学习算法

王喆:我的实战课程「深度学习推荐系统实战」

AINLP • 3 年前 • 324 次点击  

编者按:刚好看到这篇文章,很好的介绍了王喆老师“深度学习推荐系统专栏”的来龙去脉,写得非常诚恳,文中作者还专门设立了 5000 元的勘误和反馈奖励,以便于将课程打磨的更专业。以下内容来自王喆老师的专栏,感兴趣的同学也可以扫描下方二维码看一遍课程目录,这样能加深你对课程的整体理解👇


未购买的同学,结算输入口令「Happy2021」

立省 ¥30,入手仅 ¥69



大家好,我是王喆。大概有三个月没有更新专栏了,不过这期间也没闲着,在极客时间开了一门课程叫「深度学习推荐系统实战」,今天跟大家讲讲这门课,感兴趣的同学可以接着往下看。


读过我的专栏或者我的那本技术书「深度学习推荐系统」的同学应该清楚,书中大部分的篇幅都在讲领域知识和模型原理。于是很多同学私信我说,这本书的知识体系讲得不错,但是没有代码,没有配套的实践,总觉得缺点什么。


去年年中的时候恰逢极客时间邀请,就一鼓作气,在「深度学习推荐系统」的知识框架下,开发了一个开源项目叫

SparrowRecsys https://github.com/wzhe06/SparrowRecSys,同时开设了这门课程,跟大家一起来一步一步地讲透深度学习推荐系统的原理,并且能亲手搭建起来一整套深度学习推荐系统。可以把这门课和这个项目当作书的实践版本,加入了更多技术细节的实现和讨论。



深度学习推荐系统开源项目SparrowRecSys


那这门课程中跟大家一起实现的SparrowRecsys推荐系统是什么样子的呢?我把它叫做麻雀推荐系统”,取“麻雀虽小、五脏俱全”之意,它利用了开源的movielens数据集,搭建起了包括:


Spark、Flink特征工程

TensorFlow深度学习模型训练

TensorFlow Serving模型服务

Redis在线特征数据库

Jetty Server推荐服务器

JS前端实现


在内的一整套深度学习推荐系统。虽然我不能说它能支撑起一个中大型公司的推荐系统,但是毫无疑问,它可以成为一个工业级推荐系统的种子项目。而这一切,我都希望跟你一起在这个课程中一起一步步搭建起来。


最后你实现的推荐系统会是这个样子。

SparrowRecSys的首页

SparrowRecSys的相似电影推荐页


在这些前端页面的背后,是我们实现的一个又一个深度学习模型。比如电影的相似推荐功能,我会使用各种Embedding based的方法,比如item2vec,graph embedding等等。对于推荐功能,我们会基于TensorFlow实现Embedding MLP,Wide&Deep,NerualCF,Two Towers,DeepFM,DIN等等深度学习模型,然后使用TensorFlow serving去进行模型服务。对于召回层、排序层这些推荐逻辑,我们也会全盘在基于Jetty的推荐服务器中实现。整个项目整体的技术架构是下面这个样子的:

SparrowRecSys的技术架构



这可能不止是一门课


课程从2020年10月份开始以来,已经有接近4000名同学一起学习。跟我写「深度学习推荐系统」那本书的时候一样,事情一开始,这个事情就不是我一个人的事情了。大家讨论的热情远远超过我的想象,其实从跟某种意义上来说,讨论的重要性甚至大于这门课本身。我在这里贴了15个课程中讨论过的问题,我自己在这些讨论中获益很多,你也可以看看是不是对你有帮助,如果有的话,可以一起参与进来。


1.假如我们是做商品推荐,假如商品频繁上新,我们的物品库会是一个动态的,Embedding技术如何应对?

2.为什么深度学习的结构特点不利于稀疏特征向量的处理呢?

3.采用Node2Vec算法时,当前节点v到下一个节点x的概率在经过进出参数和返回参数调整后是否需要做概率的归一化操作,使节点v到所有下一节点的概率为1呢?

4.在一个高并发的推荐服务集群中,负载均衡的策略有哪些?

5.如果基于兴趣标签做召回,同一个物品,有多个标签,而用户也计算了出了多个兴趣标签,那么怎么做用户的多兴趣标签与物品的最优匹配呢?还有物品的标签有多层,那么怎么利用上一层的标签呢?

6.关于EGES的训练,试了下,由于电商领域商品维度非常大,即使hash后也很大,这导致训练非常慢,这个一般怎么解决啊?

7.对于局部敏感哈希算法,b是0到w间的一个均匀分布随机变量,避免分桶边界固化。这是什么意思呢?是说可以通过调整b来形成另外一个一个hash函数?

8.想问下在线服务是否会涉及一些推荐的机制策略?比如流量控制,多样性,疲劳度优化等等?

9.对于双塔模型来说,把物品侧的 Embedding 和用户侧的 Embedding 存起来,就可以进行线上服务了。但如果把一些场景特征,比如当前时间、当前地点加到用户侧或者物品侧,还能用这种方式进行模型服务吗?为什么?

10.DeepFM的图示中,输入均是类别型特征的one-hot或embedding,请问是因为特征交叉仅适用于类别型特征的交叉吗?

11.对于DIN和DIEN这种包含N个历史商品的模型,如果用户历史商品数小于N,那么这些位置应该如何去填充呢?如果用户商品数大于N,是否是选择最近的N个商品呢?

12.离线 Replay 这个评估方法,跟我们之前讲过的增强学习有什么相似之处吗?它们两个还有什么更深层次的关系吗?

13.对于P-R 曲线和 ROC 曲线,它们的优缺点分别是什么呢?在正负样本分布极不均衡的情况下,哪个曲线的表现会更稳定、更权威一点?

14.使用 GraphSAGE 是为了生成每个节点的 Embedding,那我们有没有办法在 GraphSAGE 中加入物品的其他特征,如物品的价格、种类等等特征,让最终生成的物品 Embedding 中包含这些物品特征的信息呢?

15.当前模型在考虑用户历史行为信息时,只考虑了用户的点击行为,能否将特定的曝光行为也考虑进去呢?


上面这十五个问题只是课程讨论中的一小部分。对于任何课程中的问题,我都会一一解答,因为于我于你都有收益,期待和你在这门课中继续技术问题的讨论。



课程受众


下面我想谈一谈这门课的受众,既然是收费课程,就得对大家的选择负责,不想让大家有收获不足的感受。所以具体来讲,这门课欢迎三类同学订阅:


1.在校缺乏实践经历,但未来希望从事推荐系统方向的同学

2.刚工作一到两年,还没有构建起推荐系统知识架构的初级工程师

3.希望转行的到推荐、广告、搜索方向的其他领域的工程师


不欢迎比较资深的相关方向工程师订阅,因为课程中的内容主要是构建知识和实践体系,不会针对一个点,比如Spark的性能优化,TensorFlow各类api的使用方法等有太过深入的讨论,而是会从体系层面让你有工业级推荐系统各个模块的“初体验”。如果你的期望是成为某一个方向的技术专家,显然43讲的课程是不可能覆盖所有方向的深度内容的,这门课可能并不适合有这样诉求的比较资深的工程师。


当然由于水平和精力有限,课程中免不了各种错误和一些不足,希望大家能够给予指正,后续会不断改进。跟我在出「深度学习推荐系统」那本书时候的做法一样,我会从课程报酬中设立一个5000元的勘误和反馈奖励基金,大家可以在下面的知乎问题中进行回复,回答中每一个被采纳的勘误和有价值的反馈会得到50元的奖励,到时候我会私信联系大家发微信红包。

https://www.zhihu.com/question/437552262/answer/1661863047

这是一位同学的反馈。



自己的体会


最后谈谈自己做这门课程的体会,刚开始我其实是抱着一个比较轻松的态度去做这门课,想着把「深度学习推荐系统」这本书的内容做一个更深入的讲解就可以了。但随着课程的进行,同学的热情反馈,还有极客时间编辑老师们极端认真的态度,让我觉得应该让这门课有更多的干货输出,更完备的实践体系。


正好我自己也有计划去创建一个全新的开源项目让业界能够有一个比较通用的包含数据处理,模型构建,线上服务等各个模块的通用推荐系统。所以硬是咬着牙在原有30节的基础上,扩展到43节,并且做出了一个我认为比较完备的深度学习推荐系统SparrowRecsys,我自己对这个结果是非常满意的。


因为在工作中我同时lead了几个推荐系统项目,压力也非常大,所以课程基本上都是在晚上10点到凌晨2点这个时间段完成的,撰稿,录音,开源项目开发,所有的一切能按期完成是让我自己也是非常骄傲的,也希望能够不让你失望。


最后,如果你已经是这门课的学员,或者我的书的读者,认为购买课程或者书获得了超过成本的收益,希望你能够点赞支持,让更多需要的同学看到这门课,在此谢谢大家。



最后是福利时间极客时间有限时优惠,大家可以趁这段时间订阅课程享受 3块钱的优惠,还没订阅的同学抓住机会哦👇



原价 ¥99,结算输入口令「Happy2021」

立省 ¥30,入手仅 ¥69


点击【阅读原文】¥69元拿下深度学习👇

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/106873
 
324 次点击