在有稀疏输入的大规模的回归和分类问题中,对普通的线性模型进行非线性特征转换是很广泛的。当普通的方法需要很多特征支持的时候,通过交叉积特征转换的一个很广泛的集合的记忆式方法很有效;在有较少的特征的工程中,深度神经网络可以通过对稀疏数据进行低维度的稠密嵌入学习而生成较好的没有见过的特征组合。但是有嵌入的深度神经网络会过分普遍化和当用户和项的交互很稀疏和高阶的时候会推荐较少的相关项。
在这篇文章中,作者提出了Wide&deep learning 加入广泛的线性模型和深度神经网络。
介绍
在推荐系统的的一个挑战与生成搜索排名问题的挑战相似,就是如何同时达到memorization和generalization。其中memorization可以被放松的定义为在历史数据中学习频繁同时出现的项或特征,利用这些有效的关系。Generalization,在另一方面定义为,是基于关联的传递性,来探索过去从未或者是很少发生的新的特征组合。基于memorization的推荐通常更加热门或者 与用户已经发生过的行为直接关联的项 。相比于memorization,Generalization倾向于改善推荐项的多样性。
对于大规模的在线推荐和排名系统,普通的线性模型,例如逻辑回归由于它们的简单性、可扩展性以及可解释性而得到很广泛的运用。交叉积的一个限时是不能生成在训练集中没有出现过的特征组合。基于嵌入的模型,例如因子分解机和深度神经网络可以生成在训练集中没有出现过的特征组合,但是当基本的查询-项矩阵很稀疏和高阶的时候,学习查询和项的有效的低维表达很困难,由于密集的嵌入不允许没有推荐,则会发生过分的普遍化和推荐很多的无关项。另一方面,有交叉积转换的线性化模型可以通过更少的参数来“记忆”异常规则。
在这篇文章中,作者提出的框架在一个模型中达到memorization和Generalization。
贡献:1、the wide&deep 学习框架,加入了嵌入的向前反馈的神经网络以及有特征转换的线性模型,用于稀疏输入的普通的推荐系统。
2、wide&deep推荐系统的实施与评价在谷歌游戏, 一个移动应用商店与超过10亿活跃用户和超过100万应用程序。
3、我们已经在TensorFlow中一个高层次的API中开源了实现。
WIDE&DEEP LEARNING
1.Thewide component
y=wTx+b,其中w是模型参数,x是个特征向量,b是偏倚。特征集合包括原始特征和转换特征。转换中最重要的是交叉积转换。
深度组件是一个向前反馈的神经网络,对于明确特征的,原始输入是特征字符串,将这些稀疏的、高维度的明确的特征首先转变成低维的且有密集真实值的向量,通常被称为一个嵌入特征。这些嵌入特征随机初始化,在训练的时候最小化损失函数得到最终的值。然后将这个低维稠密的嵌入向量加入隐藏层
2.joint training of wide & deepmodel
注意joint与ensemble的不同,在ensemble中,每个模型是单独训练的,不知道其他模型的信息,预测的结合只是在推断的时间不是在预测的时间。在joint training同时在两个模型中优化参数,在训练时间计算权重和。为了能到达一个合理的精度,ensemble需要每个部分都有很大规模的模型 ,而joint training只需要补充深度部分一个小数量的交叉积特征转换。
总的来说,广泛的线性模型可以使用交叉积特征转换有效的记忆稀疏特征交互,但是不能生成在训练集中没有出现过的特征组合,深度神经网络可以通过低维嵌入生成在训练集中没有见到过的特征交互。因此这篇文章的作者提出了结合这两个模型的wide & deep 学习框架。
参考文章:
《Wide & Deep Learning for Recommender Systems》