文章作者:周浩 第四范式 研究员
编辑整理:汪方野
出品平台:第四范式天枢、DataFunTalk
首先对推荐系统和深度学习进行简单的介绍。什么是推荐系统?什么是深度学习?
1. Recommendation system ( 推荐系统 )
维基百科给出对于推荐系统的定义:推荐系统是一个过滤系统,推荐系统的目标是预测用户对给定物品的评分或者喜好度,然后根据评分或者喜好度推荐给用户对应的物品。
以右图为例,通过user profile和item properties,预测用户对item1-4的打分,预测用户的最后选择item 1和item 2,然后推荐给用户。在现实生活中的应用, 不同的应用软件会向用户推荐商品、电影、书籍、视频等。
2. Deep Learning ( 深度学习 )
维基百科对深度学习的介绍:
深度学习是机器学习的分支,一种基于人工神经网络的表征学习方法;
神经网络是受到生物神经网络的启发,从而构建的计算系统。
一个简单的神经网络分为三个部分:输入特征,隐藏层,预测层。对于全连接的神经网络结构,每一层的神经元都是以前一层所有的输出作为输入。然后每个神经元都有一个非线性的函数,对输出值做一个非线性的变化。有一种说法,只要神经网络的层数够深,它就能拟合或者逼近任何一种函数。这种说法表达了神经网络强大的表征能力,也说明了神经网络主要功能之一,即学习输入到输出的函数变换。
可以将推荐系统分为以下四类,简单介绍基于内容的推荐算法、基于协同过滤的推荐算法、混合推荐算法,重点介绍基于模型的推荐算法。在介绍基于模型的推荐时,先给出了一些浅层的推荐算法,之后介绍了一些基于深度学习的推荐算法。
Contented based:
基于内容的推荐算法。主要根据用户的浏览记录,或者购买记录,向用户推荐与其浏览记录或者购买记录相似的物品。
Collaborative Filter:
基于协同过滤的推荐算法。主要根据拥有相同经验或者相同群体的喜好,为用户推荐感兴趣的资讯或者物品。例如用户A和用户B相似,就可以把用户B喜欢的物品推荐给用户A。协同过滤算法还可以分为基于用户的协同算法和基于物品的协同算法。
Hybrid:
混合推荐算法,将不同的算法混合使用。可以在不同阶段使用不同的推荐算法,也可以对多个推荐算法进行不同的处理,然后将多个推荐算法的结果耦合,将最终结果推荐给用户。
Model Based:
基于模型的推荐算法。将用户的profile和物品的properties作为特征,用机器学习模型,来预测用户对物品的喜好程度。在推荐系统中,经常会用到点击率 ( CTR ) 来表示喜好程度。点击率表示用户点击物品的概率,点击率越高说明用户对该物品的喜好程度越高。
在上图中给出了一个例子,表示用户对电影的点击率。其中每一行是一个样本,每一列是不同的特征,表示用户的属性,电影的特征,以及用户的一些历史行为记录。在每一条样本中,0表示用户没有点击对应的movie,1表示点击对应电影。那么此时问题已经转化为二分类问题。
接下来介绍下基于模型的常见方法:
1. 浅层的基于模型的方法
首先,是一些比较浅层的推荐方法,例如LR、FM、FFM等。逻辑回归算法 ( Logistic Regression,LR ) 是推荐系统的常用方法之一。将用户的浏览记录和项目的信息、离散特征,通过one-hot编码;将数值类特征归一化,或者通过分桶技术,进行离散化;然后通过LR模型进行训练。LR模型很稳定, 但是缺乏学习高阶特征的能力,尤其是特征间的交互。而FM模型和FFM模型则将高度的离散特征通过embedding,转化为低维的稠密向量。然后用稠密向量的内积表示特征之间的交互特征。
上图展示了embedding的过程,Categorical Field xi是高维稀疏离散特征,通过one-hot表示,只有一元为1,其他都是0。因为xi的one-hot表示只有一元为1,通过矩阵乘法,取出Wi矩阵的xi列,得到对应低维的稠密向量。LR、FM和FFM三种模型取得了较好的效果,但由于它们的结构较浅,其表达能力也受到了限制。
2. 基于深度学习的方法
基于深度学习的推荐方法,以其中两个典型的模型为例:DNN模型和Wide&Deep模型。
DNN模型。DNN方法使用了Embedding技术,将离散和数值特征Embedding 到低维的稠密向量。然后和将稠密向量和数值特征拼接,作为DNN的输入,然后直接预测输出。
Wide&Deep模型。Wide&Deep方法,对比DNN方法。增加了Wide的部分,即专家手工设计的高阶特征。然后把高阶特征和DNN学到的特征拼接,作为模型的输入,预测最终的点击率。
其他深度学习的方法借鉴了Wide&Deep的模式。例如,在DeepFM模型中,将专家手工设计的部分 ( Wide部分 ) 替换成了FM;在xDeepFM模型中, 将Wide部分替换成了CNN;在AutoInt模型中,将Wide部分替换成self-attention的网络。
在推荐系统中还有一类方法,基于用户的兴趣, 使用了用户的历史行为数据,例如DIN、DSIN,但是这类方法不在本次讨论范围之内。
3. 上述方法存在的问题
首先,现有方法直接融合不同特征域的向量表示,而未显式地考虑域内信息。我们将"每个特征域内的不同特征值,均属于同一个特征域"记为域内信息。对于每个特征域中的特征,它们的内在属性是都属于同一个特征域。以在线广告场景为例,假设特征域 "advertiser_id" 和 "user_id" 分别表示广告商和用户的ID,则特征域 "advertiser_id" ( "user_id" ) 中的不同的广告商ID ( 用户ID ) 都属于广告商 ( 用户 ) 这个特征域。此外,特征域有自己的含义,如 "advertiser_id" 和 "user_id" 分别代表广告主和用户,而不管域内特征的具体取值。
其次,大多数现有方法使用预定义的特征域交互操作组合 ( 如DNN、FM ),而未考虑输入数据。事实上,预定义的操作组合并不适用于所有的数据,而是应该根据数据选择不同的操作,以获得更好的分类效果。如上图所示:
Wide&Deep中的Operations使用了Linear和DNN;
DeepFM使用了FM和DNN;
xDeepFM使用了CIN、Linear和DNN;
AutoInt中使用了self-attention和DNN。
同时他们在预测时,都是将不同的结果通过线性求和关联起来,没有考虑非线性的关系,即现有方法忽略了特征域交互操作 ( 如DNN和FM ) 的输出之间的非线性。
接下来为大家全面介绍Network on Network。
1. NON模型整体结构
为了解决上述问题,第四范式提出了深度稀疏网络 ( NON ),它由三部分组成:底层为域内网络 ( Field-wise Network ) 中层为域间网络 ( Across Field Network ),顶层为融合网络 ( Operation Fusion Network )。域内网络为每个特征域使用一个DNN来捕获域内信息;域间网络包含了大部分已有的Operation,采用多种域间交互操作来刻画特征域间潜在的相互作用;最后融合网络利用DNN的非线性,对所选特征域交互操作的输出进行深度融合,得到最终的预测结果。
2. Field-wise network
每一个特征Field都和一个NN网络相连,其中类别特征先进行Embedding操作,而数值型特征直接通过NN网络。通过NN网络强大的学习能力,显示地学习特征域内信息。鉴于DNN的强大的表达能力,特征域内信息可以被充分地学习。还有一点需要注意,在模型中还加入了一个Gate Function,将NN的输出和输入耦合起来,常见的Gate Function包括concatenation、element-wise product以及其他更加复杂的操作。对于Field-wise network的详细分析将在实验中介绍。
3. Across field network
在域间网络 ( Across field network ) 中,利用已有的Operation,来学习特征之间的Interaction,这些Operation都是以Field-wise network的输出为输入。常见的特征域交互操作包括LR、DNN、FM、Bi-Interaction和多头自注意网络等。NON在设计上,兼容目前大部分学术上提出的Operation。在实际应用中,NON将Operation作为超参数,在训练过程中根据数据进行选择。现有方法中,域间交互操作的方式是用户事先指定的。而在深度稀疏网络中,可以通过数据,自适应地选择最合适的操作组合,即在深度稀疏网络中,操作组合的选择是数据驱动的。
4. Operation fusion network
在融合网络 ( Operation fusion network ) 中,将域间网络层的输出拼接作为NN的输入,并利用NN的非线性,学习不同Operation的高阶特征表示。
需要注意一点,NON网络设计的特别深,所以在训练过程中,很容易出现梯度消散的现象,导致模型效果变差。受到GoogLeNet的启发,在模型训练过程中引入了辅助损失。在DNN的每一层都加入了一条路径,连接到最终的损失上,缓解了梯度消散问题。经测试,该方案不仅能够增加模型最终预测效果,也使得模型能在更短的时间内,取得更好的效果。如下图所示。
至此模型介绍结束,接下来将分析实验结果。
1. DNN with auxiliary losses
这是在Criteo的采样数据集上的实验结果,图中的横坐标是训练的轮次,纵坐标是AUC。从图上可以看出,通过添加辅助损失,训练效率明显提升。在同等AUC的情况下,产生了1.67倍的加速。本文之后的所有关于NON的训练都是通过添加辅助函数的方式进行训练的。
2. Ablation study of NON
在NON消融学习中,展示NON每一个模块的作用。从左到右:第一列数据集;第二列,只有DNN;第三列,增加辅助损失的DNN,和DNN比较,添加了辅助损失可以提高性能;第四列,添加了Field-wise Network,从结果看出,域内网络捕获的域内信息有助于提高模型的泛化性能;第五列,加入了Across field network,结果有所提升;第六列,完整的NON模型,取得了最好的结果。可以看出随着NON不同的组件堆叠,模型的预测效果持续增长。
3. Study of field-wise network
从定性和定量的角度分析Field-wise network的结果。右图是不同特征域Embedding的可视化展示。第一行是通过Field-wise network之前,第二行是通过Field-wise network之后。不同的颜色表示不同Field中的Embedding。通过对Field-wise network处理前后特征值对应的向量进行可视化的比较,可以看出经过Field-wise network后,每个Field内的特征在向量空间中更加接近,不同Field间的特征也更容易区分。
左侧的表格展示了所有的Field 内部的Embedding 平均余弦相似度 ( 数值越大,相似度越高 )。Field-wise network可以使余弦距离提高一到两个量级,即能有效地捕获每个域内特征的相似性。
4. Study of operations
对Operation的学习,就是对Across field network层的学习。这一部分做了两个实验。在Across field network,深度稀疏网络将不同的交互操作视为超参数,并根据在具体数据验证集上的效果,选择最适合的交互操作。其中,DNN 被视为必选,而其他操作 ( LR、Bi-Interaction和multi-head self-attention ) 被视为可选。第二个试验,通过固定域间网络中的操作组合来进行更多验证。横坐标是不同的组合,纵坐标是AUC。可以看出没有一个操作组合能够在所有数据集上都取得最优效果,这表明了根据数据选择操作组合的必要性。
上表列出了在不同数据集上表现好的Operation组合,可以看到DNN和LR都有,可能是因为LR的稳定性很好。同时,从结果可以看出来,大数据集倾向于选择容量大、复杂的操作组合;小数据集倾向于轻量、简单的操作组合。再一次证明需要对不同的数据集需要选择不同的Operation组合。
5. Comparison with SOTAs
和当前的SOTA模型进行比较。与FFM、DNN、Wide&Deep、NFM、xDeepFM、AutoInt等模型相比,深度稀疏网络在实验数据集上均能获得最好的结果,AUC可提高0.64%~0.99%,结果说明NON模型设计的有效性。其次,看一些细节,在Talkshow数据集上,NFM模型的效果退步,说明网络不一定越复杂越来,需要进行仔细的设计,才能获得较好的结果。结果证明了NON模型设计范式的有效性。
今天的分享就到这里,谢谢大家。
在文末分享、点赞、在看,给个三连击呗~~
嘉宾介绍:
会员推荐:
DataFun会员计划重磅发布!多重权益加持,为你筑就数据科学家之路!扫码了解更多:
文章推荐:
关于我们:
DataFunTalk 专注于大数据、人工智能技术应用的分享与交流。发起于2017年,在北京、上海、深圳、杭州等城市举办超过100场线下沙龙、论坛及峰会,已邀请近500位专家和学者参与分享。其公众号 DataFunTalk 累计生产原创文章300+,百万+阅读,8万+精准粉丝。
🧐分享、点赞、在看,给个三连击呗!👇