本篇文章介绍了阿里妈妈定向广告团队的最新作品:Co-Action Net(以下简称CAN)。CAN提出了一种全新的特征交互思路,将待交互的特征(用户侧和商品侧特征)分别作为DNN的输入和权重,用DNN的输出作为特征交互的结果。CAN在提升了特征交互的表达能力同时,降低了传统的笛卡尔积交叉所需要的计算复杂度。 论文地址: . 作者的知乎专栏:
在CTR预估任务中,特征间的交互一直是业界研究的热点。由于DNN以一个隐式的方式来学习输入特征,很难单纯依靠DNN来从庞大的稀疏特征集中学习到有效的特征交互,因此许多工作都在特征工程中采用了了手动特征交互,FM, FNN, PNN, DCN和DeepFM等都从不同的方面阐述了这一点,感兴趣的同学可以参考笔者之前的文章: 《从FM到DeepFM:浅谈推荐系统中的模型演化》 。
在推荐系统模型的构建中,特征工程占有十分重要的地位。在海量的输入特征中,用户行为(user behaviors)和推荐商品(recommended item)两者的交互可以准确地建模用户兴趣,论文作者将这种交互特征统一命名为co-action. 如图1所示:A和B代表模型的输入,Target可以为ctr的预估值。一般来说,可以由DNN来学习A和B之间的关系。但如果我们在输入端就手动将A、B进行交互,学习的难度会大大降低。
对于特征交互,最基本的方式就是做 笛卡尔积(Cartesian Product) 。在tensorflow中,这个操作就是cross column[1]. 对于特征A和B,笛卡尔积将两者组合成一个新特征(A, B);改变A或B的值,就会得到一个全新的特征。这种方式可以刻画出A、B间的所有组合。在训练样本充足,不考虑性能的情况下,笛卡尔积是最好的特征交互方式。但笛卡尔积有两个缺点:
顾名思义,CAN的目的在于建模不同特征之间的Co-Action,可以理解为一种新的特征交互方式。简单来说,该论文实现了一个pluggable的CAN网络单元,将待交互的两类特征分别作为CAN网络的输入和权重,网络的输出作为特征交互的结果。
图2展示了CAN的基本结构。输入特征可以分为用户行为序列(user behavior sequence),候选商品(target item),用户画像特征(user age 等)和其他特征。其中user sequence、target item和other feature通过embedding层后输入到DIEN网络结构。对于CAN部分,user sequence和target item的embedding被用作CAN的输入和权重参数,最后输出的结果sum pooling起来,与DIEN的输出concat在一起过后面的DNN部分。下面重点介绍一下整个网络结构中的关键:Co-Action Unit.
CAN的整体实现逻辑还是比较简单的。将CAN中的全连接网络记为 ,候选商品特征 作为 网络的weight和bias,而用户行为序列特征 则是 网络的输入。这里 是所有unique ID的个数,即item ID的参数空间; 和 是embedding size,且 < . 在广告系统中,与用户点击过的商品相比,target item的个数较少,因此用 来作为 的参数。 由于 包含了 多层的参数,因此其维度需要大于 ,即 < . 通过split和reshape操作转化为weight和bias参数,这一过程可以表述如下:
与其他特征交互方式相比,CAN有以下几个优点:
前述的CAN结构只能显示地建模一阶特征交互。对于更高阶的情况,可以通过高阶输入来实现,即
其中c是特征交互的阶数。
论文中引入了3种做法来保证CAN学习的独立性。
由Table 2可以看出,CAN在两个实验数据集上的AUC指标均优于PNN,NCF[2],DeepFM;除此之外,笛卡尔积(Cartesian)作为最基础的特征交互手段,其结果是优于PNN,NCF和DeepFM的。但CAN的实验结果甚至比笛卡尔积还要好,这里的原因我想有两点:
为了验证CAN的泛化性,作者将test数据集中的那些在训练集中出现过的特征组合都删除,构造了一个冷数据测试集,该测试集中所有的特征组合都是模型之前没有见过的。实验结果如Table 5 所示:
可以看出,NCF和DeepFM的结果要优于笛卡尔积。与Table 2中的结论相比,证明笛卡尔积的泛化性确实存在问题;同时,CAN的AUC最高,也证明了CAN结构的泛化性明显强于笛卡尔积以及其他的特征交互方式。
笔者认为这是本论文最精华的部分之一。 作者在本节中详细论述了CAN模型在部署到阿里巴巴展示广告系统时遇到的一些困难和解决方案,对复杂ctr预估模型的落地有很大的指导意义。
特征交互,是在原始特征的基础上对特征对(feature pair)进行额外的组合,势必会引入额外的存储和计算开销。我们知道,CTR模型的大部分参数都集中在embedding部分,而笛卡尔积会让embedding大小线性增加。对于两个维度( 此处维度指unique IDs的数目 )为M和N的特征,笛卡尔积需要引入一个(M x N, embedding_size)大小的embedding矩阵;除此之外,新增的embedding也会引入更多的lookup操作,严重影响模型的响应时间,latency增大。作者提到即使采用了IDs frequency filtering(个人理解是根据ID出现的频率,过滤掉一部分低频ID来减小参数量,即低频过滤)也无法缓解。
对于CAN模型,虽然参数大大减小,但以上问题还是会影响到模型的部署。论文中使用了6个ad侧特征和15个用户侧特征进行交互,理论上这样会引入15 x 6 = 90个特征组合。而用户侧特征多为用户的行为序列,普遍长度都超过100,会带来更大的负担。
为了解决以上问题,论文中采用了以下方案:
特征间的交互对ctr预估模型具有重要的意义。本论文阐述了笛卡尔积和一些常用模型结构(FM,PNN,DeepFM等)的不足,提出了一种新型网络CAN来建模Feature Co-Action。CAN用DNN的输入和权重来建模特征交互,既解决了笛卡尔积的空间复杂度和泛化性问题,又能够获得较好的特征交互效果(体现在模型auc的指标上)。同时,引入了多阶输入(multiorder enhancement )和模块间的独立性(multi-level independence)使CAN的功能更加完备。最后介绍了模型上线遇到的困难和解决方案,对大型ctr预估模型的部署有很大的借鉴意义。
.