2020-06-23-第8章 深度学习推荐系统的前沿实践

67章略, 说的是比较基础的工程实现和评测方法, 评测方法离线比较常用的是holdout 和 auc ndcg, 在线使用AB实验系统做线上评测.
第8章是比较有价值的部分, 主要介绍了youtube airbnb facebook ali的一些经典模型,这里主要记录下youtube和airbnb的模型方法,这两个方法对于算法工程师来说有比较大的启发意义, facebook里边需要记住的是负采样之后的参数矫正公式即可

q是矫正后的ctr, p是模型预估的ctr, w是负采样的频率.

好了,下面是正题

airBnb: 基于embedding的实时推荐系统

airbnb是一个短租网站, 主要的item是房源, 它的特点是用户的交易频率低. airbnb的大佬们,设计了比较精致的embedding方法来表达用户的长短期偏好

短期兴趣embedding

数据: 对于短期兴趣,将用户的以30min为间隔进行且session, 并且每个item必须停留30s以上才被纳入序列.
模型: 使用w2v的方法,但是实际的目标函数进行了丰富:

\begin{array}{rl} \arg \max _{\theta} \sum_{(1, c) \in \mathbb{D}_{p}} & \log \frac{1}{1+\mathrm{e}^{-v_{c}^{\prime} v_{l}}}+\sum_{(L, c) \in D_{n}} \log \frac{1}{1+\mathrm{e}^{v_{c}^{\prime} v_{l}}}+\log \frac{1}{1+\mathrm{e}^{-v_{l}^{\prime} v_{l}}} \\ & +\sum_{\left(l, m_{n}\right) \in D_{m_{n}}} \log \frac{1}{1+\mathrm{e}^{v_{m_{n}}^{\prime} v_{l}}} \end{array}

公式中分为4个部分, 第一个部分是窗口中心的正样本loss, 第二部分是负采样的loss(注意这里没了负号),第三个部分是如果这个序列有booking操作那么被book的房源是一个正样本, 第四个是按照区域进行负采样的样本.

与w2v不同的是多了第三个和第四个公式,这是从业务角度出发的, 考虑了实际场景中的地域和booking因素.实际效果也是好的.

长期兴趣embedding

我们知道这种租房网站的实际交易序列是及其稀疏的,一年也没几个, 直接用这个序列进行学习是低效的. 这里为了丰富序列信息,对用户和房源进行了上卷操作,如下图:

item分桶

用户分桶

将所有的item和user进行大类的桶, 用user桶和item桶替换user和item这样能够构建更丰富的序列表达用户. 实际训练时为了将user和item的embedding在一个空间,是混在一块进行训练的(作者的猜测).

排序

得到embedding后, 没有直接将相似的结果作为候选的结果,而是将各个粒度的候选房源与用户行为相关的emb的相似度作为特征使用gbdt进行了打分排序得到结果. 特征如下

image.png
image.png

youtube推荐

youtube推荐在之前的emb中介绍了一部分召回, 这里只着重说一下值得借鉴的亮点:

  1. 召回模型中, 训练时使用softmax. 线上预测时使用nn网络的输出实时得到user的emb, softmax的权重矩阵是item的emb离线入库. 通过比较高效的相似计算方法通过user emb得到比较相似的item emb候选.
  2. 排序部分使用了这几类特征:
  • 当前候选视频的emb
  • 用户观看过的最后N个视频emb的平均值
  • 用户语言的emb和候选视频的emb
  • 用户上次观看桶频道视频的时间
  • 视频已经曝光给该用户的次数
    同时,对于连续型的特征进行了平方和开方的处理, 引入非线性.
  1. 排序模型在目标上,使用了样本加权
  2. 样本处理上,加入了example age, 是指此样本的生产时间与现在的时间差,例如这条样本是24hour前获取的,那么特征就为24. 在线上做预测时这个特征值为0. 起到了时间消偏的作用.

你可能感兴趣的:(2020-06-23-第8章 深度学习推荐系统的前沿实践)