Py学习  »  机器学习算法

推荐系统遇上深度学习(九十六)-[第四范式]考虑域内信息和多模块非线性融合的NON模型

小小挖掘机 • 3 年前 • 438 次点击  

本文介绍的论文是SIGIR20上第四范式发表的一篇文章,针对当前推荐系统模型没有利用域内信息,不同数据泛化性较差等问题,提出了Network On Network(简称NON),一起来学习一下。

1、背景

大多数推荐系统中所使用的数据都是表格型数据,如下图所示,每一列可以称为一个field:

目前大多数推荐系统使用的是深度学习模型如Wide & Deep,DeepFM、xDeepFM或AutoInt,这些模型均由DNN和其他的操作如FM、Linear、Self-attention、CIN等一项或几项组成,在最后的输出层,将这几部分输出进行线性加权,最后经过sigmoid后得到点击率预估值:

但上述的模型存在以下三方面的问题:

1)往往只考虑不同域特征之间的交叉,域内信息没有充分考虑。这里个人感觉意思大概是说广告ID的embedding不仅能够表示这个广告,还应带有广告域的信息。所有广告ID对应的embedding应该具有一定的相似度。
2)不同的模型结构是确定的,在不同数据上的泛化性能不能保证,无法根据不同数据的特性选择合适的结构。
3)最后的输出层均采用的是线性加权的方式,忽略了不同模块输出之间的非线性关系。

为了解决上述三方面的问题,论文提出了Network On Network(简称NON),我们将在下节进行介绍。

2、Network On Network

整个NON的模型结构如下图所示:

整体模型可以拆分成三部分,分别是Field-wise network、Across field network和Operation fusion network。接下来对这三部分进行介绍。

2.1 Field-wise network

在Field-wise network,每一个域都有对应的DNN网络,因此称为Field-wise。域对应的DNN网络用来提取域内信息:

在网络的最后部分,会对原始的embedding和经过NN网络处理的embedding进行融合:

函数F可以是连接,对位相乘或者更加复杂的操作如门控机制。

2.2 Across field network

经过Field-wise network,每个域输出对应的embedding,接下来就是我们比较熟悉的方式了。Across field network包含了多个计算模块,包括:线性模块、DNN、self-attention、Bi-Interaction。其中Bi-Interaction是FM的泛化形式,计算公式如下:

这里各部分的具体内容不再做介绍,不太了解的同学可以查阅相关资料。

2.3 Operation fusion network

在最后的Operation fusion network,首先将Across field network各模块的输出进行拼接,再经过DNN网络得到最终的输出:

在这一部分,还使用辅助loss来帮助模型进行更好的学习,这里参考的论文是《Going deeper with convolutions》。其结构如下:

具体的,对每一层网络的输出,都通过一层LR来预测对应的点击率,并与真实值计算logloss,这样每一层网络都能够有不错的区分性:

最终的loss形式为:

最后简单总结一下,模型的三部分分别对应第一节中提出的三个问题:

1)使用Field-wise network来提取域内信息
2)使用Across field network融合不同的计算模块,计算模块可任意组合
3)通过Operation fusion network,以非线性的方式融合各模块的输出,并通过辅助loss来加速网络学习

3、实验结果及分析

最后,咱们来看一下实验结果。需要验证的问题主要有以下四个。

首先,NON的结构设计是否合理?从下表来看,当包含所有的三个模块时,在所有的数据集上都达到了最好的结果:

其次,与baseline模型相比,NON能否取得更好的效果?从下表看,在不同的数据集上,NON都取得了比baseline模型更好的结果:

然后,对于不同的数据集来说,在Across field network使用的模块是否都是相同的?如果不同,不同的数据集使用的最优模块组合是什么?可以看到,不同数据集在使用不同模块组合时,AUC都是不相同的,最优状态下模块组合方式也不尽相同。不过可以总结出的一条经验是:对于小数据集来说,选择更少的模块能够取得更好的效果,对于大数据来说,需要更多更复杂的操作来取得更好的效果。

最后,field-wise network能否有效提取域内信息?这里,随机选择不同数据集中两个field的数据,将不经过field-wise network的embedding和经过field-wise network得到的embedding分别使用t-SNE进行降维并绘制散点图。可以看到,经过field-wise network后的embedding,相同field的embedding更加接近,不同field间embedding的区分性更好。

好了,论文就介绍到这里。论文中提出的网络结构,辅助loss这几个思路都不错,感兴趣的同学可以阅读原文或者在自己的业务上进行一定的尝试。

推荐系统遇上深度学习(九十三)-[谷歌]提升谷歌网盘推荐质量的工业经验

2020-10-02

推荐系统遇上深度学习(九十四)-[华为]一种实用的增量式深度CTR模型训练方法

2020-10-04

推荐系统遇上深度学习(九十五)-[雅虎]点击率预估中的软频率控制

2020-10-05

推荐系统遇上深度学习(九十二)-[腾讯]RecSys2020最佳长论文-多任务学习模型PLE

2020-10-01



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/74167
 
438 次点击