文章主要围绕 memorization(记忆) 和 generalization(泛化)展开,memorization由一系列的特征组合来实现,即文中说的wide部分,需要做大量特征工程来挖特征,generalization由deep neural network实现,通过从稀疏特征中学习低维embedding可以更好的概括一些没有看到的特征组合,但是,当用户交互稀疏且高秩的时候(高秩的意思是user和item之间的交互矩阵对应的秩很大,即有效特征很多,白话一点就是user和item之间的关系非常的复杂,不能通过简单的几个特征来表征),dnn由于学习不充分,就会使学习到的embedding过度泛化,导致推荐一些不相关的item。于是,这篇文章联合了wide和deep来优化当前的推荐系统(本文提到的是Google Play的acquisition行为,app的下载/购买)

WIDE & DEEP LEARNING

wide&deep 如下图中间部分所示:
2023-12-06T01:54:55.png

The Wide Component

wide部分是一个线性函数 $y = w^T x + b$,其中$w^T$ 是模型的参数,$b$是偏差,$x = [x_1, x_2, ..., x_d] $是模型的输入特征,包含原始的输入特征和一些转换特征,其中最重要的转换特征是交叉积转换,比如某些条件同时满足则该特征为1,否则为0,例:"AND(gender=female, language=en)" 表示gender=female 且 language=en 时,该特征为1

The Deep Component

这一部分则是将特征映射为one-hot编码,用embedding来表示,embedding维度一般为10到100之间,然后把这些特征concat起来,过DNN(linear+Relu),最后第l+1隐藏层输出如下,$f$为激活函数,$W^{(l)}$为模型参数,$b^{(l)}$为偏差,$a^{(l)}$为第l隐藏层输出:
2023-12-06T02:10:44.png

Joint Training of Wide & Deep Model

如下图所示:
2023-12-06T02:08:21.png
对于LR问题,左侧nn模型过一个权重矩阵将输出从256映射到1维上,并和右侧wide部分输出相加过sigmoid函数作为模型的输出

EXPERIMENT RESULTS

分别用1%的流量做了三组实验,wide&deep相对于只使用deep有1%的提高,control为基线组(看起来当时线上就没有使用nn模型)
2023-12-06T02:17:50.png

遗留几个问题

(1) we used Followthe-regularized-leader (FTRL) algorithm [3] with L1 regularization as the optimizer for the wide part of the model,
and AdaGrad [1] for the deep part.
这个FTRL 看一下