xDeepFM--Combining Explicit and Implicit Feature Interactions for Recommender Sy...
source link: https://tfeima.github.io/2019/03/08/xDeepFM/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
xDeepFM--Combining Explicit and Implicit Feature Interactions for Recommender Systems阅读笔记
发表于 2019-03-08
| 分类于 论文阅读
字数统计: 1.2k
一般我们会对离散特征进行热编码,比如论文中给的例子:
使用FM可以为每一个特征(热编码后的)学习一个隐向量(假设每个隐向量都固定维度D),因为一个field(热编码前的特征)包含多个编码,所以每一个field就包含多个隐向量。对于一个样本,每一个field只有一个或几个隐向量出现,即热编码后特征为1的特征的隐向量,若field中只有一个隐向量出现,那么这个特征的隐向量就作为field的隐向量,若有多个隐向量出现,多个隐向量的和作为field的隐向量。
隐式高阶交叉特征
由DNN学习到的特征就叫做隐式的高阶交叉特征(Implicit High-order Interactions),如下图,DeepFM和PNN的结构画在了一起,两者都可以学习到低阶特征和隐式的高阶特征,但他俩的区别在于DeepFM是用FM层学习低阶交叉特征,PNN用product层学习低阶交叉特征。
显式高阶交叉特征
CrossNet能够学习到显式高阶交叉特征(Explicit High-order Interactions),它的网络结构如下图,
网络之间的传播公式为
本文提出的CIN的结构就借鉴了CrossNet的网络结构。
CIN(Compressed Interaction Network)
CIN考虑:
- 向量级别的特征交互
- 显式的高阶特征交互
- 网络的复杂度不能随着交叉的阶数指数增长
CIN的网络结构可以种下列三个图解释:
如(c)图所示,网络的输入为field的嵌入,并且用矩阵X0∈Rm×DX0∈Rm×D表示,其中m表示field的个数,D表示嵌入的维度,它的第i行即为第i个field的嵌入。网络的输出用Xk∈RHk×DXk∈RHk×D表示,HkHk表示第k层特征向量的个数。网络之间的传播公式为
∘∘的定义为(a,b,c)∘(x,y,z)=(ax,by,cz)(a,b,c)∘(x,y,z)=(ax,by,cz)。由于下一个隐藏层的输出依赖于上一个隐藏层的输入,所以CIN的结构与RNN非常类似。
从上面的传播公式还能够看出CIN还有类似CNN的结构,如上图(a)所示,xkxk的一列(Hk=3Hk=3维)与x0x0的一列(m=4m=4维)作用可以生成一个3∗43∗4的矩形,总共有D列,所以最终生成了D个这样的矩形,也就是一个Hk×m×DHk×m×D维的tensor,所生成到每个矩阵的权重矩阵Wk,hWk,h可以视作一个滤波器,最终如图(b)所示,每个生成的 Hk×mHk×m 矩阵映射为一个 Hk+1Hk+1 维向量。
假设CIN有T个隐藏层,每个隐藏层的XkXk的行向量都做一个sum pooling:
CIN分析
空间复杂度
CIN共包含∑Tk=1Hk×Hk−1×m+∑Tk=1Hk∑k=1THk×Hk−1×m+∑k=1THk个参数
时间复杂度
O(mHD+H2T)O(mHD+H2T)
多项式近似
假设每一层特征映射的维度都为m。第一层第h个特征映射:
可以看出这是一个二阶特征交叉。第二层的第h个特征映射为:
容易看出这是输入特征的3阶特征交互。能够推出第k层的特征为输入特征的k+1阶特征交互,这也叫做CIN的显示高阶特征交互的特性。
与隐式网络的组合
DNN能够学习出隐式高阶特征,所以DNN与CIN再加上线性模型就一起构成了xDeepFM,如下图所示即为xDeepFM的结构。
整个xDeepFM的输出单元为
损失函数为
L=−1N∑Ni=1{yilogy^i+(1−yi)log(1−y^i)}+λ∗∥Θ∥L=−1N∑i=1N{yilogy^i+(1−yi)log(1−y^i)}+λ∗‖Θ‖
后面一项为正则项。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK