xDeepFM模型
xDeepFM模型
介绍
推荐系统中一般将类别特征(categorical feature)转换成one-hot向量,如果仅适用原始特征一般不能达到很好的效果。一种主要的提升方法就是在类别特征上应用交叉特征,如FM模型。如一个3阶交叉特征AND(user_organization=msra, item_category=deeplearning, time=monday)就表示在msra工作且在周一展示深度学习相关论文。
FM模型将每个特征i转换成隐向量,并且使用隐向量内积来表示两两特征间的交互: . 但是传统的FM很难再扩展到更高阶的特征交互。目前,一种方法就是使用深度神经网络来学习高阶特征,如FNN,PNN。FNN和PNN的一个缺点是它们更关注高阶特征交互而忽视了低阶特征交互。而DeepFM等模型通过引入混合网络来学习高阶和低阶的特征交互。这些基于DNN的模型缺点如下:模型学习出的是隐式的交互特征,其形式是未知的、不可控的;同时它们的特征交互是发生在元素级(bit-wise)而不是特征向量之间(vector-wise),这一点违背了因子分解机的初衷。
预备知识
1.嵌入层(Embedding Layer)
计算机视觉或者nlp中,输入通常是图像或者文本,它们具有空间相关性,所以这些稠密结果的原始特征可以直接应用到神经网络中。但是在推荐系统中,输入特征一般是稀疏的,维度很大,并且没有很强的空间相关性。因此,multi-field category形式的特征就被广泛应用到推荐系统中,比如输入[user_id=s02,gender=male,organization=msra,interesets=comedy&rock]通过field-aware one-hot encoding转换成一个维度很大的稀疏特征。
为了能够用深度网络学习特征,我们一般通过一个嵌入层(embedding layer,如下图所示)将原始特征转换成一个低维的、稠密的向量。我们将一个field的特征转换成一个向量,那么假设原始特征有m个field,就转换成了m个向量的集合,其中,,D是field embedding的维度。
2.隐式高阶特征和显式高阶特征
1、 隐式高阶特征
FNN、Deep Crosing以及Wide&Deep网络的深度部分是将field embedding vector e输入到前向神经网络来学习高阶特征交互,前向传播过程如下:
k表示网络第k层。这种网络模型的特征交互是元素级别(bit-wise)的。元素级别是说即使同一个field embedding vector的元素也会互相影响。
PNN和DeepFM在上述网络的基础上,添加了一个交互层,从而能够同时学习元素级和向量级(vector-wise)的特征交互。PNN和DeepFM网络模型图如下:
2、 显式高阶特征
Deep Cross Network(DCN),网络结构图如下。
不同于典型的全连接前向传播网络,DCN隐藏层交叉操作计算公式如下:
其中,,,分别是第k层的权重,偏置和输出。
DCN学习的高阶特征交互很特殊,DCN的每一个隐藏层其实是的一个标量乘积(scalar multiple)。假设证明法证明如下:
k=1时,
其中,是一个标量,因此x1就是x0的一个标量积。
假设k=i时结论成立,那么k=i+1时:
因此,k=i+1时结论成立。
通过上述证明,可以得出DCN网络的输出是的一个标量积。但是这并不意味着和是线性相关的,因为是随而变化的。
xDeepFM
CIN
作者提出了一个新的交叉网络,叫做Compressed Interaction Network(CIN)。它的特征交互是向量级的,且是显式的。
记field embedding层的输出是一个矩阵,CIN第k层的输出为,表示第k层的特征向量的个数。对每一层,计算如下:
.
其中,,表示Hadamard积,如
CIN结构有点类似于RNN,它的下一层的输入不仅取决于上一个隐藏层的输出,还取决于输入X0。同时它也类似于CNN。
解释一下计算过程,第k层隐层含有条神经元向量。隐层的计算可以分成两个步骤:
(1)根据前一层隐层的状态 和原特征矩阵 ,计算出一个中间结果 ,它是一个三维的张量,如图4a所示。然后,可以看做是一个特殊形式的图像,是一个filter。
(2) 然后在上沿着embedding dimension (D)滑动filter,如图4b,从而得到一个隐藏层向量,它可以视为计算机视觉中的特征图。因此就是个特征图的集合。第k+1层有个神经单元,就得到个特征图的集合。
如图4c,CIN每一个输出层,都连接到输出单元。首先,在隐藏层每个特征图上做sum pooling:
,其中。这样就得到了一个pooling的向量,将所有隐藏层的pooling向量连接起来,并输出到输出单元。
对于二分类问题,输出就是:
将CIN和隐式网络结合起来
普通深度网络学习高阶特征交互,将CIN和普通网络结合起来可以使模型更好。xDeepFM网络结构图如下图,它既可以学习高阶和低阶的特征交互,同时也包含显式和隐式的特征交互。它的输出是:
,其中a是原始的特征输入
参考: