且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

阿里云与无邪科技合作:打造端到端的个性化推荐系统

更新时间:2022-08-22 13:10:42

背景介绍

无邪科技旗下产品「分配对象App」[5](参见图1)是致力于帮助走心、认真的95、00后单身年轻群体脱单的新一代“清新”恋爱社交平台,目前注册用户超过了300多万,覆盖全国34个省,301个城市,已经成功的帮助数千人脱单。

分配对象App团队认为如果要真正的为走心、认真的群体解决恋爱脱单问题,必须得做好两件事:

  • 第一件事,就是用户纯度的把关,分配对象App团队认为首先得保证用户都是单身的、有脱单意愿的、以脱为目的的,只有这样才能保证真正想要走心、认真找对象的用户更好的脱单。平台杜绝YP,坚决打击不走心、不认真的交友行为。
  • 第二件事,为用户推荐喜欢、合适的用户,来保证更高效率的遇见心仪的对象。「分配对象App」在产品功能选择方面,也选择了市面上匹配效率较高的基础交互方式“划动匹配”,作为其中的一种遇见心仪对象的方式,即上划心动、下划无感,相互心动配对聊天。

阿里云与无邪科技合作:打造端到端的个性化推荐系统

图1 分配对象APP

那么如何为用户在海量的候选人中推荐出心仪的对象,从而快速实现用户配对,对于平台和用户来说都是一件非常重要且同时具有挑战的事情。为了解决这个问题,阿里云ADBPG团队和无邪科技一起,开发打造了端到端的个性化推荐系统。当前系统通过分析、挖掘用户历史浏览行为,发现用户的个性化需求与兴趣特点,进行建模,主动将用户可能的心仪对象推荐给用户。当前系统采用经典的***Net[1]深度学习框架模型,结合ADBPG向量相似度检索引擎,搭建个性化推荐系统,可以快速准确地为用户提供心仪的对象。

个性化推荐系统应用

在这里,我们以给女生推荐男生的模型,展示一下新老算法的对比结果,这样可以更直观的了解个性化推荐系统的效果。

A算法:主要使用简单规则来进行推荐,通过对用户与候选人之间的距离,以及活跃时间,手动设置不同的权重,累加求和之后,从而推荐出相关的候选人集合。

B算法:采用***Net[1]深度学习框架,建立相关的模型,系统抽取了142个特征,包括用户的标签,用户的地理位置信息,用户浏览的历史记录,以及用户点击的时间,和用户的活跃度。当前用了40天的用户浏览记录来进行训练,我们以用户的点击率来作为学习目标,进行模型的训练。

同时我们做了线上A/B检测分析,A/B测试总共测试了两天,取了两天的均值。算法A的上划率是9.86%,算法B的上划率是14.92%,上划率提升了51.4%。

阿里云与无邪科技合作:打造端到端的个性化推荐系统

个性化推荐系统应用架构设计

推荐系统框架介绍

一般推荐系统实现了两阶段排序(见图2):

候选集筛选层(召回):从几百万的候选人的里面,通过深度学习框架以及向量ADBPG检索,选出几百个候选集合。

精排层(重排):通过更多的信息,完成几百个候选人的精排。

阿里云与无邪科技合作:打造端到端的个性化推荐系统

图2 两阶段推荐排序

首先,我们介绍一下候选集筛选层(见图3)。我们自底而上看这个网络,底层包括两部分信息(1)查询人的信息,包括学校,所在位置,爱好,上划次数,曝光次数,年龄,最近活跃时间等;(2)查询人的浏览候选人的记录,包括候选人的学校,所在位置,爱好,上划次数,曝光次数,年龄等。候选人的浏览的信息会根据时间设定不同的权重(参见公式1),设置权重的思路主要在于最近的浏览用户权重会设置的高一些,离得远的浏览到的用户权重设置小一些;当然,对这些原始数据我们还做了开方和平方等处理。

阿里云与无邪科技合作:打造端到端的个性化推荐系统

对于设置不同浏览权重的方法,也可以采用其他方式进行权重的设定4,从而进一步提升模型的准度。系统会将这些特征连接到一起,传给上层的ReLU神经网络。系统模型训练之后,会得到候选人的向量,这些向量会导入到ADBPG向量检索系统中。用户的向量,会根据当前的浏览记录等相关信息,通过深度学习框架(图2),实时生成。

阿里云与无邪科技合作:打造端到端的个性化推荐系统

图3 ***Net向量抽取框架

其次,对于精排层来说,***Net[1]会利用更多的信息,构造一套深度学习模型,来进行推荐。对于当前项目,我们为了提升客户之间的相互聊天的概率,将最近活跃的用户推荐给用户,我们对最后登录时间进行重排。完整的SQL参见程序1。ADBPG只需要简单的SQL,就可以实现浏览去重,向量查询,以及相关的重排。

程序1 推荐算法的SQL

SELECT *
FROM users_info
WHERE uid IN (
  SELECT uid
  FROM users_info 
  --方便用户去掉之前浏览的id
  WHERE uid NOT IN(SELECT unnest(array[1, 2, 99, 104]))
  --根据用户的当前的信息,转化成向量(ARRAY[1.0,0.3,0.5,0.6,0.1,0.2,0.3,0.9]),查询相关
  的候选集。
  ORDER BY l2_distance(feature_vector, ARRAY[1.0,0.3,0.5,0.6,0.1,0.2,0.3,0.9]) 
  LIMIT 50 
)
--按照活跃时间进行重排,将最近登录的候选集返回给用户,来提升两个人的聊天的概率。
ORDER BY login_at DESC
LIMIT 5

另外,***Net会需要计算查询人和候选人向量之间的点乘距离。因为ADBPG当前不支持点乘距离,所以我们将点乘距离转化成l2距离来进行计算(参考程序1)[3]。

推荐模型的训练,管理和上线

因为每天都会有新的用户加入,以及新的浏览记录产生,模型每天晚上都会重新采集数据,重新训练。因此,我们实现了全自动模型的训练,管理和上线,在这里进行详细介绍。当前系统包括两部分:模型训练框架和线上推荐框架。

模型训练框架包含了四个步骤(见图3):

(1)后台不断更新当天的增量日志信息,系统触发一次浏览,就会更新一条日志记录。系统定时将每日的日志更新上传到数据存储上(当前系统用oss进行数据存储[2])。

(2)系统定时触发模型训练。给训练服务器每日定时发送训练请求,系统开始进行训练,下载历史日志,以及增量日志,通过汇总日志记录生成训练数据,开始模型训练。

(3)模型训练好了之后,将训练数据,相关模型,以及合并之后的历史日志,上传到相关的oss上。

(4)模型训练好之后,还会做模型的准度验证。如果模型准度满足要求,生成新的版本,使用新的模型,更新向量提取服务器以及ADBPG中的候选人的向量。如果模型准度不满足条件,或报错,不使用新的版本,给相关系统发送报警信息。当前系统会保留最近的5个版本的模型,超过5个版本的模型会覆盖之前的模型。如果当前模型出现问题,可以快速回退到之前的版本。

用户通过我们的系统找到心仪的对象之后,就不会再使用当前的分配对象APP了。所以在训练的时候,我们选取最近40天的用户浏览数据来进行训练。我们也过滤了上划率和下滑率在95%以上的用户,这样做可以有效的避免一些不是真心选朋友,而是只是用于浏览的客户。同时,数据被分成了训练集和测试集来进行训练和测试。

阿里云与无邪科技合作:打造端到端的个性化推荐系统

图4 模型训练框架

模型上线推荐过程(见图5):

(1)发起推荐请求,将查询人的历史记录等相关信息发给向量提取服务。

(2)向量抽取服务提取出该查询人的特征向量。

(3)ADBPG向量检索引擎检索到相关的候选人的信息推荐给查询人。

阿里云与无邪科技合作:打造端到端的个性化推荐系统

图5 线上推荐框架

结尾

详细的ADBPG系统以及推荐模型,和模型上线框架请加我们的钉钉群,模型训练服务以及特征转向量服务会在近期开源出来,欢迎大家讨论和使用。

阿里云与无邪科技合作:打造端到端的个性化推荐系统

引用

[1] Paul Covington, Jay Adams, and Emre Sargin. Deep neural networks for *** recommendations. In RecSys, pages 191–198, 2016.

[2] oss, https://cn.aliyun.com/product/oss

[3] 欧式距离和点乘之间的关系,https://www.zhihu.com/question/19640394

[4] Guorui Zhou, Chengru Song, Xiaoqiang Zhu, Xiao Ma, Yanghui Yan, Xingya Dai, Han Zhu, Junqi Jin, Han Li, and Kun Gai. 2017. Deep interest network for click-through rate prediction. arXiv preprint arXiv:1706.06978 (2017). https://arxiv.org/pdf/1706.06978.pdf

[5] 分配对象app,https://www.fenpeiduixiang.com/

[6] Guorui Zhou, Na Mou, Ying Fan, Qi Pi, Weijie Bian, Chang Zhou, Xiaoqiang Zhu, and Kun Gai. Deep interest evolution network for click-through rate prediction. arXiv preprint arXiv:1809.03672, 2018.

来源:阿里巴巴数据库技术 微信公众号
原文链接:https://mp.weixin.qq.com/s/zqfCQZEjS9H8LkCG8g_2uQ