本周讲解Google 16年发布的Wide & Deep推荐框架。论文可以从这里获取。
talentlei/PaperList
github.com
图标
文章只有4页,思路页很简单。文中设计了一种融合浅层(wide)模型和深层(deep)模型进行联合训练的框架,综合利用浅层模型的记忆能力和深层模型的泛化能力,实现单模型对推荐系统准确性和扩展性的兼顾。对提出的W&D模型,文中从推荐效果和服务性能两方面进行评价:
效果上,在Google Play 进行线上A/B实验,W&D模型相比高度优化的Wide浅层模型,app下载率+3.9%。相比deep模型也有一定提升。
性能上,通过切分一次请求需要处理的app 的Batch size为更小的size,并利用多线程并行请求达到提高处理效率的目的。单次响应耗时从31ms下降到14ms。
本文方法的TenforFlow实现已开源, 传送门点这里。
- Introduction
与传统搜索类似,推荐系统的一个挑战是如何同时获得推荐结果准确性和扩展性。推荐的内容都是精准内容,用户兴趣收敛,无新鲜感,不利于长久的用户留存;推荐内容过于泛化,用户的精准兴趣无法得到满足,用户流失风险很大。相比较推荐的准确性,扩展性倾向与改善推荐系统的多样性。
wide模型介绍
在目前大规模线上推荐排序系统中,通用的线性模型如LR被广泛应用。线性模型通常输入二进制的one-hot稀疏表示特征进行训练。比如特征“user_installed_app=netflix”为1,表示用户已安装netflix。交叉特征AND(user_installed_app=netflix,impresion_app=Pandora)表示既安装了netflix app同时又浏览过Pandora的用户特征为1,否则为0。wide模型可以通过利用交叉特征高效的实现记忆能力,达到准确推荐的目的。wide模型通过加入一些宽泛类特征实现一定的泛化能力。但是受限与训练数据,wide模型无法实现训练数据中未曾出现过的泛化。
deep 模型介绍
像FM和DNN这种Embedding类的模型,可以通过学习到的低纬度稠密向量实现模型的泛化能力,包括可以实现对未见过的内容进行泛化推荐。当模型query-item矩阵比较稀疏时,模型的会过分泛化,推荐出很多无相关性的内容,准确性不能得到保证。
W&D模型
文中提出W&D模型,平衡Wide模型和Deep模型的记忆能力和泛化能力。
- Google Play推荐系统
和大多数推荐系统类似,Google Play推荐系统主要分Retrieve和Ranking两个阶段。(youtube论文的Matching和Ranking,详情请戳这里。)
深度解析 youtube深度学习推荐算法
mp.weixin.qq.com
图标
Retrieve阶段负责召回候选集,缩减待排序item数据,文中是O(10)数量级。Ranking进行进行精排序,即最终展示的app list 顺序。 Query包括用户画像,上下文特征等内容;Item就是App。交互行为特征可能是点击和购买。
- Wide&Deep Learning
Wide部分
Wide部分就是基础的线性模型,表示为y=WX+b。X特征部分包括基础特征和交叉特征。交叉特征在wide部分很重要,可以捕捉到特征间的交互,起到添加非线性的作用。交叉特征可表示为:
Deep部分
Deep部分就是个前馈网络模型。特征首先转换为低维稠密向量,维度通常O(10)-O(100)。向量随机初始化,经过最小化随时函数训练模型。激活函数采用Relu。前馈部分表示如下:
Wide&Deep联合训练
在联合模型中,Wide和Deep部分的输出通过加权方式合并到一起,并通过logistic loss function进行最终输出。
联合训练和模型集成要进行区分,他们有着以下两点区别:
训练方式。 集成模型的子模型部分是独立训练,只在inference阶段合并预测。而联合训练模型是同时训练同时产出的。
模型规模。集成模型独立训练,模型规模要大一些才能达到可接受的效果。而联合训练模型中,Wide部分只需补充Deep模型的缺点,即记忆能力,这部分主要通过小规模的交叉特征实现。因此联合训练模型的Wide部分的模型特征较小。
联合模型求解采用FTRL算法,L1正则。深度部分用AdaGrad优化算法。
- 实验部分
模型在超过5千亿样本上训练。为了解决模型新样本训练和更新模型的延迟,文中设计了warm-starting方式进行模型的更新,即预先用上一个版本的向量和wide模型的权重进行初始化模型。模型加载后,空跑一轮确认在大规模服务期间无问题。有点类似为了解决tf程序懒加载而进行warm-up的空跑。
模型服务阶段将请求的batch size切分为更小的size,由多线程程序并行执行,缩短运行时间。
效果实验
实验通过离线AUC和线上ABtest进行评估。W&D模型的auc超过单纯的Wide和Deep模型。ABtest线上实验中,W&D模型比base部分高度优化过的Wide模型,Acquisition +3.9%,同样优于单纯的Deep模型。
性能试验
实验证明,切分一次请求的待排序的app的batch size,同时采用多线程并行请求切分后更小的batch size,达到了服务延时的缩短,从31ms缩短为14ms,符合了线上高峰时段服务响应时间的要求。