阿里CAN:特征交互的新思路

2020-12-15  本文已影响0人  小新_XX

导读:全文约3300字,分为以下5个部分,请按需阅读。
I. 研究背景:特征交互与笛卡尔积
II. CAN的实现:模型结构,实现细节,多阶优化以及各模块间的独立性
III. 实验结论:与各类state-of-the-art模型的比较
IV. 模型线上部署:serving时遇到的问题和解决方案
V. 总结
文中图片均来自于论文原文。

本篇文章介绍了阿里妈妈定向广告团队的最新作品:Co-Action Net(以下简称CAN)。CAN提出了一种全新的特征交互思路,将待交互的特征(用户侧和商品侧特征)分别作为DNN的输入和权重,用DNN的输出作为特征交互的结果。CAN在提升了特征交互的表达能力同时,降低了传统的笛卡尔积交叉所需要的计算复杂度。
论文地址:https://arxiv.org/abs/2011.05625.
作者的知乎专栏:https://zhuanlan.zhihu.com/p/287898562

I. 研究背景

在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进行交互,学习的难度会大大降低。


图1

对于特征交互,最基本的方式就是做笛卡尔积(Cartesian Product)。在tensorflow中,这个操作就是cross column[1]. 对于特征A和B,笛卡尔积将两者组合成一个新特征(A, B);改变A或B的值,就会得到一个全新的特征。这种方式可以刻画出A、B间的所有组合。在训练样本充足,不考虑性能的情况下,笛卡尔积是最好的特征交互方式。但笛卡尔积有两个缺点:

II. Co-Action Network

顾名思义,CAN的目的在于建模不同特征之间的Co-Action,可以理解为一种新的特征交互方式。简单来说,该论文实现了一个pluggable的CAN网络单元,将待交互的两类特征分别作为CAN网络的输入和权重,网络的输出作为特征交互的结果。

2.1 Co-Action Net的结构

图2

图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中的全连接网络记为MLP_{can},候选商品特征P_{item} \in R^{M\rm xT}作为MLP_{can}网络的weight和bias,而用户行为序列特征 P_{user} \in R^{M\rm xD}则是MLP_{can}网络的输入。这里M是所有unique ID的个数,即item ID的参数空间;DT是embedding size,且D<T. 在广告系统中,与用户点击过的商品相比,target item的个数较少,因此用P_{item}来作为MLP_{can}的参数。 由于P_{item}包含了MLP_{can}多层的参数,因此其维度需要大于P_{user},即D<T. P_{item}通过split和reshape操作转化为weight和bias参数,这一过程可以表述如下:

weight展开
其中w^{(i)}b^{(i)}表示MLP_{CAN}i层的参数。至此,整个CAN的计算过程可以表示为:
CAN计算过程
对于序列特征P_{user},论文中是将CAN作用于序列中的每一个item, 再进行sum pooling操作。

与其他特征交互方式相比,CAN有以下几个优点:

2.2 Multi-order Enhancement

前述的CAN结构只能显示地建模一阶特征交互。对于更高阶的情况,可以通过高阶输入来实现,即



其中c是特征交互的阶数。

2.3 Multi-level Independence

论文中引入了3种做法来保证CAN学习的独立性。

III 实验结论

3.1 CAN对比其他特征交互模型


由Table 2可以看出,CAN在两个实验数据集上的AUC指标均优于PNN,NCF[2],DeepFM;除此之外,笛卡尔积(Cartesian)作为最基础的特征交互手段,其结果是优于PNN,NCF和DeepFM的。但CAN的实验结果甚至比笛卡尔积还要好,这里的原因我想有两点:

3.2 对于新特征组合的泛化性

为了验证CAN的泛化性,作者将test数据集中的那些在训练集中出现过的特征组合都删除,构造了一个冷数据测试集,该测试集中所有的特征组合都是模型之前没有见过的。实验结果如Table 5 所示:



可以看出,NCF和DeepFM的结果要优于笛卡尔积。与Table 2中的结论相比,证明笛卡尔积的泛化性确实存在问题;同时,CAN的AUC最高,也证明了CAN结构的泛化性明显强于笛卡尔积以及其他的特征交互方式。

IV 模型部署上线

笔者认为这是本论文最精华的部分之一。作者在本节中详细论述了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,会带来更大的负担。

为了解决以上问题,论文中采用了以下方案:

V. 总结

特征间的交互对ctr预估模型具有重要的意义。本论文阐述了笛卡尔积和一些常用模型结构(FM,PNN,DeepFM等)的不足,提出了一种新型网络CAN来建模Feature Co-Action。CAN用DNN的输入和权重来建模特征交互,既解决了笛卡尔积的空间复杂度和泛化性问题,又能够获得较好的特征交互效果(体现在模型auc的指标上)。同时,引入了多阶输入(multiorder enhancement )和模块间的独立性(multi-level independence)使CAN的功能更加完备。最后介绍了模型上线遇到的困难和解决方案,对大型ctr预估模型的部署有很大的借鉴意义。

参考资料
[1] https://tensorflow.google.cn/tutorials/structured_data/feature_columns?hl=en
[2] Xiangnan He, Lizi Liao, Hanwang Zhang, Liqiang Nie, Xia Hu, and Tat-Seng Chua. 2017. Neural collaborative filtering. In Proceedings of the 26th international conference on world wide web. 173–182.
[3] https://zhuanlan.zhihu.com/p/287898562

.

上一篇下一篇

猜你喜欢

热点阅读