(非线性特征转换transformation1的广义线性模型 被广泛用于回归和分类)
在本文提出Wide & Deep模型,jointly trained wide linear modelsand deep neural networks—to combine the benefits of memorization and generalization for recommender systems。
推荐系统可以被视为一个搜索排名系统,其中输入查询是一组用户和上下文信息,输出是一个商品排名列表。给定一个查询,推荐任务是在数据库中找到相关的条目,然后根据某些目标(如点击或购买)对条目进行排名。
在本文中,用于APP推荐,不过也适用一般的推荐系统。
In this paper, we present the Wide & Deep learning frame-work to achieve both memorization and generalization in one model, by jointly training a linear model component and a neural network component as shown in Figure 1.

论文的主要贡献包括:
虽然想法很简单,但我们表明,Wide & Deepframework显著提高了移动应用商店的应用获取率,同时满足训练和服务速度的要求。
应用程序推荐系统的概述如图2所示。当用户访问应用商店时,会生成一个查询,它可以包含各种用户和上下文特性。推荐系统会返回一个应用列表(也被称为impressions),用户可以在这些应用上执行某些操作,如点击或购买。这些用户操作以及查询和印象记录在日志中,作为学习者的训练数据。

由于项目条目巨大和时间限制,第一步要先retrieval,retrieval system返回一个短的项目列表(通常是结合机器学习和人类定义的规则)。
在减少候选池之后,ranking system会对所有项目按分数排名。分数通常是 P ( y ∣ x ) P(y|\bold{x}) P(y∣x),给定特征x(包括用户特征,如国家、语言等;上下文特征,如设备,一天中的小时等;印象特征,如app年龄,app的历史统计数据等)。在本文中,我们重点研究了使用广深学习框架的排序模型。
The wide component是一个广义线性模型 y = w T x + b y = \bold{w^T x} + b y=wTx+b,如图一(左)所示。y是预测结果, x = [ x 1 , x 2 , . . . , x d ] \bold{x}=[x_1, x_2, ..., x_d] x=[x1,x2,...,xd]是d维度的向量, w = [ w 1 , w 2 , . . . , w d ] \bold{w}=[w_1, w_2, ..., w_d] w=[w1,w2,...,wd]是模型参数,b是偏移。
特征集包括原始输入特征和转换后的特征。最重要的变换之一是cross-product transformation,它被定义为:
ϕ
k
(
x
)
=
∏
i
=
1
d
x
i
c
k
i
c
k
i
∈
{
0
,
1
}
\phi_{k}(\mathbf{x})=\prod_{i=1}^{d} x_{i}^{c_{k i}} \quad c_{k i} \in\{0,1\}
ϕk(x)=i=1∏dxickicki∈{0,1}
其中
c
k
i
c_{k i}
cki是布尔变量,如果第i个特征是第k个transformation
ϕ
k
\phi_{k}
ϕk的一部分,则为1,否则为0。
举个例子,对于二元特征,当且仅当cross-product transformation(组合特征)(如“AND(gender=female, language=eb)”)全部为1时,组合特征转换(如“AND(gender=female, language=eb)”)为1,否则为0。这捕获了二元特征之间的相互作用,并向广义线性模型添加了非线性。
详细介绍请看2,主要看第2篇文章
重点关注这句话:This means that 𝜙𝑘 with 𝑐⃗=[0,1,1,0] will return 1(true) for all 𝑥⃗ that represents a white dog, does not matter if the dog is male or female or whether it is fed. And will return 0 for anything that is either not a dog or not white.
就可以很好地理解cross-product transformation了。
The deep component是一个前馈神经网络,如图一(右)所示。对于分类特征,原始输入是特征字符串(例如," language=en ")。这些稀疏、高维的分类特征首先被转换成一个低维、密集的实值的向量,通常被称为Embedding向量。Embedding的维度通常在O(10)~O(100)数量级。
对Embedding向量进行随机初始化,然后对Embedding向量的值进行训练,使模型训练时的最终损失函数最小。这些低维密度的Embedding向量在前向通道中被输入到神经网络的隐藏层中。具体来说,每个隐层计算:
a ( l + 1 ) = f ( W ( l ) a ( l ) + b ( l ) ) a^{(l+1)}=f\left(W^{(l)} a^{(l)}+b^{(l)}\right) a(l+1)=f(W(l)a(l)+b(l))
其中l是层数,f是激活函数,通常是修正线性单元(ReLUs)。 a ( l ) , b ( l ) a^{(l)},b^{(l)} a(l),b(l)和 w ( l ) w^{(l)} w(l)是第l层的激活,偏移量和模型权重。
通过加权和 wide部分和deep部分的输出的对数概率,作为预测结果。然后喂给一个共同的逻辑斯蒂损失函数,用于联合训练。
注意,joint training(联合训练)和ensemble(集成)是有区别的。
采用 mini-batch stochastic optimization(小批量随机优化方法),通过back propagating反向传播,利用output输出,对模型的wide和deep两部分的梯度来实现wide和deep模型的联合训练。
在实验中,我们使用Follow-the-regularized-leader (FTRL)算法[3],其中L1正则化作为模型Wide部分的优化器,AdaGrad[1]作为模型Deep部分的优化器。
组合模型如图1(中间)所示。对于一个逻辑回归问题,模型的预测为:
P
(
Y
=
1
∣
x
)
=
σ
(
w
w
i
d
e
T
[
x
,
ϕ
(
x
)
]
+
w
d
e
e
p
T
a
(
l
f
)
+
b
)
P(Y=1 \mid \mathbf{x})=\sigma\left(\mathbf{w}_{w i d e}^{T}[\mathbf{x}, \phi(\mathbf{x})]+\mathbf{w}_{d e e p}^{T} a^{\left(l_{f}\right)}+b\right)
P(Y=1∣x)=σ(wwideT[x,ϕ(x)]+wdeepTa(lf)+b)
其中T是二元类别标签,
σ
(
⋅
)
\sigma(\cdot)
σ(⋅)是sigmoid函数,
ϕ
(
x
)
\phi(\bold{x})
ϕ(x)是初始特征x的cross product transformations,b是偏移量。
w
w
i
d
e
\bold{w}_{wide}
wwide是所有wide模型的权重向量,
w
d
e
e
p
\bold{w}_{deep}
wdeep是应用于最后激活
a
l
f
a^{l_f}
alf的权重。
app推荐管道的实现包括三个阶段:数据生成、模型训练和如图3(位于4.3)所示的模型服务。
vocabularies:词汇表是将分类特性字符串映射到整数id的表,
我们在实验中使用的模型结构如图4所示。

在训练过程中,我们的输入层 接收 训练数据和词汇表,并生成稀疏和密集的特征和标签。
The Wide & Deep models的训练样本超过5000亿个。每当一组新的训练数据到达时,模型就需要重新训练。然而,每次从头开始重新训练的计算成本很高,而且会延迟从 数据到达 到 为更新的模型服务的时间。为了解决这一挑战,我们实现了一个热启动系统,该系统用之前模型的Embedding和线性模型的权重初始化一个新模型。
在将模型加载到模型服务器之前,要对模型进行一次dry run,以确保它在服务实时流量时不会造成问题。我们通过经验验证模型质量,以检查之前的模型是否健全。

一旦模型经过训练和验证,我们就将其加载到model servers中。对于每个请求,the servers从app retrieval system和user feature接收一组候选应用程序,对每个应用程序进行评分。然后,对应用程序进行从高分到低分的排序,并按照这个顺序向用户展示应用程序。分数是通过在Wide & Deep模型上运行一个向前推理传递来计算的。
为了在10毫秒量级上处理每个请求,我们使用多线程并行优化性能,通过并行运行更小的批处理,而不是在单个批推理步骤中为所有候选应用程序打分。
为了评估宽深度学习在真实推荐系统中的有效性,我们进行了现场实验,并从应用程序获取和服务性能两个方面评估了该系统。
将wide linear model+cross-product feature transformations以及deep neural networks+dense embeddings相结合的想法是受到了以前工作的启发,比如factorization machines[5],它通过factorizing the interactions between two variables as a dot product between two low-dimensional embedding vectors 来为线性模型增加generalization。在本文中,我们通过神经网络学习Embedding之间高度非线性的相互作用,而不是点积 来扩展模型能力。
神经网络与图模型的联合训练也已被人类姿态估计[6]应用。在这项工作中,我们探索了前馈神经网络和线性模型的联合训练,通过与稀疏特征和输出单元之间的直接联系。用于具有稀疏输入数据的一般推荐和排序问题。
在推荐系统文献中,collaborative deep learning已经被探索,如结合深度学习 内容信息和协同过滤(CF),获得ratings matrix[7]。
之前也有关于手机应用推荐系统的研究,比如AppJoy在用户的应用使用记录[8]上使用CF。与之前基于CF或基于内容的方法不同,我们联合训练了应用推荐系统的用户数据和impression数据的Wide & Deep模型。
memorization和generalization对推荐系统都很重要。
我们提出了Wide & Deep learning框架来结合这两种模型的优点。