美图个性化推荐

Deep Learning在美图个性化推荐的应用实践 - Likeli的文章 - 知乎
https://zhuanlan.zhihu.com/p/87466510

一、工作目标

个性化推荐的首要目标是理解内容。从内容本身的视觉、文本以及特定场景下用户的行为来理解社区里可用于推荐的内容。接下来是理解用户,通过用户的基础画像 ( 年龄,性别等 )、设备画像 ( OS,机型等 ),以及用户的历史行为来挖掘其兴趣偏好。

再理解了社区的内容和用户之后,才是通过大规模的机器学习算法进行精准推荐,千人千面地连接用户与内容,从而持续提升用户体验,促进社区繁荣。

二、挑战

  • 海量
  • 实时
  • 长尾:用户分布长尾,新用户占比超过27%;曝光分布长尾,关注<<点击<<曝光

三、 召回端

召回端的 Item embedding 技术和召回模型,用于从百万级别的候选集里挑选 TOP 500个用户最感兴趣的候选集。相对于召回端,排序端的深度排序模型能够融合多种召回来源并进行统一排序,排序模型能包容规模更大的细粒度特征,实现更加精准的推荐。美团线上部署的召回技术主要包括 Item2vec,YouTubeNet,以及双塔 DNN

1.Item2vec

将item进行embedding,当用户点击了某个item,找到相似的item用于排序

用户行为(如点击率、收藏率)+图片视觉(如图片质量、清晰度)+文本特征(关键词、实体词)

基于 skip-gram+negative sampling 来做的 item2vec 。输出端是与输入端的 target item 邻近的64个 item。64相对于 NLP 里取的5-6个是比较大的,这是因为用户的点击序列不像自然语言那样具有严格的局部空间句法结构。在比较大上下文窗口中,更容易找到和目标 item 相似的上下文 item,模型更容易学习。

Item2vec 学习出来的 item 向量是美图多种向量检索式召回策略的底层数据,包括实时兴趣,短期兴趣等等。比如当用户点击了某个 item,系统会实时地通过向量内积运算查询相似的 item 并插入到召回源头部,用于下一轮的排序。

2.YouTubeNet

YouTubeNet 在学习 item 向量的时候考虑了用户向量。从模型的优化目标上可以看出,是在给定用户向量的情况下,从候选池中筛选出该用户最感兴趣的 item 列表。

模型训练用的label是用户最近点击过的 item 列表,特征包括两部分,一部分是用户更早之前点击过的列表 ( clicked_item_list ),另一部分是用户的 demographic 统计特征,如年龄、性别等。引入上述用户的个性化信息之后,模型学习 user embedding 和 item embedding,并离线导出。线上使用时利用 FAISS 工具离线计算好每个用户的 top N 候选 item 集,提供给排序算法使用。同时实时采集用户不断变化的点击item数据,计算用户侧向量。

实时计算用户侧向量的工作,一共分了两部分:第一部分是离线部分,这里模型一天一更新。离线部分基本流程和上一段所述相同,模型训练完之后导出 item 向量并在 FAISS 中构建好索引。第二部分是实时部分,这一部分借助 kafka,实时采集用户点击行为数据并构建 clicked_item_list 特征,接着请求离线训练好的模型,计算出用户侧向量,最后从 FAISS 中查询的候选集,输出给排序服务。

3.双塔DNN

联合用户行为和item侧特征进行召回。双塔 DNN 模型构建用户侧 embedding 的方式和 YouTubeNet 是一样的:先给用户的点击行为序列,年龄性别等稀疏的特征做 embedding,再经过几个简单的全连接层,得到用户侧向量。对于 item 侧特征,双塔 DNN 引入另一个子网络来学习,学习方式和用户侧特征是一样的。

4.总结

Item2vec 学习出来的 item 向量具有很好的相似性,作为底层数据,服务了多个召回策略, 在美图具有非常广泛的应用。包括实时兴趣,短期兴趣等等,覆盖了10%以上的曝光占比。YouTubeNet 和双塔 DNN 则分别引入用户侧和 item 侧特征,有监督地学习用户最感兴趣的 item 候选集

四、排序端

1.NFM模型

为什么选用NFM模型?1.Wide&Deep, DeepFM, DCN 等从模型的复杂度上看没有比 NFM 拥有更强的预估能力,计算效率也没有明显优势。离线评估和线上实验上都没有得到正向效果。2.xDeepFM 和 NFFM 离线指标提升了,但是计算复杂度很高。此外 NFFM 模型参数量大,内存是个瓶颈。导致它俩无法大规模落地。

2.NFwFM模型

是在FwFM模型的基础上演化出来的,将FwFM引入到深度模型里面。

特征按照逻辑分为3个大模块:用户侧特征 ( 包括年龄、性别等 ),item 侧特征 ( 包括 item id,item 标签等 ) 以及上下文侧特征。

将 FwFM 分解成了3个子模块:第一个模块是线性加和模块 ( 上图中 S 表示 ),不区别 field 学习的特征;第二个模块是矩阵分解模块 ( 上图中的 MF 部分 ),用来学习 field 粒度下的特征组合,比如 user field 和 item field 的二阶交叉;第三个模块是 FM 模块,用来学习 field 内部 feature 粒度的特征组合。

多目标NFwFM

你可能感兴趣的:(美图个性化推荐)