标题 * 表示未完成
论文原文传送门
文章提出了
m
e
m
o
r
i
z
a
t
i
o
n
a
n
d
g
e
n
e
r
a
l
i
z
a
t
i
o
n
memorization\ and\ generalization
memorization and generalization 的概念,‘Wide’ 使用 基于 cross-product feature transformations 的 linear models 来记忆稀疏特征的交互,‘Deep’ 使用 low-dimensional embeddings 将未被认识到的特征交互一般化。主要是使用 ‘Wide’ 来弥补 ‘Deep’ 的不足,即通过将 ‘例外或异常记入小本本上’ 来弥补DNN对于数据稀疏的embeddings处理能力不足的问题。

The Wide Component
‘Wide’ 即为一个广义线性模型
y
=
w
T
x
+
b
y = w^Tx + b
y=wTx+b,y是预测值,
x
=
[
x
1
,
x
2
,
…
,
x
d
]
x = [x_1,x_2,…,x_d]
x=[x1,x2,…,xd]是一个具有d个特征的向量,
w
=
[
w
1
,
w
2
,
…
,
w
d
]
w =[w_1,w_2,…,w_d]
w=[w1,w2,…,wd]为模型参数,b为偏差。其中
x
x
x包含原始的特征以及经过交叉积转换的特征。交叉积定义如下。
该公式中
c
k
i
c_{ki}
cki是一个布尔值,当第
i
i
i个特征属于第
k
k
k次变换
∅
k
\varnothing_k
∅k的一部分时,为1,反之为0。
例如在二分关系中, 一个基于cross-product的转换集“AND(gender=female, language=en)”,只有(“gender=female"和"language=en”)时为1,否则为0。这就捕获了二元特征之间的交互,并将非线性添加到广义线性模型中。

The Deep Component
此 ‘Deep’ 子模型使用基于前反馈的神经网络,由于特征矩阵往往是高维稀疏矩阵所以往往使用 embedding 向量尽可能的解决这一问题,本文章中也使用了这一方法,将 embeddings 传递到隐藏层。隐藏层的表达式如下。其中
l
l
l 为层数,
f
f
f 为激活函数,
W
W
W为第
l
l
l层权重。

模型训练以及实现
文章指出联合训练与集体训练是不同的,集体训练是将各个子模型分开各自训练,之后在预测时才结合起来,所以需要更多的 features and transformations。而联合训练则是同时优化整个模型的所有参数,只需要在 ‘Wide’ 部分使用一些小当量的cross-product feature transformations 即可弥补 ‘Deep’ 部分的缺陷。所以文章中选用了联合训练的方式。最后对 ‘Wide’ 和 ‘Deep’ 的输出进行加权求和作为最后的输出。
Wide & Deep 模型的联合训练使用 mini-batch 随机优化方式,对于两个子模型同时进行反向传播。并使用了L1正则化【follow - the- regularization -leader (FTRL)算法】作为 ‘Wide’ 优化器,AdaGrad作为 ‘Deep’ 优化器。模型的预测公式如下。Y=1表示用户下载了impression app

Wide & Deep模型结构图如下。‘Wide’ 由用户已安装的app与用户被推荐过的app的转换交叉积组成。‘Deep’ 由归一化的连续特征 和 经过Embedding处理后的分类特征组成一个联合的大约有1200维的大Embedding,之后经过三层ReLU映射,最后使用逻辑回归函数输出。值得一提的是,由于每次有新的训练集时都需要重新训练模型,这样做的代价很大,所以文章中使用 warm-starting 的方法初步解决了这一问题,即初始化新模型时使用旧模型的Embedding和 ‘Wide’ 线性模型的权重进行初始化(不就是迁移学习嘛)。

Data Generation
使用一段时间内user和app的 impression data 作为训练集。之后建立一个 Vocabularies 它可以将分类特征映射到整形IDs空间上。而对连续特征进行了归一化处理,通过将特征值X映射到其对应的累积分布函数P(X ≤ x),最后将连续实值特征归一化。归一化方式是将累计分布函数切分为
n
q
n_q
nq个分位数,i 表示第 i 个分位数,之后带入到
i
−
1
n
q
−
1
\frac{i-1}{n_q - 1}
nq−1i−1式中计算归一化后的值。
文章从两个方面对模型性能作出了评估:app被推荐后的下载率、推荐服务响应性能(使用多线程提升这一性能)。

从那个表一中可以发现Wide & Deep模型比单一模型表现要好。
