引言
最近复习以前学习过的比较干货的paper,整理成一个系列,会陆续更新。做个笔记供以后翻阅。请勿转载。
- FTRL
- GBDT+FTRL
- Wide&DeepModel
- Deep Neural Networks for YouTube Recommendations
Youtube推荐的难点
- 数据规模大;
- 对时效性要求强,用户实时行为和新上传的video;
- 数据噪声大,没有真实的ground truth。只有用户的implicit反馈信号。而且,内容缺少必要的拓扑结构信息。
评论:这些基本上也是大公司面临的常见问题。
贡献&亮点
- 将deeplearning引入到推荐领域的match(candidate generation model)&rank(ranking model)框架。
- 使用逻辑回归对expected watch time而不是点击率建模。
match
把推荐当作一个多分类问题,学习user和video的embedding向量。
评论:计算量会很大,对推荐引擎的架构要求很高,facebook开源的faiss一定程度加快该领域的应用进展。
model结构
image有用策略:
- embedding策略:sum, component-wise max, avg, etc.
- 机器学习是从历史学习规律来预测未来,如果特征做的不好,模型很容易泛化不好。表现就是对于new content的预估分会很低或者很高,youtube的经验是将“Days Since Upload”特征加入后,预估分会更准。
- label其实存在比较明显不对称性,比如看电视剧,一般是从头看到尾,这就需要在特征和label上做好时序的处理。
- 对用户的sample进行均匀采样,保证每个用户都有一定的训练数据,防止过度活跃用户dominate训练集。
- 因为搜索页面的点击样本不是很好的推荐结果,所以需要把搜索页面的点击样本去掉。
评论:这些经验比较干货。
train
样本的选取对于模型训练来说至关重要。为了加快训练速度,文章采用importance weighting的方法来进行负样本采样。然后基于google的tensorflow平台进行训练。
image评论:样本采样是比较常用的技术,但是不得不佩服google的底层计算平台的强大。
评论:相比于模型的复杂度,特征的作用更加明显,而且两者可以做到1+1>2。
predict
评论:文章没有对candidates的产生做表述,可能是故意藏着不说,这里一般深藏玄机。
rank
排序是对于match的一次精排,这个部分往往比较明确,工业界已经耕耘多年,已有相对成熟的工程体系。
模型结构
image有用的特征工程:
- 最重要的信号特征是刻画用户过去交互过的items和与之相似的items。比如“用户过去在这个频道看过多少视频?”,“最近一次看这个topic的时间”,以及用户过去在需要预估item的相似items上的行为。
- match和rank的联动很重要,把match来源和score放入rank模型会有很大收益。
- 引入用户的实时交互信号,实时更新推荐结果非常重要。
- 参与embedding的离散特征只保留topN点击的特征,减少模型复杂度。
- 神经网络对于特征的scale和distribution很敏感,连续特征归一化到[0,1)的均匀分布对于模型的收敛有很大的帮助。
- 引入连续特征的sublinear变形特征也有很大的帮助,比如x^2。
image评价:整体采用embedding+dnn的网络架构,特征工程实践是干货。底层计算基础设施很重要。
评价:2层基本上足够了
对观看时间建模
如果不考虑观看时间,一个正常的分类模型很好理解。用户点击的视频是正样本,用户没有点击的视频是负样本。其中,点击视频还有一个用户观看时间。为了将用户观看时间引入到模型中,使用weighted logisitc model来刻画,用户点击样本权重是用户观看时长,用户未点击样本的权重保持为1。
odds = frac{\sum(T_i)}{N-k}, 其中N是训练样本个数,k是正样本个数,T_i是观看时长。等价变换得到odds = frac{E(T)}{1+P},其中P=k/N,如果k远小于N,那么odds=E(T),也就是expected观察时长。
理论完备,注意使用的时候这里的近似条件。
网友评论