1 背景
对于一个推荐系统,我们可以采用协同过滤、矩阵分解等算法来预测用户对物品的评分,根据评分取前N个进行推荐。然而,在实际应用场景中,要计算所有用户对所有物品的评分,计算量十分庞大,并且需要占据巨大的内存,因此,通常的做法是先对所有物品进行召回,以召回的这一部分物品作为候选,再对这些候选物品进行评分或点击率预测,根据预测结果排序,取前N个进行推荐。wide&deep模型就是点击率预测的一个经典模型。
2 wide&deep模型
我们知道,线性模型以给定的原始特征和一些人为设计的交互特征作为输入,它的训练过程就是要找到个输入特征的最优权重,因此,线性模型的一大优点就是能够发掘特征之间直接的、显式的联系,具有“记忆能力”。
深度学习模型则是多层非线性输出的组合,非线性的组合有利于发掘特征之间隐含的、潜在的联系。因此,深度学习模型能够根据输入的特征学习到泛化规则,具有“泛化能力”。
当我们将这两个模型结合起来,就得到了wide&deep模型,其中wide部分就是简单的线性模型(例如逻辑斯蒂回归模型),deep部分就是深度学习模型(例如DNN模型),它同时具有“记忆能力”和“泛化能力”。下图是wide&deep模型的结构图。
如何理解模型的记忆能力和泛化能力呢?举个例子,我们通常会把篮球和男性联系起来,把化妆品和女性联系起来,这种直接的、简单粗暴的关联起两个特征的能力就是记忆能力,猫是哺乳动物,狮子是哺乳动物,泛化之后就得到所有胎生动物都是哺乳动物的结论,这就是泛化能力。我们会发现,记忆能力偏向于依靠记住用户过去与哪些物品发生了关联来进行推荐,因此推荐的内容缺乏新颖性;泛化能力能够依据输入特征进行扩展,但过度泛化的结果很可能不够准确,会给出用户实际并不感兴趣的推荐,比如上述得到的胎生动物都是哺乳动物的结论就是错误的,事实上鲨鱼虽然是胎生但不是哺乳动物,而是脊椎动物。融合两种能力的wide&deep模型就能够取二者之长,给出一个比较准确又不过度泛化的推荐结果。
2.1 wide部分
wide部分是一个线性模型,它的数学形式如下:
f ( x ) = W X + b f(x)=WX+b f