王树森学习笔记

1. 推荐系统基本概念

1. Embedding

1. 召回

fun-rec ch2.1.1

1. ItemCF

介绍及实战

  • 物品相似度的公式
  • 得到物品相似度后如何预测用户对物品的喜爱程度?
  • 如何对热门物品进行惩罚
  • 什么时候适合用 UserCF,什么时候适合用 ItemCF?
  • 协同过滤的缺点是什么?什么思路可以缓解?

2. Swing 算法

  • 公式
  • 解决什么问题

3. UserCF

  • 公式
  • 如何降低热门物品权重
  • 可以做哪些离线运算?
  • 有哪些缺点?

4. 算法评估

  • recall
  • precision
  • coverage(覆盖率)

4. 隐语义模型与矩阵分解

  • 什么是隐式分解?什么是潜在因子?
  • 矩阵分解算法

5. Airbnb 召回

介绍

  • 训练 listing embedding 的 objective(四个)
  • 如何引入 booked list 信息的?
  • 如何解决新 list 的冷启动问题
  • 如何解决数据稀疏问题?(没太看懂,可以再看看 Airbnb如何解决数据稀疏问题

6. YouTubeDNN

YouTubeDNN
召回阶段:

  • 训练目标是什么?or 训练任务是什么(分离线和在线)
  • 主要的特征处理有哪些
  • Example Age 是什么?为了解决什么问题,有什么用,怎么做的
  • 什么是不对称的浏览问题?YouTubeDNN 的解决方式是什么?
  • 怎么选负样本的?选取的时候怎么处理热门 item?
    排序阶段:(YoutubeDNN 的排序逐渐被新的深度模型替代,但其召回仍很经典常用)
  • 训练目标是什么?(离线和在线)
  • 为什么用点击率?
    王喆十大问题
  • 为什么召回 seriving 的时候不直接用离线的模型,而是要做近邻搜索?为什么 video embedding 和 user embedding 来源不一样?(或者说两个分别怎么生成的?)

在线上推理时,对所有 item 过模型计算概率开销太大。因此可以存储得到的 video 的 embedding,推理时用最近邻搜索。DNN 模型的输入是<user, context>,结合上下文,将最后一层的输出作为 user vector。

  • 在 video embedding 的时候为什么把长尾的 video 直接用 0 向量替代?有无更好方法?

长尾数据 embedding 训不好,不如直接丢弃或者置 0

  • 为什么在一些特征,比如#previous impressions,要用开方和平方处理后当作三个特征输入模型?

获取特征的非线性表示

  • 测试集的选取为什么不用随机留出法(random holdout),而是用用户最近的一次观看行为做测试集?

防止数据穿越问题,避免用未来数据预测历史数据(其实和时序这边类似,测试集一般选取的训练集后面的序列)

  • 为什么排序输出层要用 weighted LR,而不是直接 LR?

王喆-YoutubeDNN的serving
Weighted LR 使用用户观看时长作为权重,使得 serving 的时候计算的就是时长的期望

7. 样本选择

  • 召回、排序时分别可以怎么挑选正负样本?(SENet

1. 排序

1. 特征交叉

1. Factorized Machine(FM)

  • FM 的原理/公式

2. DCN

  • 应用场景
  • DCN 作用
  • DCN 网络结构/代码

3. LHUC

  • 应用于推荐系统的哪一过程?
  • 为什么用户特征神经网络最后一层 sigmoid 输出要乘 2?

1. Wide&Deep

  • 为什么 google 的 wide&deep 使用带 l1 正则化的 FTRL 作为 wide 部分的优化,而使用 AdaGrad 作为 deep 部分的优化?answer
    • wide 部分对长尾问题可能也有一定优势,deep 很难训好长尾的数据

1. DIN

DIN

1. 行为序列

  • 怎么对用户历史行为进行建模?
  • DIN 模型做了什么改进?
  • DIN 模型的优劣
  • SIM 模型针对什么问题做了什么改进?

1. 其他

2. L1 正则与 l2 正则公式。为什么 l1 更容易使模型稀疏

answer