美文网首页
推荐系统-Deep&Cross Network模型

推荐系统-Deep&Cross Network模型

作者: 菜鸡不得行 | 来源:发表于2019-07-27 23:30 被阅读0次

    模型构造

    一个DCN模型从嵌入和堆积层开始,接着是一个交叉网络和一个与之平行的深度网络,最后是组合层,结合了两个网络的输出。模型如图:


    嵌入和堆积层

    考虑离散和连续特征的输入数据,在网络规模的推荐系统中,如CTR预测,输入主要是categories特征,比如"country=China",这些特征通常通过独热编码,将其编码为独热向量,比如"[0,0,1,0]", 然而,这样往往会出现高维特征空间。为了减少维数,我们利用嵌入,将这些离散特征转换成实数值的稠密向量(通常称为嵌入向量)。
    \large{x_{embed,i}=W_{embed,i}x_i}
    然后,将嵌入向量和连续特征堆积起来,形成一个向量。
    \large{x_0=[x^T_{embed,1},...,x^T_{embed,k},x^T_{dense}]}
    x_0 作为Cross network和 Deep network的输入。

    因为在输入层面,只有embedding和continuous,特征交叉在交叉网络中实现。

    Cross Network

    交叉网络的核心是以有效的方式应用显示特征交叉。交叉网络由交叉层组成,第l+1 层的cross layer为:
    \large{x_{l+1}=x_0x^T_lw_l+b_l+x_l=f(x_l,w_l,b_l)+x_l}
    一个交叉层如下图:

    由上图可以看出,交叉网络的的总参数量非常少,仅仅为layers\times d\times 2, 每一层的维度也都保持一致,最后的output依然与input维度相等。另一方面,特征交叉的概念体现在每一层,当前层的输出的交叉特征都要与第一层输入的原始特征做一次两两交叉,至于在最后又把x_l 加上,应该是借鉴了ResNet的思想,模型最终拟合的是x_{l+1}-x_l 这一项的残差。从cross layer的表示公式中也能看出,实际的特征交叉部分f(x,w,b)=x_{l+1}-x_l,拟合就是残差。

    Deep Network

    深度网络就是一个全连接的前馈神经网络,每个深度层都有如下公式:
    \large{h_{l+1}=f(W_lh_l+b_l)}
    假设所有的层都是一样的大小,L_d表示层的深度,m表示层的尺寸,在深度网络中,参数量为:
    \large{d\times m+m+(m^2+m)\times (L_d-1)}
    可以看出整个网络结构的参数量主要还是在深度网络一侧。

    Combination Layer

    组合层将两个并行网络的输出连接起来,经过一层全连接层得到输出:
    \large{p=\sigma([x^T_{L_1},h^T_{L_2}]w_{logits})}
    采用对数损失函数,形式如下:
    \large{loss=-\frac{1}{N}\sum_{i=1}^Ny_ilog(p_i)+(1-y_i)log(1-p_i)+\lambda\sum_l\mid\mid w_l\mid\mid^2}

    总结

    DCN能有效地找出有限度的有效特征的相互作用,学会高度非线性的相互作用,不需要人工特征或遍历搜索,并具有较低的计算成本。实验结果表明,DCN在对数损失函数上与DNN相比,少了近一个量级的参数量。

    参考资料

    https://arxiv.org/abs/1708.05123

    https://nirvanada.github.io/2017/12/14/DCN/

    相关文章

      网友评论

          本文标题:推荐系统-Deep&Cross Network模型

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