DCN论文精读

论文地址:https://arxiv.org/abs/1708.05123

摘要

     特征工程对于预测模型的成功非常关键。然而,这个过程是不简单的,并且常常需要人工处理,或者大量的搜索。DNNs可以自动学习特征交互,但他们生成的都是隐式交互并且在很多特征交互的学习中并不一定有效。本文中,我们提出了Deep & Cross Network(DCN),在保持DNN模型优势的同时,引入一个新颖的交叉网络,使得学习一些有界度(bounded-degree)的特征交互更有效。尤其是,DCN显示地在每层应用特征交互,相对DNN模型只花费了极少的代价从而避免了人工特征工程。我们的实验结果证明了它是最优的模型,在CTR预测数据集和稠密分类数据集(dense classification dataset),无论是模型准确率还是内存使用情况。

现存问题以及传统解决方案

     大规模网页推荐系统的数据大多数都是离散的和分类别的,导致数据的稀疏性和高维性。这对特征的交互探索是非常具有挑战性的。并且导致大部分的大规模系统只能使用线性模型,如逻辑回归。然而,线性模型的表示能力差,学习不了特征交互信息,通常需要事先进行人工特征工程,这对大规模数据来说是不太现实的。
     传统的解决方案有:基于向量表示技术和神经网络。FMs[11,12]将高维稀疏特征映射到低维稠密向量,然后通过向量的内积来表示特征之间的交互。FFMs[7,8]在FM的基础上区分特征的Field。DNN可以学习到特征高阶交互信息。

传统模型存在的问题

     FM和FFM这种浅层结构只能学习到一些低阶的特征交互。 虽然FM能扩展到特征高阶的交互学习,但是需要花费很大计算的代价。
     DNN虽然可以学习特征的高阶交互,但是对于有界度的特征交互并不是很有效。

本文模型

     DCN模型可以非常高效地学习有界度的特征交互信息,以及高阶的非线性交互信息。模型主要有embedding和stacking层、cross network和deep network层,以及最后的combination层,如图所示:
在这里插入图片描述
embedding层主要是将高维稀疏的特征转换成低维稠密的向量: x e m b e d , i = W e m b e d , i x i \mathbf{x}_{embed,i}=W_{embed,i}\mathbf{x}_i xembed,i=Wembed,ixi最后得到网络的输入: x 0 = [ x e m b e d , 1 T , . . . , x e m b e d , k T , x d e n s e T ] x_0=[\mathbf{x}_{embed,1}^T,...,\mathbf{x}_{embed,k}^T,\mathbf{x}_{dense}^T] x0=[xembed,1T,...,xembed,kT,xdenseT]DCN关键在于CRoss Network,其每层的计算为: x l + 1 = x 0 x l T w l + b l + x l = f ( x l , w l , b l ) + x l \mathbf{x}_{l+1}=\mathbf{x}_0\mathbf{x}_l^T\mathbf{w}_l+\mathbf{b}_l+\mathbf{x}_l=f(\mathbf{x}_l,\mathbf{w}_l,\mathbf{b}_l)+\mathbf{x}_l xl+1=x0xlTwl+bl+xl=f(xl,wl,bl)+xl为什么cross network有效,论文中用了三种角度:多项式逼近, FMs的泛化, 和有效映射。cross network每层的计算如图:
在这里插入图片描述
通过计算可以表示成:
在这里插入图片描述
从以上的计算逻辑看,有点像FM的二阶项,但是FM只能构建二阶交互,构建高阶交互的话,计算资源呈指数增长,而Cross Network可以通过网络的深度来构建高阶的特征交互。
模型的复杂度: d × L c × 2 d \times L_c \times 2 d×Lc×2其中 d d d是输入维度, L c L_c Lc是网络深度。是一个线性。
     鉴于Cross Network参数规模,限制了它对非线性高阶的特征交互的学习能力。所以还需要一个并行全连接网络DNN。 h l + 1 = f ( W l h l + b l ) \mathbf{h}_{l+1}=f(W_lh_l+b_l) hl+1=f(Wlhl+bl)
最后再加一个带sigmoid函数的连接层作为输出层。 p = σ ( [ x L 1 T , h L 2 T ] w l o g i t s ) p=\sigma([\mathbf{x}_{L_1}^T,\mathbf{h}_{L_2}^T]\mathbf{w}_{logits}) p=σ([xL1T,hL2T]wlogits)
整个模型的损失函数: l o s s = − 1 N ∑ i = 1 N y i l o g ( p i ) + ( 1 − y i ) l o g ( 1 − p i ) + λ ∑ l ∣ ∣ w l ∣ ∣ 2 loss=-\frac{1}{N}\sum_{i=1}^Ny_ilog(p_i)+(1-y_i)log(1-p_i)+\lambda\sum_l||\mathbf{w}_l||^2 loss=N1i=1Nyilog(pi)+(1yi)log(1pi)+λl∣∣wl2

实验效果

     对比现有的模型,取得了较好的结果。logloss输出最低,相同参数的内存消耗比dnn低。同时取得了最好的auc结果。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值