美文网首页
DeepFM &DCN

DeepFM &DCN

作者: cassie_xs | 来源:发表于2019-08-21 22:19 被阅读0次

总述:DeepFM和DCN均是wide&deep在wide部分的改进

1:DeepFM

主要做法如下:

首先,使用FM Component + Deep Component。FM提取低阶二阶组合特征,Deep提取高阶组合特征。但是和Wide&Deep不同的是,DeepFM是端到端的训练,不需要人工特征工程。         

其次,共享feature embedding。FM和Deep共享输入和feature embedding不但使得训练更快,而且使得训练更加准确。                                                                                                                                                    

相比之下,Wide&Deep中,input vector非常大,里面包含了大量的人工设计的pairwise组合特征,增加了他的计算复杂度。


1.1 DeepFm详解

1) field: field是什么呢?可以理解为一种分类,即相同性质的特征放在一个field。 比如Male、Female都是属于性别field的。简单的说,同一个类别特征进行one-hot编码后生成的数值特征都可以放在同一个field中。如果是数值特征而非类别,可以直接作为一个field。

2)输入是field特征,每个field可能是one-hot 特征 或者是连续特征。

3)FM部分

 上图注:                        

3.1 FM模块实现了对于1阶和2阶组合特征的建模                                                                                                       

3.2 没有使用预训练   

3.3 没有人工特征工程                               

 3.4 embedding矩阵的大小: 特征数量*嵌入维度. 然后用一个index表示选择了哪个特征                                                                                                                                              

需要训练的有两部分:                         

3.5 input_vector和Addition Unit相连的全连接层,也就是1阶的Embedding矩阵  W                                                                                                      

3.6 Sparse Feature到Dense Embedding的Embedding矩阵,中间也是全连接的,要训练的是中间的权重矩阵,这个权重矩阵也就是隐向量V 也就是下问的隐向量

y = w_{0}+ \sum_{i=1}^nw_{i}  +\sum_{i=1}^n \sum_{j=i+1}^nw_{ij}x_{i}x_{j}

因为要学习w_{ij} 必须x_{i} x_{j} \neq 0,而对于稀疏向量来说很难训练w_{ij} ,故引入隐向量

y = w_{0}+ \sum_{i=1}^nw_{i}  +\sum_{i=1}^n \sum_{j=i+1}^n<v_{i},v_{j}>x_{i}x_{j}

好处:w_{ij}=<v_{i},v_{j}>,只要可以找到一个不为0的<v_i,v_j> 和 <v_i,v_l> ,它们之间有共同项 v_{i},因此所有包含 x_i 的非零组合特征的样本都可以用来学习隐向量 v_i,这在很大程度上避免了数据稀疏性造成的影响。

小trick:目的是减少参数个数,二次项的参数数量减少为kn个,远少于多项式模型的参数数量n(n-1)/2

4)deep部分

Deep 部分:是用来学习高阶组合特征的。网络里面黑色的线是全连接层,参数需要神经网络去学习。

由于CTR或推荐系统的数据one-hot之后特别稀疏,如果直接放入到DNN中,参数非常多,我们没有这么多的数据去训练这样一个网络。所以增加了一个Embedding层,用于降低纬度。

这里继续补充下Embedding层,两个特点:

尽管输入的长度不同,但是映射后长度都是相同的.embedding_size 或 k embedding层的参数其实是全连接的Weights,是通过神经网络自己学习到的

***:FM模块和Deep模块是共享feature embedding的(也就是隐向量V 权重共享).

好处:模型可以从最原始的特征中,同时学习低阶组合特征 不再需要人工特征工程. 而Wide&Deep中低阶组合特征就是通过传统的特征工程得到的。

参考 https://arxiv.org/abs/1703.04247 以及https://blog.csdn.net/qq_34333481/article/details/89852142

实践部分推荐:https://blog.csdn.net/songbinxu/article/details/80151814

2:DCN

可以证明,cross网络是FM的过程在高阶特征组合的推广。参考原论文附录。   

结论:只有两层且权重参数相等时的Cross网络与简化版FM等价。             

Wide&Deep、DCN和DeepFM对比

deepFM中:传统的FM 、离散特征嵌入之后的FM 和基本DNN三个模型融合的结果。

wide & deep 的思路中,deep 部分的做法和 deepFM 是大相径庭的,关键的 wide 部分其实是离线的特征工程,根据业务场景提前完成了特征交叉等处理,该模型可以看作是 DNN 与离线特征模型的融合结果。

DCN: 网络中我们可以发现,deep 部分网络除了使用离散嵌入特征外,还拼接了数值型特征;cross 部分网络直接完成了特征组合,对比FM 层它可以学到更高阶的组合 特征,对比 wide 网络它不需要做线下的特征工程。

参考论文 https://arxiv.org/abs/1708.05123和https://blog.csdn.net/hcm_0079/article/details/90209974

相关文章

网友评论

      本文标题:DeepFM &DCN

      本文链接:https://www.haomeiwen.com/subject/oynesctx.html