2.2 深度交互函数学习 (Learning Interaction Function with Deep Learning)
作为早期使用神经网络进行评分建模的代表性工作,文献[42]使用限制玻尔兹曼机(RBM)学习交互函数,但该方法的近似优化算法较为费时[28],且不易扩展到有辅助信息的情况。近期,我们在WWW2017上[6]提出了一个简单通用的基于神经网络的协同过滤框架(Neural Collaborative Filtering,NCF)。其基本思想是将用户和物品表示为隐空间的低维向量后,使用多层神经网络从数据中学习交互函数。图5展示了NCF的基本框架。
输入层是对用户和物品原始数据进行one-hot编码后的特征向量;在没有辅助信息时,原始数据可以仅为用户ID和物品ID。随后是表示层,以获得用户和物品的隐向量表示。然后用户通道和物品通道的隐向量一起输入到一个多层神经网络,用于学习用户和物品之间的交互函数;该交互网络的最后一层通过全连接层输出模型预测分数。NCF是个通用的框架——通过设计输入数据和每一层的操作,NCF可以表示出许多现有的推荐模型。图1展示了如何将矩阵分解模型表示为NCF的一个特例;在此基础上,如果将用户通道的输入数据表示为用户评分历史(去除当前交互物品i),该模型为FISM模型[21];如果将用户通道的输入表示为用户ID和评分历史的拼接向量,该模型则为SVD++模型[1];如果将用户通道和物品通道的输入设计为ID和属性,该模型则为SVDFeature模型[29]。
除表示现有推荐模型之外,多个新的基于NCF的深度学习模型被提出。例如,文献[6]提出NeuralMF,在隐含层组合矩阵分解模型和多层感知机模型,其中多层感知机使用与矩阵分解不同的表示层,用于建模用户和物品之间的非线性交互关系。该模型有较强的表示能力和泛化能力,在Top-K物品推荐中有较好的效果。近期,文献[23]提出了属性敏感的(attribute-aware)NCF变种,重点考虑不同属性之间的交互。图6展示了该模型。其中,主要不同于NCF的地方在于Pooling层的操作:
NCF默认采取average pooling,假设所有属性的表示是独立的;而该模型使用一种新的bilinear pooling方式,受启发于分解机模型[25],可以考虑ID与属性,以及所有属性对之间的交互。该模型在跨域的物品推荐(cross-domain recommendation)中展示了较好的效果。
近期,来自于谷歌和微软的研究人员也分别发布了基于特征的深度学习推荐系统[12, 20,44]。其中Wide&Deep[12]的Wide部分采用线性回归模型,Deep部分采用基于特征表示学习的多层感知机模型。Deep Crossing[20]用于在线广告的点击率预测,但该模型架构同样可以用于推荐系统中(需加入用户ID和物品ID作为输入以学习协同过滤效果)。图7描述了Deep Crossing的模型架构,其中与Wide&Deep的主要区别在于使用了残差网络的部件(residual component)[45],可以防止加深网络时梯度消失的问题。
值得一提的是,Wide&Deep和Deep Crossing在模型底层融合多个特征的表示向量时,均采用了向量拼接(concatenation)的操作。由于该操作不考虑向量之间的交互,使得模型完全依赖于之后的多层感知机学习特征之间的交互。虽然深度网络被证明有极强的函数学习能力,但其同样也难以训练,例如过拟合、退化和对初始化高度敏感等问题[45]。而且在我们最近实测中[27],基于深度学习的Wide&Deep和Deep Crossing的预测结果反而弱于浅层的分解机模型。为了解决这个问题,我们在最近的SIGIR 2017的工作中[27]提出了一个新的深度学习模型,在Wide&Deep基础上将底层的向量拼接操作替换为新提出的Bilinear Interaction Pooling操作
该操作考虑了所有特征表示向量之间的pair-wise交互关系。如果将pooling层直接输出到预测值,该模型则和分解机模型相同,因此称之为深度分解机模型(Neural Factorization Machine,NFM)。在上下文敏感的推荐任务中(context-aware recommendation),仅加深一层的NFM显著提高分解机7%,其准确度不仅超过了3层的Wide&Deep和10层的Deep Crossing模型,而且NFM架构相对简单,训练起来更容易更高效。在随后的工作中[41],我们进一步扩展了NFM模型,将注意力机制引入pooling操作中,用于学习每个特征交互的权重,改进了模型的表示能力和可解释性。