编者按:特征(features)的构建对推荐系统来说至关重要,直接关系到推荐系统的精准性。在传统的推荐系统中,高阶交叉特征通常由工程师手工提取,不仅人力成本高昂、维度空间极大,而且不可泛化。因此自动学习特征的交互是十分有必要的 ,但目前已有的相关工作学习的是隐式的交互特征,且特征交互发生在元素级(bit-wise)而非向量级。为此,微软亚洲研究院社会计算组在KDD 2018上提出一个新的模型——极深因子分解机(xDeepFM)。
近年来,随着深度学习技术在语音识别、计算机视觉和自然语言理解等领域取得巨大成功,越来越多的学者们也在着手研究基于深度学习技术的推荐系统。对于搭建精准的推荐系统而言,特征(features)是至关重要的。从特征构建的层面而言,现阶段深度学习技术在推荐系统中的应用可以大致分为两类:
(1)从原始数据中自动学习出蕴含语义的隐特征,例如从本文、图像或者知识网络中提取出有效的隐特征;
(2)自动学习多个相关特征之间的交互关系。
特征交互指的是学习两个或多个原始特征之间的交叉组合。例如,经典的基于模型的协同过滤其实是在学习二阶的交叉特征,即学习二元组[user_id, item_id]的联系。而当输入数据的内容变得丰富时,就需要高阶的交叉特征,例如,在新闻推荐场景中,一个三阶交叉特征为AND(user_organization=msra,item_category=deeplearning,time=monday_morning) , 它表示当前用户的工作单位为微软亚洲研究院,当前文章的类别是与深度学习相关的,并且推送时间是周一上午。
传统的推荐系统中,高阶交叉特征通常是由工程师手工提取的,这种做法主要有三种缺点:
(1)重要的特征都是与应用场景息息相关的,针对每一种应用场景,工程师们都需要首先花费大量时间和精力深入了解数据的规律之后才能设计、提取出高效的高阶交叉特征,因此人力成本高昂;
(2)原始数据中往往包含大量稀疏的特征,例如用户和物品的ID,交叉特征的维度空间是原始特征维度的乘积,因此很容易带来维度灾难的问题;
(3)人工提取的交叉特征无法泛化到未曾在训练样本中出现过的模式中。
因此自动学习特征间的交互关系是十分有意义的。目前大部分相关的研究工作是基于因子分解机的框架,利用多层全连接神经网络去自动学习特征间的高阶交互关系,例如FNN、PNN和DeepFM等。其缺点是模型学习出的是隐式的交互特征,其形式是未知的、不可控的;同时它们的特征交互是发生在元素级(bit-wise)而不是特征向量之间(vector-wise),这一点违背了因子分解机的初衷。来自Google的团队在KDD 2017 AdKDD & TargetAD研讨会上提出了DCN模型,旨在显式地学习高阶特征交互,其优点是模型非常轻巧高效,但缺点是最终模型的表现形式是一种很特殊的向量扩张,同时特征交互依旧是发生在元素级上。
在KDD 2018上,微软亚洲研究院社会计算组提出了一种极深因子分解机模型(xDeepFM),不仅能同时以显式和隐式的方式自动学习高阶的特征交互,使特征交互发生在向量级,还兼具记忆与泛化的学习能力。
为了实现自动学习显式的高阶特征交互,同时使得交互发生在向量级上,我们首先提出了一种新的名为压缩交互网络(Compressed Interaction Network, 简称CIN)的神经模型。在CIN中,隐向量是一个单元对象,因此我们将输入的原特征和神经网络中的隐层都分别组织成一个矩阵,记为X^0 和X^k。CIN中每一层的神经元都是根据前一层的隐层以及原特征向量推算而来,其计算公式如下:
其中,第k层隐层含有H_k条神经元向量。隐层的计算可以分成两个步骤:(1)根据前一层隐层的状态X^k和原特征矩阵X^0,计算出一个中间结果Z^k+1,它是一个三维的张量,如下图所示:
图1 CIN的隐层计算步骤一:根据前一层隐层状态和原始输入数据,计算中介结果
在这个中间结果上,我们用H^k+1个尺寸为m*H^k的卷积核生成下一层隐层的状态,该过程如图2所示。这一操作与计算机视觉中最流行的卷积神经网络大体是一致的,唯一的区别在于卷积核的设计。CIN中一个神经元相关的接受域是垂直于特征维度D的整个平面,而CNN中的接受域是当前神经元周围的局部小范围区域,因此CIN中经过卷积操作得到的特征图(Feature Map)是一个向量,而不是一个矩阵。
图2 CIN的隐层计算步骤二:根据中介结果,计算下一层隐层的状态
CIN的宏观框架可以总结为图3。它的特点是,最终学习出的特征交互的阶数是由网络的层数决定的,每一层隐层都通过一个池化操作连接到输出层,从而保证了输出单元可以见到不同阶数的特征交互模式。同时不难看出,CIN的结构与循环神经网络RNN是很类似的,即每一层的状态是由前一层隐层的值与一个额外的输入数据计算所得。不同的是,CIN中不同层的参数是不一样的,而在RNN中是相同的;RNN中每次额外的输入数据是不一样的,而CIN中额外的输入数据是固定的,始终是X^0。
图3 CIN的宏观结构概览
参考Wide&Deep和DeepFM等模型的设计,我们发现同时包含多种不同结构的成分可以提升模型的表达能力。因此我们将CIN与线性回归单元、全连接神经网络单元组合在一起,得到最终的模型并命名为极深因子分解机xDeepFM,其结构如图4所示。
图4 极深因子分解机xDeepFM
集成的CIN和DNN两个模块能够帮助模型同时以显式和隐式的方式学习高阶的特征交互,而集成的线性模块和深度神经模块也让模型兼具记忆与泛化的学习能力。值得一提的是,为了提高模型的通用性,xDeepFM中不同的模块共享相同的输入数据。而在具体的应用场景下,不同的模块也可以接入各自不同的输入数据,例如,线性模块中依旧可以接入很多根据先验知识提取的交叉特征来提高记忆能力,而在CIN或者DNN中,为了减少模型的计算复杂度,可以只导入一部分稀疏的特征子集。
实验结果
我们在Criteo、大众点评和必应新闻等三个数据集上对上述模型进行评测,这三个数据集分别对应广告推荐、餐馆推荐和新闻推荐等不同的应用场景。所采用的评测指标为AUC和LogLoss。我们将xDeepFM与多种当前主流的深度推荐模型进行对比,结果如表1所示。在三个数据集上,xDeepFM模型在AUC和LogLoss上均超过了其它基准模型。这说明,结合显式和隐式的特征交互能够有效提高推荐系统的准确性。
表1 三个数据集上的评测结果
同时,我们还关注不同的基本单元模型的学习能力。我们对比了FM、DNN、CrossNet和CIN在三个数据集上单独学习的结果,它们分别对应只有二阶特征交互、隐式特征交互、特殊的显式特征交互和基于向量的显式特征交互模式。实验结果如表2所示。在Criteo上,CIN和DNN的表现比较接近,而在大众点评和必应新闻数据集上,CIN比其它三个单元模型表现的要好。
表2 四种单元模型在三个数据集上的独立结果
除此之外,我们还探讨了神经网络中的超参数对模型的影响,例如网络的深度、网络的宽度以及激活函数的选取等等。值得一提的是,目前最优的网络结构并不需要做到很深,通常在3层左右即可,原因可能是现实环境中需要的有效特征交互阶数本质上并不高,也有可能是神经网络的优化方法还不足以训练出良好的更深层次的网络。
总而言之,我们提出了一种极深因子分解机模型xDeepFM,通过结合显式和隐式的高阶特征交互能力来提升推荐系统的精准度。该模型的有效性在多个不同的应用场景下都得到了验证。但是,目前xDeepFM仍然存在计算复杂度偏高的缺点。未来我们将持续改进它的性能,以便它能够被应用在大规模计算任务中。
了解更多技术细节,请阅读我们的论文:
xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems
论文链接:https://arxiv.org/abs/1803.05170
作者简介
练建勋,微软亚洲研究院社会计算组研究员,于2018年6月取得中国科学技术大学计算机博士学位,研究兴趣包括用户建模、个性化推荐系统,在WWW、IJCAI、KDD等计算机顶级国际会议上发表多篇学术论文。
你也许还想看:
● 如何将知识图谱特征学习应用到推荐系统?
● 推荐算法不够精准?让知识图谱来解决
● 可解释推荐系统:身怀绝技,一招击中用户心理
感谢你关注“微软研究院AI头条”,我们期待你的留言和投稿,共建交流平台。来稿请寄:[email protected]。