DCN的Cross操作的优缺点

Cross层特征交叉的推导过程

DCN全称Deep Crossing Network,模型介绍可以见 这篇文章。DCN的关键设计在于Cross层,假设输入为特征向量 x 0 x_0 x0,其每一层的运算过程为 :

x i + 1 = x 0 x i T w i + 1 + x i x_{i+1}=x_0x_{i}^Tw_{i+1}+x_i xi+1=x0xiTwi+1+xi

可视化为:

在这里插入图片描述

前面推荐阅读的文章详细推导了为什么有 i i i 层的Cross操作可以得到从 1 阶到 i + 1 i+1 i+1 阶的任意的特征组合,这里截图放在这里方便后面引用其中符号:

在这里插入图片描述

来自xDeepFM的diss

后来看到xDeepFM的论文,其首先证明了Cross操作的输出是输入 x 0 x_0 x0标量倍,证明过程:

在这里插入图片描述

该论文的总结我是比较认同的,即DCN的缺点在于两点,一是其输出仍然是输入的标量倍,二是这种特征交互是将特征向量的每一位(bit)看做是一个特征,才可以认为是得到了高阶的交叉特征(特征的连乘)。但是对于这两点我认为需要补充一些想法:

关于第一点,即DCN的输出仍然是输入的标量倍。从这个结论并不是很直观能看到Cross运算的缺陷,从前面的推导过程来看,最后输出的特征向量确实包含了从 1 阶到 i + 1 i+1 i+1 阶交叉特征(一阶的 x 0 x_0 x0 x 1 x_1 x1,二阶的 x 0 2 x_0^2 x02 x 0 x 1 x_0x_1 x0x1等等),交叉特征都在每个分量内部作为求和项了,也都含有参数项。但一个容易被忽略的事实是:交叉特征的系数并非相互独立。举个例子,在得到的 X 1 X_1 X1 向量表达式中:

在这里插入图片描述

假设将两个分量直接相加(加权相加结论也不变),二次项 x 0 , 1 x 0 , 2 x_{0,1}x_{0,2} x0,1x0,2 的系数 w 0 , 1 + w 0 , 2 w_{0,1}+w_{0,2} w0,1+w0,2正是 x 0 , 1 2 x_{0,1}^2 x0,12 的系数 w 0 , 1 w_{0,1} w0,1 x 0 , 2 2 x_{0,2}^2 x0,22 的系数 w 0 , 2 w_{0,2} w0,2 的线性组合。如果用最传统的方法(Wide&Deep的Wide一侧仍然是这种思路),直接手工构造交叉特征并使用逻辑斯谛回归来拟合的话,每个交叉特征应该有独立于其他特征的参数,而此处DCN虽然得到所有交叉特征,但系数却是相互限制的,自由度低了很多,因此并不能等价于传统的手动构造交叉特征+LR,这自然会限制其表达能力。

关于第二点,即特征交互是一种bit-wise的方式,这种隐式的“特征交叉”使用DNN即可完成(Despite the powerful ability of learning an arbitrary function from data, plain DNNs generate feature interactions implicitly and at the bit-wise level.)。确实,如果输入的特征向量是Embedding层的输出,Cross操作就是在特征的bit上做交叉,并没有直观上的含义。不过,如果我们给定的输入是原始特征:对于数值型特征直接使用其值,对于类别型特征,将其转换成 k k k 个二元特征, k k k 为原本的类别数目,那么Cross操作得到的交互就是特征级别的了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值