一篇特别好的将业务需求和算法结合的文章。是推荐系统业内最经典的深度学习架构之一。
1 商业模式:
a UGC模型下,不和爱奇艺等来源于头部内容,而是和bilibili,头部效应没有那么明显;
b 用于app端首页推荐,量级巨大,用户难以发现喜欢的内容。
2 目标
最大化用户观看时长,从而产生更多广告曝光机会。
召回:
使用用户完成观看作为正例,预测用户下一个观看视频(next watch),多分类
排序:
使用观看时间加权的是否点击,二分类
3 系统架构
3.1 候选视频的筛选,从几百万到几百个;
3.2 候选视频精排,相当于排序层。
4 召回层
原理
上几乎是word2vec在视频推荐上的迁移,一致性如下如下:
1 数据,用户观看视频序列和搜索序列(最近50个),预测下一个观看。
类比word2vec预测上下文,由于视频推荐业务特点paper 3.4(1 推荐丰富性,避免过拟合,将序列特征打散,e.g上下文推荐,‘大言不’后面肯定是‘大言不惭’,但是搜索‘赵四’,推荐不能全部都是舞王的内容;2 观看的顺序,序列剧从头开始,e.g 看完第一集推荐第二集,ok;看完第二集推荐第一集,not ok。因此预测next watch,否则会导致未来信息泄露和观看顺序的不对称。和nlp预测上下文不同。)
2 目的:获得embedding训练结果。
线上服务方法,使用embedding生成用户的embedding和视频的embedding。使用时最近邻搜索top N
3 优化方式:负采样处理。
召回特征
用户观看历史embedding
搜措辞embedding
地理属性
样本年龄
性别
5 排序模型
引入更多特征
排序特征
当前视频embedding
用户观看embedding
语言embedding
观看同频道时间(time since last watch):捕捉用户观看同频道时间
曝光次数:避免持续无效曝光
一些细节点:
1 为何无搜索embedding了。
2 添加了此视频id特征,目的是做二分类,和召回使用超大多分类区别。
3 训练使用加权逻辑回归,servering直接使用Odds:王喆给出的解释为Odd为每次曝光期望观看时间。
tips:对连续特征进行平方和开方处理
业务和算法结合
自己总结三个方面:
1 数据
每个用户等量训练样本。
2 label
召回部分预测next watch。考虑未来变量和视频召回协同过滤的非对称性。
3 损失函数
排序部分使用观看时长加权。以及server时使用Odd(约等于期望观看时长)
4 特征
对新视频偏好:使用example age,训练样本产生时间距离当前时刻的时间。反应内容新鲜程度。
作用机制:目的是偏向新视频。如何偏向?假设召回3天前视频和当前视频。更希望推荐当前当前视频给用户。从目的反推,没有改变视频embedding,而是改变用户embedding。u3 = f(x,3) u1=f(x,1),v3,v1:分别表示3天前行为embedding,当天行为embedding,3天前观看视频embedding,和当前观看视频embedding。假设u3和v3以及u1和v1相似度相同,推断时,u3由于example age改为0,u3随机变动,而u1和v1相似度不变,从而更偏向新视频。