Wide & Deep Learning for Recommender Systems

Wide & Deep Learning for Recommender System是Google发表在 DLRS 2016 上的文章。Wide&Deep模型的核心思想是结合线性模型的记忆能力(Memorization)和 DNN 模型的泛化能力(Generalization),从而提升整体模型性能。

一个推荐系统的整体架构由两部分组成,检索系统(或者说候选生成系统)排序系统(排序网络)

当user发出一个 query 的时候,首先用检索(retrieval) 的方法对大数据集进行初步筛选,返回最匹配 query 的一部分物品列表,这里的检索通常会结合采用机器学习模型(machine-learned models)和人工定义规则(human-defined rules)两种方法。从大规模样本中召回最佳候选集之后,再使用排序系统对每个物品进行算分、排序,分数记为P(y|x)y是用户采取的行动(点击或购买),x是特征,包括用户特征(国家、语言、年龄等)、上下文特征(今天周几、时段早晚、设备信息等)、影响力特征(物品本身的评价、上线时间等)。

推荐系统的主要挑战之一,是同时解决MemorizationGeneralization

  • Memorization

面对拥有大规模离散sparse特征的CTR预估问题时,将特征进行非线性转换,然后再使用线性模型是在业界非常普遍的做法,最流行的即「LR+特征叉乘」。Memorization 通过一系列人工的特征叉乘(cross-product)来构造这些非线性特征,捕捉sparse特征之间的高阶相关性,即记忆历史数据中曾共同出现过的特征对。

特征叉乘其实本质上就是一种特征组合,组合的原因是组合特征拥有比单个特征更好的性质(或者说对目标帮助更大)。下面是一个例子:

容易看出,上图的两类样本点是线性不可分的,那么我们常规的方法是对特征进行非线性映射,然后再利用线性模型进行拟合。一种可行的方法是将特征(记为x,y)划分成\{x < 0, x >= 0\}\ \&\ \{y < 0, y >= 0\}(记为\{X_n, X_p\}\{Y_n, Y_p\})从而得到一个代表象限的特征z=\{(X_p, Y_p), (X_n, Y_p), (X_n, Y_n), (X_p, Y_n)\}。以z为特征建模,上述分类问题就迎刃而解了。

论文中的例子如下:AND(user_installed_app=netflix, impression_app=pandora)是特征叉乘得到的二阶特征,当且仅当一个用户下载了Netflix后又点击了Pandora的时候此特征才为1。这个特征揭示了Netflix和Pandora之间的关联。

Memorization的一个典型模型就是使用大量的原始sparse特征和叉乘特征作为输入的LR模型,很多原始的dense特征通常也会被分桶离散化构造为sparse特征。这种做法的优点是:模型可解释高,实现快速高效,特征重要度易于分析,在工业界已被证明是很有效的。这种做法的缺点是:1、需要大量人工进行的特征工程;2、容易过拟合。当我们进行细粒度的特征叉乘时,我们的模型实际上可以视作将训练集记忆下来,过拟合非常严重,较粗粒度的特征叉乘可以一定程度上缓解这个问题;3、无法捕捉训练数据中未曾出现过的特征对,即泛化能力较差。

  • Generalization

Generalization(泛化)可以理解为相关性的传递(transitivity),会学习新的特征组合,来提高推荐物品的多样性。泛化往往通过学习 low-dimensional dense embeddings 来探索过去从未或很少出现的新的特征组合来实现,通常的 embedding-based model 有 Factorization Machines(FM) 和 Deep Neural Networks(DNN)。特殊兴趣或者小众爱好的用户,query-item matrix 非常稀疏,很难学习,然而 dense embedding 的方法可以得到对所有 query-item pair 非零的预测,这就会导致 over-generalize,最终推荐不怎么相关的物品。这点和 LR 正好互补,因为 LR 只能记住很少的特征组合。

综上所述,Memorization根据历史行为数据,产生的推荐通常和用户已有行为直接相关的物品。而Generalization会学习新的特征组合,提高推荐物品的多样性。 论文结合两者的优点,提出了一个新的学习算法 Wide & Deep Learning,其中Wide & Deep分别对应Memorization & Generalization。

Wide & Deep 模型的架构如下:

对一个 Logistic Regression 问题来说,模型给出的预测如下:

P(Y=1 | \mathbf{x})=\sigma\left(\mathbf{w}_{\text {wide}}^{T}[\mathbf{x}, \phi(\mathbf{x})]+\mathbf{w}_{\text {deep}}^{T} a^{\left(l_{f}\right)}+b\right)

其中Y是二分类的样本标签,\sigma是 sigmoid function ,\phi(x)是原始特征x叉乘得到的新特征,b是偏差项,\mathbf{w}^T_{wide}是 wide model 中的参数权重,\mathbf{w}^T_{deep}是 deep model 中作用在最后一个隐藏层输出上的参数权重。

具体到论文中的 Google Play 上的具体实验模型,其结构如下:

需要注意的是,我们的模型是联合训练(Joint Training)的,和集成(Ensemble)不同。集成是每个模型单独训练,再将模型的结果聚合。相比联合训练,集成的每个独立模型都得学得足够好才有利于随后的聚合,因此每个模型的model size也相对更大。而联合训练是同时训练一个模型中的wide model部分和deep model部分,wide部分只需要做少部分的特征叉乘来弥补deep部分的不足,不需要一个full-size的wide模型

论文中,作者通过梯度的反向传播,使用 mini-batch stochastic optimization 训练模型参数,并对 wide 部分使用带 L1 正则的 Follow- the-regularized-leader (FTRL) 算法,对deep部分使用 AdaGrad 算法。

模型的落地分为三步:

  • Data Generation

Label: 标准是 app acquisition,用户下载为 1,否则为 0 。

Vocabularies: 将类别特征(categorical features)映射为整型的 id,连续的实值先用累计分布函数CDF归一化到[0,1],再划档离散化。

  • Model Training

训练数据有 500 billion, Input layer 会同时产生稀疏(sparse)的和稠密(dense)的特征,具体的 Model 上面已经讨论过了。需要注意的是,当新的训练数据来临的时候,我们用的是热启动(warm-starting)方式,也就是从之前的模型中读取 embeddings 以及 linear model weights 来初始化一个新模型,而不是全部推倒重新训练。

  • Model Serving

当模型训练并且优化好之后,我们将它载入服务器,对每一个 request,排序系统从检索系统接收候选列表以及用户特征,来为每一个 app 算分排序,分数就是前向传播的值(forward inference)。

Reference:

论文笔记 - Wide and Deep Learning for Recommender Systems

详解 Wide & Deep 结构背后的动机

The Comprehensive Guide for Feature Engineering

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容