学习总结

文章目录

零、推荐系统框架

一般推荐系统分为召回、粗排、精排和重排几个部分。

  • 召回
  • 粗排
  • 精排:由于精排模型一般比较复杂,基于系统时延考虑,一般采用point-wise方式,并行对每个item进行打分。这就使得打分时缺少了上下文感知能力。用户最终是否会点击购买一个商品,除了和它自身有关外,和它周围其他的item也息息相关。
  • 重排:
  • 重排序阶段对精排生成的Top-N个物品的序列进行重新排序,生成一个Top-K个物品的序列,作为排序系统最后的结果,直接展现给用户。重排序的原因是因为多个物品之间往往是相互影响的,而精排序是根据PointWise得分,容易造成推荐结果同质化严重,有很多冗余信息。一般在精排层我们使用AUC作为指标,但是在重排序更多关注NDCG等指标。
  • 重排序在业务中,获取精排的排序结果,还会根据一些策略、运营规则参与排序,比如强制去重、间隔排序、流量扶持等、运营策略、多样性、context上下文等,重新进行一个微调。
  • 重排一般比较轻量,可以加入上下文感知能力,提升推荐整体算法效率。比如三八节对美妆类目商品提权,类目打散、同图打散、同卖家打散等保证用户体验措施。重排中规则比较多,但目前也有不少基于模型来提升重排效果的方案。

一、RecHub框架

【推荐系统】RecHub推荐系统项目学习_多任务


datawhale rechub项目学习:https://github.com/datawhalechina/torch-rechub

复现的论文:https://www.wolai.com/rechub/cNwGzNJpaouirvs3b8qxN

1.1 项目结构

  • 接受pandas的DataFrame、Dict数据输入,上手成本低
  • 高度模块化,支持常见Layer,容易调用组装成新模型
  • LR、MLP、FM、FFM、CIN
  • target-attention、self-attention、transformer
  • 支持常见排序模型
  • WideDeep、DeepFM、DIN、DCN、xDeepFM等
  • 支持常见召回模型
  • DSSM、YoutubeDNN、YoutubeDSSM、FacebookEBR、MIND等
  • 丰富的多任务学习支持
  • SharedBottom、ESMM、MMOE、PLE、AITM等模型
  • GradNorm、UWL、MetaBanlance等动态loss加权机制
  • 聚焦更生态化的推荐场景
  • 冷启动
  • 延迟反馈
  • 去偏
  • 支持丰富的训练机制
  • 对比学习
  • 蒸馏学习
  • 第三方高性能开源Trainer支持(Pytorch Lighting)

1.2 数据层

(1)特征类

【推荐系统】RecHub推荐系统项目学习_应用场景_02

1.3 模型层

通用layer:

【推荐系统】RecHub推荐系统项目学习_深度学习_03


例子介绍:

【推荐系统】RecHub推荐系统项目学习_多任务_04


​initializer​​​是初始化方式;​​vocab_size​​表示词表向量大小等等。

注:
(1)几乎所有模型都会用到embedding层和MLP层,可以看具体模块代码。
(2)项目中对数值型特征、类别型特征命名为sparse、dense,在很多教程中也会命名为continous、category特征等。

1.4 训练层

【推荐系统】RecHub推荐系统项目学习_应用场景_05

总结rec hub框架结构:

【推荐系统】RecHub推荐系统项目学习_数据_06

二、精排模型

2.1 DeepFM模型

python run_criteo.py --model_name deepfm

模型代码所在部分:​​from torch_rechub.models.ranking import WideDeep, DeepFM, DCN​​。

2.2 DIN模型

  • DIN基于注意力机制,利用激活单元计算出用户对于不同历史商品的注意力权重,针对当前广告商品,作出更有针对性的预测。该激活单元将历史行为商品的 Embedding和候选广告商品的 Embedding作外积得到向量(是法向量)后送入MLP。这里的激活单元实际上在计算广告和历史行为 相关性,即广告物品与历史物品的相关性,也可以使用DeepFM中特征交叉方法。
  • 序列模型更注重对序列类行为的模拟和预测。如兴趣进化序列模型 DIEN 对用户购买兴趣进化过程(演化过程)的模拟。应用场景如电商平台的下次购买,视频网站的下次观看,音乐 App 的下一首歌曲等。DIEN其中改进的部分的输出是一个 h’(T) 的 Embedding 兴趣向量。
  • DIEN模型生成兴趣向量的结构是:Behavior Layer行为序列层(等同于embedding层)、Interest Extractor Layer兴趣抽取层、Interest Evolving Layer兴趣进化层。后两层都用到序列模型,比如LSTM、GRU、RNN和这两年很火的transformer。
  • DIEN也不是什么银弹,它有效的应用场景是:一是应用场景存在“兴趣的进化”。二是用户兴趣的进化过程能够被数据完整捕获。最适合业务特点和数据特点的模型才是最合适的

在阿里巴巴的应用场景下,用户的兴趣进化路径能够被整个数据流近乎完整的保留。作为中国最大的电商集团,阿里巴巴各产品线组成的产品矩阵几乎能够完整地抓住用户购物过程中兴趣迁移的过程。当然,用户有可能去京东、拼多多等电商平台购物,从而打断阿里巴巴的兴趣进化过程,但从统计意义上讲,大量用户的购物链条还是可以被阿里巴巴的数据体系捕获的。

【推荐系统】RecHub推荐系统项目学习_深度学习_07

三、召回模型

3.1 DSSM双塔模型

双塔模型的鼻祖。

3.2 YoutobeDNN模型

【推荐系统】RecHub推荐系统项目学习_应用场景_08

四、多任务模型

后面补看赖神之前的多任务直 播。

【推荐系统】RecHub推荐系统项目学习_多任务_09

4.1 ESMM模型

4.2 MMOE模型

五、负样本相关

负样本:https://zhuanlan.zhihu.com/p/456088223

(正负样本的划分):https://www.zhihu.com/question/334844408

附:时间规划

  • 初级目标:使用在不同的数据集上使用模型训练,基于torch-rechub封装好的数据层和训练层,使用pytorch复现模型。
  • 高级目标:不掉包直接torch复现模型,甚至复现更多的推荐算法模型。

任务信息

截止时间

06月13日正式开始

Task01:熟悉Torch-RecHub框架设计与使用方法(2天) 直播讲解

周一周二(14号截止)

Task02:精排模型:​​DeepFM​​​、​​DIN​​​(5天) ​​代码​

周三~周日,6月19日周日截止

Task03:召回模型:​​DSSM​​​、​​YoutubeDNN​​​(4天)​​代码​

周一~周四,6月23日周四截止

Task04:多任务模型:​​ESMM​​​、​​MMOE​​​(4天)​​代码​

周五~周一,6月27日周一截止

Reference

[1] https://github.com/datawhalechina/torch-rechub
[2] ​​​推荐系统(十四)多任务学习:阿里ESMM(完整空间多任务模型)​​​ [3] ​​推荐系统(十五)多任务学习:谷歌MMoE(Multi-gate Mixture-of-Experts )​