腾讯深度预估模型在应用宝推荐系统中的探索
导语 | 点击率(click-through rate, CTR)预估是互联网平台的核心任务之一。近年来,CTR预估技术从传统的逻辑回归,到深度学习DeepFM, Wide&Deep, DIN, DCN等算法落地,经历了突飞猛进的发展。本文旨在以深度CTR预估模型为基础,探索在应用宝推荐场景下的算法优化。文章作者:赵程,腾讯算法研发工程师。
一、业务背景
点击率(click-through rate, CTR)预估的本质是对用户/商品建模,进而计算用户的点击概率。模型的衍变经历了从经典机器学习LR、FM再到深度学习DNN、Wide&Deep、双塔、DIN等的百花齐放。本文将针对应用宝的推荐场景,展开CTR模型探索优化。
应用宝推荐业务主要包括首页推荐、游戏推荐等,与常见信息流推荐(新闻/视频)不同,本场景下的数据分布具有明显的差异:
- App曝光频次差异巨大:头部app曝光占比很高,长尾app曝光严重不足;
- 用户行为极其稀疏:用户月下载中位数、平均数较少。
面对着以上问题,当前的推荐模型主要面临着以下挑战:
- 在训练样本稀缺的情况下,如何保证低频特征(e.g., 长尾appid)的充分学习;
- 鉴于用户行为极其稀疏,如果更精准地捕捉用户的兴趣偏好。
本文主要针对以上挑战,在当下深度CTR预估模型的基础上展开模型优化探索,通过引入更长周期用户行为和app描述文本信息,并进一步挖掘用户行为兴趣,有效促进了推荐效果提升。
二、基本框架
应用宝的整体推荐流程如下图所示,从底层数据流抽取特征,经过召回、排序以及重排,最终应用到实际业务场景中。本文主要针对排序模型优化。
排序模型我们以业内广泛使用的Wide&Deep模型作为baseline,其中,Wide侧具有记忆能力,能够记住高频特征组合,达到准确推荐的目的;Deep侧为了弥补交互矩阵稀疏的不足,将特征映射到低维向量表示,经过多层神经网络,使模型具有泛化能力。
三、多行为融合训练
在我们的场景中拥有很多appid 相关的行为特征,例如用户历史点击、下载、安装等,基本的Wide&Deep框架会将每个行为特征映射到单独的embedding,并单独更新。
由于每一类特征的用户行为记录十分稀疏,这种操作会造成低频特征embedding的训练不充分。
针对于此,我们设计了基于appid embedding共享的多行为融合训练机制,体现在模型中为Deep侧的appid embedding聚合共享。
由于appid类的特征较多,在实际选取时,我们主要利用了用户的实时行为特征和短期行为特征,避免了由安装/卸载记录带来的数据噪音。
Wide&Deep中embedding参数约占总量的95%,通过特征共享,参数量从2800w降低到了2000w,在模型保存和训练速度方面均有一定的优化。
效果方面,我们主要考虑离线auc和copc(pcvr/cvr,反映模型打分偏差),经过特征共享的模型效果在auc上基本持平,而在copc指标上得到了明显的优化,一定程度上缓解了模型的打分偏差。
由于我们的特征中用户行为只涵盖了15天内近30个app的记录,对于低频app依然没有充足的学习样本,那么应该如何优化呢?
四、引入更长周期用户行为
一种自然的想法便是引入更长周期的用户行为记录。近年来,以DeepWalk, Graphsage为代表的图模型能够较好地捕捉用户的长周期行为特点。
我们根据用户过去30天内的下载行为进行构图,考虑到用户在同一天中的下载序列无明显的先后关系,构建了基于共线下载的无向图,接着训练随机游走模型生成预训练的deepwalk appid embedding,作为先验信息指导排序模型优化。
在共享appid embedding的基础上,我们尝试了多种训练策略。
- 固定初始化:直接将预训练的deepwalk appid embedding赋值给共享appid embedding;
- 初始化微调:在1的基础上进行参数微调;
- 特征蒸馏:引入辅助loss,度量学习得到的embedding与预训练embedding的相似度(向量点积)。
从效果来看,只有初始化微调的方式会带来一定的效果提升,说明经过deepwalk训练的embedding和wide&deep训练的embedding在向量分布上是有差异的。
但目前为止auc的提升还很微弱,即使我们引入了30天甚至更久的用户行为数据,对于一些低频app依然无法充分学习,那是否还有外部信息可以利用呢?
五、引入APP描述文本信息
Deepwalk的训练本质是从用户行为信息中发掘app间的相似关联,若直接从app自身的属性信息(e.g., 标题、描述文本)出发,是否也能发现相似的规律?
近年来,以BERT为代表的预训练语言模型在文本表示方面取得了巨大的成功,我们将每个app的标题和描述文本作为输入训练tag分类模型,得到一个高维(768维)的向量表示,尝试指导Wide&Deep中的appid embedding学习。
由于Wide&Deep模型规模的限制以及前期的经验,我们的embedding size往往很小(30维/60维),更高的维度会导致效果下降,所以需要探索一种有效的降维方式。
这里我们主要尝试了外部pca降维和内部通过全连层自动学习的降维方式,实验表明,在网络中进行端到端自动学习的降维方式更有效果。
六、预训练embedding融合
为了更直观地展现embedding分布,我们对deepwalk和bert预训练的embs分别进行了tsne可视化。
下图中不同的颜色表明不同的一级类目,二者均呈现了明显的类目空间聚集性,同类目的app自然地聚集到了一起。
同时两者的embedding分布也具有空间差异性,比如,bert可视化图中的左下角部分是视频类app,而deepwalk是出行类app。
鉴于二者的差异性,我们的做法是将其分别做投影变换,投影到同一向量空间中,这里投影变换的参数随网络一起学习。融合embedding的方式则为拼接或相加。
模型的整体框架图如下:
从实验效果来看,向量投影拼接的方式具有更好的表现:
为了进一步展示加入deepwalk/bert外部预训练embedding的效果,我们接着进行了tsne可视化,其中左边为wide&deep appid embedding的可视化表示,右边是融合embedding的可视化表示,可以发现app的分布从杂乱无序学到了呈现明显的聚簇,具有了一定的可解释性。
通过这个实验,我们已经知道app embs的初始化不同会对模型结果产生影响,那么它们分布的具体聚簇是否与模型效果有着严格的相关性,还需要更多的探索求证。
**�
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E8%85%BE%E8%AE%AF%E6%B7%B1%E5%BA%A6%E9%A2%84%E4%BC%B0%E6%A8%A1%E5%9E%8B%E5%9C%A8%E5%BA%94%E7%94%A8%E5%AE%9D%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E6%8E%A2%E7%B4%A2/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com