[paper阅读]推荐系统中的协同深度学习

摘要

  • 传统的基于协同过滤的方法将用户对物品的评分作为单一信息源用于训练,生成推荐;但是在数据非常系统的情况下,会大大降低推荐的效果
  • CTR(Collaborative topic regression,协同主题回归)是一个能将两种不同信息员紧密融合在一起的方法;但是,当辅助信息比较稀疏的时候,CTR训练得到的潜在表示并不是很有效
  • 因此,作者在文章中提出了一个层次贝叶斯模型:CDLCollaborative deep learning,协同深度学习),同时利用了内容信息的深度表示学习和评分(反馈)矩阵的协同过滤。

i.i.d: independent and identically distributed,独立同分布

背景介绍

推荐系统中的现有方法主要有以下三大类:

  • 基于内容的方法(content-based):利用用户画像或者产品介绍进行推荐
  • 基于协同过滤的方法(Collaborative Filtering, CF):利用用户过去的行为或者偏好进行推荐
  • 混合方法:组合基于内容的方法和基于协同过滤(CF)的方法进行推荐

目前,推荐系统主要面临以下问题:

  • 获取用户画像比获取用户行为困难
  • 基于协同过滤(CF)的方法有局限性:
    • 当评分非常稀疏时,会严重影响预测精度
    • 新用户或新物品的冷启动问题

因此,近些年混合的方法受到了越来越多的关注。

根据评分信息和辅助信息之间是否存在双向的交互,我们可以进一步把混合的方法进行划分:

  • 松耦合方法:将辅助信息处理一遍之后,为协同过滤(CF)模型提供特征;由于信息流是单向的,因此评分信息无法为有用特征的提取提供反馈,对于这种分类,一般得依靠手动、冗长的特征工程流程来提高效果
  • 紧耦合方法:允许双向交互。一方面,评分信息可以影响特征的学习;另一方面,提取的特征可以进一步提高CF模型(例如,基于稀疏评分矩阵的矩阵分解方法)的预测能力。通过使用双向交互,紧耦合方法可以自动从辅助信息中提取特征,并且自然地平衡评分和辅助信息的影响

CTR是一个最近提出的紧耦合方法,它是一个概率图模型,能够无缝地集成一个主题模型LDAlatent Dirichlet allocation,潜在狄利克雷模型)和一个基于模型的CF方法:PMFprobabilistic matrix factorization,概率矩阵分解)。但是,当辅助信息非常稀疏的时候,训练得到的潜在表示经常不够高效。

另一方面,深度学习模型最近在计算机视觉和自然语言处理应用的训练高效表示和实现高效性能方便展示了巨大的潜力。在深度学习模型中,可以使用监督式学习和非监督式学习特征。尽管由于深度学习模型可以自动学习特征,深度学习模型比简单模型更受欢迎;但是在获取和学习物品之间相似度和潜在关系方面,深度学习模型可能稍逊于简单模型(例如CF)。因此,需要通过协同进行深度学习来集成深度学习和CF

但是,目前只有很少的尝试开发基于CF的深度学习模型。但是基本上的有一些问题:

  • 部分方法实际上属于基于CF模型的方法,因为它们并没有融合基于内容的信息,而这些内容的信息对于精准推荐往往非常重要
  • 这些模型的深度学习组件都没有对噪音进行建模,因此它们非常不稳定;这些模型实现的性能提升主要是通过松耦合方法,而没有探究内容信息和评分之间的交互

为了解决上述问题,本篇文章提出了一个层次贝叶斯模型:CDLcollaborative deep learning,协同深度学习)作为一个新颖的紧耦合推荐方法。

latent Dirichlet allocation
probabilistic matrix factorization:概率矩阵分解
restricted Boltzmann machines:受限玻尔兹曼机
convolutional neural network:卷积神经网络
deep belief networks:深度信任网络
stacked denoising autoencode

符号表示

  • X_cJ\times S矩阵,是J个物品的完整集合,第j行为物品j的词袋向量X_{c,j*}
  • S:字典大小
  • J:物品大小
  • :评分矩阵,其中R_{ij}的值为用户的评分或反馈
  • I:用户大小

问题:给定X_cR中的部分评分,预测R中的其它评分。

矩阵X_cSDAE的干净输入,X_0为有噪音的矩阵也是J\times SSDAE的输出层l表示为X_l,是一个J\times K_l的矩阵。与X_c相同,X_l的第j行表示为X_{l,j*}W_lb_l分别为第l层的权重矩阵和偏置向量。表示W_l的第n列,L是层数。为了方便表示,以后使用W^+来表示所有层的权重矩阵和偏置集合。注意:L/2SDAE对应一个L层网络。

协同深度学习

Stacked Denoising Autoencoders

SDAEStacked Denoising Autoencoders层叠降噪自动编码机)是一个前馈神经网络,通过在输出中学习预测干净输入来学习输入数据的训练表示(编码),如图1所示。一般说来,中间的隐层(例如,图中的X_2)被限制为瓶颈,而输入层X_0是干净输入数据的脏数据版本。SDAE 解决下面的优化问题:

其中,\lambda 为归一化参数,||\cdot||_F为斐波拉契范式。


1: 一个L=42-层SDAE

泛化的贝叶斯SDAE

假设可以观察到干净的输入X_c和有噪声的输入X_0,与其它论文中介绍的相同,我们可以定义如下的生成过程:

  • 对于SDAE网络中的每一层l
    • 对于权重矩阵W_l中的每一列n
      W_{l,*n}\backsim \mathcal{N}(0, \lambda_w^{-1}I_{K_l})
    • 抽取偏置向量b_l\backsim \mathcal{N}(0,\lambda_w^{-1}I_{K_l})
    • 对于X_l的每一行j
      公式1
  • 对于每一个物品j,获得一个干净的输入:

注意:尽管X_L干净输入X_c的生成是贝叶斯SDAE生成过程的一部分,X_c有噪声输入X_0的生成是一个随机的噪声注入的过程,以帮助SDAE训练得到一个更加健壮的特征表示。

注意:当\lambda_s趋向于无穷大时,公式1中的高斯分布将会变成一个中心点在\sigma(X_{l-1,j*}+b_l)Dirac delta分布,其中\sigma(\cdot)是一个sigmoid函数。模型将会降级为贝叶斯形式的SDAE,这就是我们称其为泛化SDAE的原因。

注意:网络的前L/2层作为编码器,后L/2层作为解码器。后验概率的最大化等价于考虑权重衰减的重构误差的最小化。

协同深度学习

将贝叶斯SDAE作为一个组件,CDL的生成过程定义如下:

  • 对于SDAE网络中的每一层l
    • 对于权重矩阵W_l中的每一列n
      W_{l,*n}\backsim \mathcal{N}(0, \lambda_w^{-1}I_{K_l})
    • 抽取偏置向量b_l\backsim \mathcal{N}(0,\lambda_w^{-1}I_{K_l})
    • 对于X_l的每一行j
      公式1
  • 对于每一个物品j,获得一个干净的输入:
    • 获取一个干净的输入:
    • 获取一个潜在的物品偏移向量\epsilon_j \backsim \mathcal{N}(0, \lambda_v ^{-1}I_K),然后将潜在物品向量设置为:
      v_i = \epsilon_j + X_{\frac{L}{2},j*}^T
  • 针对每个用户获取一个潜在用户向量:
    u_i\backsim \mathcal{N}(0, \lambda_u^{-1}I_K)
  • 针对每一个用户物品对(i,j),可以获得评分R_{ij}
    R_{ij}\backsim \mathcal{N}(u_i^Tv_j, C_{ij}^{-1})

其中,\lambda_w\lambda_n\lambda_u\lambda_s\lambda_v是超参,而C_{ij}是置信度参数,与CTR中的类似(如果R_{ij}=1,那么C_{ij}=a;否则的话C_{ij}=b)。注意:中间层X_{L/2}为评分和内容信息之间的桥梁。中间层以及潜在偏移\epsilon_j是使得CDL能够同步学习有效特征表示和获取物品(用户)之间相似性和潜在关系的关键所在。与泛化的SDAE相同,为了方便计算,我们可以将\lambda_s看做无穷大。

\lambda_s接近正无穷的时候,CDL的图形模型如图2所示,其中,为了表示的方便性,我们分别使用x_ox_{L/2}X_L来替代


2:左边是CDL的图模型。虚线部分的长方形部分表示一个SDAE。上图展示了一个L=2SDAE示例。右边是退化的CDL图模型。虚线部分的长方形表示SDAE的编码。L=2SDAE示例展示在右边。注意:尽管L仍然是2,但是SDAE的解码消失了。为了避免混乱,我们省略了图模型中x_l除了x_0x_{L/2}以外的所有变量。

最大化后验估计

基于上面描述的CDL模型,所有的参数都可以看做是随机变量,因此完全可以使用例如MCMCMarkov chain Monte Carlo,马尔科夫链蒙特卡洛)或者变量估计方法。但是,这些方法一般会造成高计算复杂度。此外,由于本文中使用CTR作为我们的主要基线进行比较,使用类似于CTR中使用的方法进行计算是合理的。因此,我们在下面将会推导一个EMExpectation Maximum,最大期望)风格的算法来获得MAPMaximum Posteriori Probability,最大后验概率)。

CTR中一样,最大化后验概率等价于在给定\lambda_u/\lambda_v/\lambda_w/\lambda_s/\lambda_n的条件下,最大化U/V/{X_l}/X_c/{W_l}/{b_l}联合对数概率:

如果L_s趋向于正无穷,概率就会变成:


公式 2

其中,编码函数f_e(\cdot,W^+)将物品j有噪音的内容向量X_{0,j_}作为输入,然后计算物品的编码,f_r(\cdot,W^+)也将X_{0,j_}作为输入作为输入,计算编码然后重构物品j的内容向量。例如,如果层数L=6f_e(\cdot,W^+)是第三层的输出,而f_r(\cdot,W^+)是第六层的输出。

从优化的观点看,上面目标函数2中的第三个变量等价于使用潜在物品向量v_j作为目标的多层感知机;而第四个变量等价于一个SDAE最小化重构误差。从NNNeural Networks,神经网络)的观点来看,当\lambda_s接近于正无穷时,图1CDL的概率图模型的训练将会降级到同时训练公用一个通用输入层(有噪音输入)、但有不同输出层的两个神经网络(如图3所示)。注意:由于包含评分矩阵,第二种网络比典型的神经网络更加复杂。


3:降级CDLNN表示

\lambda_n/\lambda_v的比例接近正无穷时,它会退化到一个两步的模型,使用SDAE训练得到的潜在表示将会直接输入到CTR中。另外一个极端是:当\lambda_n/\lambda_v的比例接近0时,SDAE的解码器本质上消失了。图2中的右侧为当\lambda_n/\lambda_v的比例接近0时,退化的CDL的图模型。而在实验中,作者们发现:这两种极端情况都会极大地影响预测的精准度。

给定当前的W^+,我们可以计算\mathcal{L}相对于u_iv_j的梯度,然后将它们设置为0,得到下面的更新规则:

u_i\leftarrow {(VC_iV^T+\lambda_uI_K)}^{-1}VC_iR_i
v_j\leftarrow {(UC_iU^T+\lambda_vI_K)}^{-1}(UC_jR_j + \lambda_v f_e{(X_{0,j*},W^+)}^T)

其中U={(u_i)}_{i=1}^IV={(v_j)}_{j=1}^JC_i=\text{diag}(C_{i1},…,C_{iJ})是一个对角矩阵,R_i = {(R_{i1,…,R_{iJ}})}^T是一个行向量,包含用户i的所有评分,C_{ij}体现了由ab控制的置信度。

给定UV之后,我们可以使用后向传播的算法来计算每层的权重W_l和偏置b_l。针对W_lb_l,似然的梯度为:

通过调整UVW_lb_l的更新,我们可以找到\mathcal{L}的局部最优值。可以使用一些通用的技术来缓解局部最优问题。

预测

假设D为可观测到的测试数据。作者使用了u_iW^+\epsilon_j的点估计来计算预测的评分:

E[R_{ij}|D]\approx {E[U_I|D]}^T {(E[F_e{(X_{0,J*},W^+)}^T|D]+E[\epsilon_j|D])}

其中,E[\cdot]表示期望操作。换句话说,使用下面的公式预测评分:

注意:对于训练数据中没有任何评分的新物品j它的偏置将会为0

实验

数据集

  • CiteULike-a5551 用户和 16980 物品
  • CiteULike-t7947用户和25975物品
  • Netflix407261用户、9228物品和15348808评分

对文本进行预处理:从文章的标题和摘要中以及电影情节中提取文本信息(物品内容)。去掉停用词之后,根据tf-idf值选择前S个有代表性的单词。

评估标准

  • \text{recall}@M=\frac{\text{在前M个物品中用户喜欢的数目}}{\text{用户喜欢的总物品数}}
  • MAPmean average precision,均值平均精度)

基线和实验设置

  • CMF
  • SVDFeature
  • DeepMusic
  • CTR
  • CDL
    • a=1, b=0.01, K=50

作者的主页:http://www.wanghao.in/

打赏

mickey

记录生活,写给几十年后的自己。