课程地址:https://developer.aliyun.com/course/2052
一、排序模块在推荐系统中的位置
在如何构建企业级推荐系统系列课程的第一课中,我们介绍了如何去设计整个企业级的推荐系统架构。在第二课中,我们介绍了怎么去理解召回算法以及召回算法的一些意义。在本节课中,我们分享一下推荐系统的排序算法,以及它的一些架构特点。首先,我们再回顾一下这张图,确定一下排序算法在推荐系统中的一个位置。一个用户进入到平台,会发现有很多商品,得把用户可能喜欢的商品先挑出来。我们通过召回模块,进行一个初筛,缩小排序模型的一个受众的范围。
召回模块从潜在的超大规模的item中筛选用户可能喜欢的较小比例的item。比如说平台上有10万个item,用户进来之后筛选出500个他可能会喜欢的。接下来通过排序模块根据他的喜好程度对item进行排序。从这500个item里怎么挑出用户最喜欢的东西,怎么挑出用户第二喜欢的东西,这时候需要一个排序的算法模型。它会针对这500个商品和用户的一些特点,即用户特征进行一个排序。
二、排序算法介绍
我们今天介绍一下排序算法究竟有哪些种类,排序的模型该怎么训练,它的系统架构是怎么样的。排序模型非常多,随着深度学习的发展,整个的排序算法已经从浅层的算法逐渐往深度学习迁移。目前比较经典的排序算法还是我列的这4种,如下图所示。首先,逻辑回归是应用非常广泛的一种算法。它是目前业内最经典的线性二分类算法,特点是容易上手,对于计算力要求低,模型可解释性好。第二,FM算法近一两年来,在很多客户的场景中都得到大规模的应用,效果也不错。它是通过内积的方式增强特征的表现力。第三,在LR基础上通过GBDT和特征编码增强数据特征的可解释性。第四,DeepFM算法也是现在被应用得非常多的一个深度学习的算法,它把深度学习和经典的机器学习算法做一个结合。如果大家刚开始尝试搭建一套推荐系统,建议先从简单的算法去尝试,后续再逐渐的往更复杂的模型迁移。当然,这些算法都已经内置到了PAI平台,已经可以插件化的应用。
三、离线排序模型训练架构
接下来讲一下排序模型该怎么训练产生,训练过程分为离线训练和在线训练,首先讲离线排序。
离线训练用的是T-1的数据,也就是说,今天业务上用的模型是通过今天以前的数据训练出来的。好处是可以把历史的大量数据几乎集合到一个数据仓库里,然后基于整体的全样本的特征和数据进行离线的训练,并且再做一个离线的验证。这样的话,生成的模型已经离线验证过了是没问题的。第二天直接把它推到线上去用,可以保证一定的安全性和效果。这是一个离线的训练模型的架构。目前几乎所有的客户都采用离线排序模型的训练方案。如果你想做实时化的训练,会有比较大的架构挑战。
四、在线排序模型训练架构
我们今天重点放在在线模型训练这块。相比于离线训练,在线训练提供什么好处。离线训练毕竟使用的是T-1或者T-2的数据去做的,没有对线上实时产生的行为数据进行利用,对于数据的时效性利用相对较差。比如说,有这样的一个场景,今天我的整个平台只对14岁以下的少女做某个运营活动,而平台上充斥了大量的年龄段的客户,整个平台的交互行为都变了,这个时候你的模型还是T-1去做的,将无法对线上业务做一个及时的感知。这个时候,通过在线训练就能比较好的解决这个问题。在线模型训练的流程如下图所示。在线模型训练意味着我可以用实时线上传输化的数据,然后用我们的实时机器学习模型训练框架去做训练。在线训练虽然数据是实时进来的,但你的模型并不是从0开始的。而是说我从离线先训练好这个模型,我站在离线模型的巨人的肩膀上,再往上去优化。这就是在线排序模型训练的一个框架。它有3个特点。第一,它是基于Flink框架实现的流式模型训练能力。第二,它是基于实时生成的模型去实时评估模型效果。第三,它具备线上模型回滚和版本管理的能力。你要达到这三个标准,才可以构建一个完整的在线模型训练的架构。
五、参考资料
最后,介绍一下我们给大家准备的一些资料。这第一个link它对应的是PAI团队结合自身过去几年在推荐领域的一些探索,总结了140页的推荐业务的动手实践文档。没有机器学习背景的人基于我们这些文档,也可以在一周之内搭建一套企业级的推荐系统,大家如果感兴趣可以去用一下。另外这一个是PAI的产品地址。