机器之心专栏
本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。
本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
本文将分 3 期进行连载,共介绍 18推荐系统任务上曾取得 SOTA 的经典模型。
  • 第 1 期:DSSM、Youtube_DNN、SASRec、PinSAGE、TDM、MIMD
  • 第 2 期:PinnerSAGE、ENSFM、MHCN、FFM、FNN、PNN
  • 第 3 期:Wide&Deep、DCN、xDeepFM、DIN、GateNet、IPRec
您正在阅读的是其中的第 2 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
第 1 期回顾:DSSM、Youtube_DNN、SASRec、PinSAGE…你都掌握了吗?一文总结推荐系统必备经典模型(一)
本期收录模型速览
模型
SOTA!模型资源站收录情况
模型来源论文
PinnerSAGE
https://sota.jiqizhixin.com/project/pinnersage
PinnerSage: Multi-Modal User Embedding Framework for Recommendations at Pinterest
ENSFM
https://sota.jiqizhixin.com/project/ensfm
收录实现数量:2
支持框架:TensorFlow、PaddlePaddle
Eicient Non-Sampling Factorization Machines for Optimal Context-Aware Recommendation
MHCN
https://sota.jiqizhixin.com/project/mhcn
收录实现数量:2
支持框架:TensorFlow、PaddlePaddle
Self-Supervised Multi-Channel Hypergraph Convolutional Network for Social Recommendation
FFM
https://sota.jiqizhixin.com/project/ffm-2
收录实现数量:2
支持框架:TensorFlow
Field-aware Factorization Machines for CTR Prediction
FNN
https://sota.jiqizhixin.com/project/fnn-2
收录实现数量:2
支持框架:TensorFlow
Deep Learning over Multi-field Categorical Data – A Case Study on User Response Prediction
PNN
https://sota.jiqizhixin.com/project/pnn
收录实现数量:2
支持框架:TensorFlow
Product-based Neural Networks for User Response Prediction
推荐系统是指利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程的系统。在广告、电商、信息流分发等业务场景中,推荐系统发挥了至关重要的作用,是帮助用户快速获得感兴趣的信息的关键,也是改进产品以吸引用户、提高用户粘性的关键。推荐系统把用户模型中的兴趣需求信息和推荐对象模型中的特征信息匹配,同时使用相应的推荐算法进行计算筛选,找到用户可能感兴趣的推荐对象,然后推荐给用户。为了实现精准推荐,首先要对用户进行画像。对用户画像打标签后,生成多维度、丰富、全面的用户标签,这些标签就是推荐系统中的特征,而这些特征就是推荐系统中的
推荐算法/模型
的输入数据。利用特征对推荐算法/模型进行离线训练,然后进行A/B测试后,获得最终的
推荐算法/模型
。后续还包括算法/模型的部署、冷启动等流程。


具体到推荐算法/模型部分,一般包括两大环节:召回和排序。

  • 召回主要是指“根据用户的兴趣和历史行为,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品”。召回方法主要要求具备处理数据量大、处理速度快的能力。经典的召回方法包括基于统计的启发式召回和基于深度学习的向量召回方法。本报告主要聚焦于基于深度学习的召回方法。
  • 排序则是指根据多类特征,使用模型进行个性化的推荐。排序环节还可以进一步细分为粗排、精排和重排。
推荐算法/模型在工业场景中应用主要面对下面这些问题:数据量庞大、训练环境低效、在线和离线环境的不一致、上线部署的困难等等。因此,一个好的推荐系统中一般会应用多个推荐算法/模型,而每个推荐算法/模型的最佳效果需要工程师在实践中摸索调试出来的,每个基础模型又有很多改良版本,针对不同的问题效果也可能不同。
我们在这篇报告中总结的是能够在推荐系统中应用的必备的TOP基础推荐算法/模型
一、召回模型

1、 PinnerSage

PinnerSage的出发点是单一的用户嵌入无法很好的表示用户的多个兴趣,所以提出一个多模式的用户嵌入方式,使用层次化聚类的方法将用户行为历史的点击物品聚为k个类别来表示用户的兴趣。


PinnerSage的处理步骤具体如下:

第一步,聚类用户行为。具体要求是:类中的物品尽可能相似,并且聚类数目是由算法决定并不是人为规定的。所以选择了Ward层次化聚类算法来达到上述目标。首先,算法1将每个pin分配到它自己的集群。在随后的每一步,将集群内方差增加最小的两个集群合并在一起。假设经过一些迭代后,我们有集群{C1,C2,. .},集群Ci和Cj之间的距离表示为d_ij。那么,如果两个聚类Ci和Cj被合并,其距离将被更新如下:


第二步:表示每个聚类结果。为了使表示结果更具有鲁棒性,对于每个聚类表示并不是取所有embedding的均值,而是选择类中的某个物品,使这个物品与类中的其他物品距离最小,具体优化目标如下:

第三步:类别重要性。尽管一个用户的集群数量不多,但仍可能是几十到几百个的数量。由于信息成本的原因,我们不能利用所有的集群来查询最近的邻居系统;因此必须确定集群对用户的相对重要性,这样我们就可以根据它们的重要性得分对集群进行抽样。为此,考虑采用时间衰减平均模型:

其中,T[i]是用户对pin i的行动时间。一个最近被频繁互动的集群将比其他集群的重要性更高。算法2提供了一个PinnerSage模型的端到端概述。我们注意到,该模型对每个用户都是独立运行的,因此它可以在基于MapReduce的框架上相当有效地并行实现。

最后,PinnerSage推荐系统的完整流程如图1所示。
图1 PinnerSage推荐系统流程
项目
SOTA!平台项目详情页
PinnerSage
前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/pinnersage

2、  ENSFM

现有的将深度学习应用于大推荐系统任务的工作主要集中在探索和引入不同的神经网络架构,在模型学习算法方面的研究相对较少。为了优化模型,现有的工作往往使用负采样策略(Negative Sampling)进行训练。虽然负采样方便并且易于实现,但是许多最近的研究表明负采样策略的鲁棒性较差,可能会忽略掉重要的训练样例从而导致模型无法收敛到最优的状态。清华大学信息检索课题组(THUIR)首次探索了将非采样策略(Non-Sampling, Whole-data based Learning)应用到基于神经网络的推荐系统中,提出了Efficient Non-Sampling Factorization Machines(ENSFM)。ENSFM整体架构如图2。

图2. ENSFM框架说明,显示了如何以矩阵分解的方式表示FM(为了清晰起见,图中没有显示一阶线性回归部分)
ENSFM的目标是在没有负采样的情况下合理地学习FM(Factorization Machines )模型,从而实现情境感知推荐的最佳排名性能。ENSFM的预测功能遵循基于广义嵌入的FM,即:

(1) 情境输入通过嵌入转换为密集的向量表示。具体来说,用户背景和物品背景分别表示为e
u
和e
v
。输出yˆ_F M (x)是一个预测的分数,表示用户u对物品v的偏好。

(2) 通过记忆策略设计,我们将上式的调频得分重新表述为一个没有任何近似的广义矩阵分解函数:yˆ_F M (x) = (h_aux)^T (p_u⊙ q_v) ,其中,p_u、q_v和h_aux是辅助向量,分别表示用户u、项目v和预测参数。

(3) 本文提出了一种有效的mini-batch非采样算法来优化ENSFM框架,由于在每次参数更新中都考虑了所有的样本,因此更加有效和稳定。

上式中的二阶特征交互f(x),可以重写如下:

首先,重新组织f_BI(u)和f_BI(v)以达到线性时间复杂度。以f_BI(u)为例:

第二,p_u和q_v是相互独立的(也就是说,当u与不同的项目互动时,p_u不会改变)。因此,我们可以通过预先计算辅助向量以避免大量的重复计算来实现显著的速度提升。最后,在建立辅助向量后,将ENSFM的预测重新表述为一个MF函数。得到一批用户的非采样损失如下:

算法1总结了ENSFM的加速算法。

当前 SOTA!平台收录 ENSFM 共 2 个模型实现资源。
项目
SOTA!平台项目详情页
ENSFM
前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/ensfm

3、 MHCN

MHCN(Multi-Channel Hypergraph Convolutional Network)是一个多通道超图卷积网络,利用高阶用户关系来增强社交推荐。从技术上讲,网络中的每个通道都通过超图卷积来编码一个超图,该超图描绘了一个常见的高阶用户关系模式。通过聚合多个通道学习到的嵌入信息,可以得到全面的用户表示,从而生成推荐结果。然而,聚合操作也可能掩盖不同类型的高阶连接信息的固有特征。为了弥补聚合损失,将自监督学习融入超图卷积网络的训练中,以获得层次互信息最大化的连通性信息。


MHCN引入超图模拟社交关系中的高阶关系。超图推广了边的概念,使其连接到两个以上的节点,为建模用户之间复杂的高阶关系提供了一种自然的方法。尽管超图在用户建模方面比简单图有很大的优势,但是在社交推荐方面,超图的优势还没有得到充分的开发。本文通过研究超图建模和图卷积网络的融合潜力,填补了这一空缺,提出了一种多通道超图卷积网络(MHCN),通过利用高阶用户关系来增强社交推荐。从技术上讲,通过统一形成特定三角形关系的节点来构造超图,这些三角关系是具有底层语义的三角主题的实例(如图3所示)。
图3. 三角图案的应用。绿色圆圈表示用户,黄色圆圈表示物品
文中定义了多种类型的图,这些图具体化了不同类型的高阶关系,如“拥有共同的朋友”,“朋友购买相同的物品”,以及在社交推荐系统中“陌生人购买相同的物品”。提出的超图卷积网络的每个通道都承担编码不同图的超图的任务。通过对多通道学习到的多个用户嵌入信息进行聚合,可以得到包含多种类型高阶关系信息的全面用户表示,利用项目嵌入生成更好的推荐结果。


然而,尽管多通道设置有好处,但聚合操作也可能掩盖不同类型的高阶连接信息的固有特征,因为不同的通道会学习不同超图上分布的嵌入。为了解决这一问题并充分继承超图中丰富的信息,本文在多通道超图卷积网络的训练中集成了一个自监督任务,提出通过利用超图结构来构造自监督信号,全面用户表示应该反映不同超图中用户节点的局部和全局高阶连接模式。具体来说,利用了超图结构中的层次结构,并分层最大化了用户表示、以用户为中心的子超图和全局超图之间的互信息。互信息度量了子超图和整个超图的结构信息量,通过减少局部和全局结构不确定性来推断用户特征。最后,在主&辅学习框架下,将推荐任务和自监督任务统一起来。通过联合优化这两个任务并利用所有组件的相互作用,推荐任务的性能获得了显著提高。
图4. MHCN模型(1层)概述。左图中的每个三角形都是一个hyperedge,也是一个定义的图案的实例。𝐺𝑠、𝐺𝑗和𝐺𝑝分别表示基于社会、联合和购买主题构建的三个motif-induced hypergraphs。三个虚线椭圆中的𝑠𝑠、𝑠𝑗和𝑠𝑝表示以𝑢2为中心的三个ego-networks,它们分别是𝐺𝑠、𝐺𝑗 和 𝐺𝑝 的子图
超图构建
。首先引入Motif作为涉及多个节点的特定局部结构。它已被广泛用于描述各种网络中的复杂结构。在本文中,只关注三角形的图,因为三元组在社交网络中无处不在,而实际上本文所提出的模型可以无缝扩展,以处理更复杂的图。图4给出了三角图案。研究表明,M1~M7对社交计算至关重要,作者进一步设计了M8~M10以融入用户-物品交互来进行补充。已知图M1 ~ M10,我们根据其隐含的语义将其分为三组。M1−M7概括了显性社交网络中所有可能的三角关系,并描述了高阶社交连接,比如“有一个共同的朋友”,称之为“社交图”。M8~M9表示联合关系,即“朋友购买同一件物品”。这种类型的关系可以看作是加强联系的信号,将M8 ~ M9命名为“联合图”。最后,还应该考虑那些没有显性社交关系的用户。因此,M10是非封闭的,它定义了没有社交关系但购买了相同物品的用户之间的隐性高阶社会关系。将M10命名为“购买图”。在这三种模态的约束下,可以构造出包含不同高阶用户关系模式的三个超图。分别使用矩阵𝑯𝑠、𝑯𝑗和𝑯𝑝来表示这三个图induced的超图,其中这些矩阵的每一列都表示一个超边。


多通道超图卷积。
本文使用了三种通道设置,包括“社交通道(s)”、“联合通道(j)”和“购买通道§”,以应对三种类型的三角形主题,但通道的数量可以调整,以适应更复杂的情况。每个通道负责编码一种高阶用户关系模式。因为不同的模式可能会对最终的推荐性能表现出不同的重要性,所以直接将整个基本的用户嵌入p(0)提供给所有通道是不明智的。为了控制从基本的用户嵌入p(0)到每个通道的信息流,设计了一个具有自门控单元(SGU)的预过滤器,其定义为:
将超图卷积定义为:



令𝑩=s⊙sT和𝑼=𝑺 - B分别表征双向和单向社交网络的邻接矩阵。我们用A_Mk表示图诱导的邻接矩阵,(A_Mk)_ i,j =1是指顶点𝑖和顶点𝑗出现在M_k 的一个实例中。因为两个顶点可以出现在M_k 的多个实例中,(A_Mk)_ i,j计算公式如下:
对A_Mk去冗余后,得到变换后的超图卷积:


学习用户表示
。在通过𝐿层传播用户嵌入后,平均每一层获得的嵌入,以形成最终的特定于通道的用户表示:


为了避免过度平滑问题,利用注意力机制对不同通道的用户嵌入信息进行选择性聚合,以形成全面的用户嵌入。对于每个用户𝑢,学习一个三元组(𝛼𝑠、𝛼𝑗、𝛼𝑝)来测量三个特定于通道的嵌入对最终推荐性能的不同贡献。注意力函数f_att的定义为:

以及全面的用户表示:


需要注意的是,由于显性的社交关系是嘈杂的,孤立的关系并不是亲密关系的强烈信号,丢弃那些不属于以上定义的图的实例。因此,不能直接对显式社交网络𝑺做卷积操作。此外,在用户-物品交互图上进行简单的图卷积,对购买信息进行编码,并补充多通道超图卷积。简单图卷积定义为:

最后,我们得到了最终的用户和项目嵌入𝑷和𝑸,定义为:

为了学习MHCN的参数,使用了贝叶斯个性化排序(Bayesian Personalized Ranking,BPR)损失,这是一个成对的损失,它使得了一个监测到的条目比未观察到的条目更高:

通过自监督学习增强MHCN
。遵循主、辅范例,设置一个自监督的辅助任务来增强推荐任务(主任务)。对于MHCN的每个通道,建立邻接矩阵𝑨𝑐,以捕获高阶连接信息。
𝑨𝑐中的每一行都表示以行索引表示的用户为中心的相应超图的子图
,然后我们可以引出一个层次结构:“
用户节点←以用户为中心的子超图←超图
”,并从该结构创建自监督信号。自监督任务的目标是,全面的用户表示应该反映用户节点在不同超图中的局部和全局的高阶连接模式,可以通过分层最大化用户表示、以用户为中心的子超图和每个通道中的超图之间的互信息来实现这一目标。互信息测量子图和整个超图的结构信息量,以通过降低局部和全局结构的不确定性来推断用户偏好。为了获得子超图的表示,而不是平均用户在子超图中的嵌入,设计了一个函数𝑓out1,它的序列是不变的,并表述为:


这样,就考虑了子超图中每个用户的权重,形成子超图嵌入z_u。类似地,定义了另一个函数𝑓out2,这实际上是一个平均池化,将获得的子超图嵌入到一个图级表示中:

遵循DGI,使用InfoNCE作为我们的学习目标,以最大化层次互信息。但作者发现,与二元交叉熵损失相比,成对排序损失(在互信息估计中也被证明是有效的)更适合推荐任务。因此定义自监督任务的目标函数如下:

图5说明了分层互信息最大化。这实际上是一个平均池化,将获得的子超图嵌入到一个图级表示中:
图5. 超图上的分层互信息最大化
最后,将推荐任务的目标(主要的)和最大化层次互信息的任务(辅助的)统一起来进行联合学习。总体目标定义为:

当前 SOTA!平台收录 MHCN 共 2 个模型实现资源。
项目
SOTA!平台项目详情页
MHCN
前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/mhcn
、排序模型

1、 FFM

点击率(Click-through rate,CTR)的预测在计算广告中起着重要作用。基于二度多项式映射和因数机(factorization machines,FMs)的模型是这项任务中的一个常用技术。最近,在一些世界范围内的CTR预测比赛中,FMs的一个变体(场感知分解机(fieldaware factorization machines,FFMs)),效果超过了现有模型。基于上述启发,本文构建了FFMs作为分类大型稀疏数据的有效方法,特别是针对来自CTR预测的数据。


FFM是在FM的基础上引入了filed的概念,把几个相同性质的特征归结为一个filed。如,不同的日期属于一个field,不同的年龄属于一个filed。不同field中的特征单独进行one—hot。FFM认为,一个特征和另一个特征的关系,不仅仅由这两个特征决定,还应该和这两个特征所在的field有关。因此,每个特征,应该针对其他特征的每一种field 都学一个隐向量,也就是说,每个特征都要学习 f 个隐向量,那么FFM的二次项,有nf个隐向量。


文中使用的样例如下:

在FFM中,每个特征都有几个潜在的向量。根据其他特征的领域,其中一个特征被用来做内积。在本文例子中,φFFM(w, x)表述为:

为了学习(ESPN, NIKE)的潜在效应,使用w_ESPN,A是因为耐克属于广告商领域,而使用w_Nike,P是因为ESPN属于发布者领域。同样,为了了解(EPSN, Male)的潜在效应,使用w_ESPN,G是因为Male属于字段Gender,而使用w_Male,P是因为ESPN属于字段Publisher:

对于FFM的输入格式,参考LibSVM输入格式,将FFM定义为:

因此,需要为每个特征分配相应的字段。对于某些类型的特征来说,分配是很容易的,但对于其他一些特征来说就不可能了。作者在文中考虑了几种典型的输入特征,包括类别特征、数值特征、field特征等,具体讨论了分配字段的问题。以类别特征为例,对于线性模型,一个分类特征通常被转换为几个二进制特征。对于一个数据实例:

生成如下LIBSVM格式:

根据分类特征中可能的值的数量,生成相同数量的二进制特征,每次都只有一个值是1。在LIBSVM格式中,零值的特征不存储。对所有的模型采用相同的设置,每一个分类特征都被转化为几个二进制表征。为了增加字段信息,我们可以将每个类别视为一个字段。那么上述实例就变成了:

当前 SOTA!平台收录 FFM 共 2 个模型实现资源。
项目
SOTA!平台项目详情页
FFM
前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/ffm-2

2、 FNN

预测用户的反应,如点击率和转换率,在许多网络应用中是至关重要的,包括网络搜索、个性化推荐和在线广告。与我们通常在图像和音频领域发现的连续原始特征不同,网络空间的输入特征总是多领域的,而且大多是离散的和分类的,而它们的依赖关系却鲜为人知。主要的用户反应预测模型要么仅限于线性模型,要么需要手动建立高阶组合特征。前者失去了探索特征相互作用的能力,而后者则导致在大的特征空间中的计算量很大。为了解决这个问题,本文提出了两个新的模型,使用深度神经网络(DNNs)从分类特征互动中自动学习有效模式,并对用户的广告点击进行预测。为了使DNN有效地工作,作者建议利用三种特征转换方法:因式分解机(FMs)、受限玻尔兹曼机(RBMs)和去噪自动编码器(DAEs)。

图6. 4层FNN结构

第一种模型是FNN结构。输入的分类特征是由字段组成的独热编码。对于每个字段,例如城市,有多个单元,每个单元代表这个字段的一个特定值,例如,城市=伦敦,只有一个正的(1)单元,而其他的都是负的(0)。编码的特征,表示为x,是许多CTR估计模型以及本文DNN模型的输入,如图6的底层所描述的。从图16可以看出,FNN的思想非常简单——直接在FM上接入若干全连接层。利用DNN对特征进行隐式交叉,可以减轻特征工程的工作,同时也能够将计算时间复杂度控制在一个合理的范围内。


最底层是field-wise one-hot的。文中从上到下对整个模型进行了说明。最上面一层用sigmoid来输出预估的CTR值:

w_0(1维)是全局bias,对应FM中的w0。n是field的个数。z_i(k+1维)是FM中第i个域的参数向量。(z_i其实就是特征域i对应的嵌入向量加上一个w_i):

x[start_i : end_i]确定了第i个域中的所有特征。W_0((k+1) * (end_i-start_i+1)维)为特征域i对应的所有权重。(W_0)
i
由FM中的w_i(1维实数,特征域是几维的就有几个)和FM中的v_i(k维向量,特征域是几维的就有几个)来初始化。通过训练一个FM模型完成了对z的初始化:

FM中的w_i是一个数,每个特征x_i对应一个w_i,用FM中的w_i来初始化FNN中特征与w相连的权重。FM中的v_i是k维向量,每个特征x_i对应一个v_i,用FM中的v_i(k维)来初始化FNN中特征x_i与该特征域中v向量相连的权重。同时文中提出,hidden layer的权重可以用对比散度做逐层的RBM预训练。完成预训练后,用back-pop做fine-tuning,目标函数为:

SGD的过程中,只有input不为0对应的参数需要更新。


图7. SNN结构
第二种模型是SNN结构。SNN和FNN的不同之处在于最底层的结构和训练方法不同,如图7。SNN的最底层是全连接的,使用的是sigmoid激活函数:


初始化最底层的权重,本文采用了RBM和DAE来做预训练。对于每个field,只有1维是1,然后采样m个负单元,图中黑色的单元是没有被采样到的,因此在预训练的过程中将被忽略。用对比散度来训练RBM,用SGD来训练DAE,然后将训练好的dense vector作为剩余网络部分的输入。与FNN一样,也使用back-pop来fine-tuning模型。为了防止过度拟合,将L2正则化项添加到损失函数中,损失函数如下:

当前 SOTA!平台收录 FNN 共 2 个模型实现资源。
项目
SOTA!平台项目详情页
FNN
前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/fnn-2

3、 PNN

预测用户的反应,如点击和转换,是非常重要的,并且已经在许多网络应用中使用,包括推荐系统、网络搜索和在线广告。这些应用中的数据大多是分类的,并且包含多个fields;针对这些数据的一个典型的表示方法是通过单次编码将其转化为高维稀疏二进制特征表示。面对极端的稀疏性,传统模型可能会限制其从数据中挖掘浅层模式的能力,即低阶特征组合。另一方面,由于巨大的特征空间,像深度神经网络这样的深度模型不能直接应用于高维度的输入。本文提出了一个基于产品的神经网络( Product-based Neural Networks,PNN),它有一个嵌入层来学习分类数据的分布式表示,一个产品层来捕捉领域间类别的互动模式,以及一个全连接层来探索高阶特征互动。

图8. PNN结构


PNN结构如图8所示。输入层(Input):一个类别型特征就是一个Field。比如用户信息包括:性别、职业等,这里的性别是一个Field,职业是另一个Field。图18中的Input是one-hot之后的,而且只给出了类别型特征。所以每个Field i都是一个向量,向量的大小就是类别型特征one-hot之后的维度。所以不同Field的维度是不同的。


嵌入层(Embedding):是Field-wisely Connected,就是每个Field只管自己的嵌入,Field之间网络的权重毫无关系,自己学习自己的。而且只有权重,没有bias。不同的Field之间没有关系。一个Field经过嵌入后,得到一个Feature,也就是对应的嵌入向量(Embedding Vector)。其维度一般是预先设定好的固定值,论文中采用的是10。也就是说,不同Feature的维度经过embedding后都是一样的。


Product层:product思想来源于,
在CTR预估中,认为特征之间的关系更多是一种and“且”的关系,而非add"加”的关系
。例如,性别为男且喜欢游戏的人群,比起性别男和喜欢游戏的人群,前者的组合比后者更能体现特征交叉的意义。Product层可以分成两个部分,一部分是线性部分l_z,一部分是非线性部分l_p。二者的形式如下:

通过引入一个 "1 "的常数信号,product层不仅可以生成二次信号p,还可以保持线性信号z,如图18所示。

其中,f_i∈RM是field i的嵌入向量。p_i,j = g(f_i, f_j )定义了成对的特征交互。PNN模型可以通过设计不同的操作而有不同的实现方式。本文提出了PNN的两个变体,即IPNN(Inner Product-based Neural Network)和OPNN(Outer Product-based Neural Network)。field i的嵌入向量f_i,是嵌入层的输出:

其中,x是包含多个field的输入特征向量,x[start_i: end_i]代表field i的独热编码向量。W_0代表嵌入层的参数,(W_0)
i
∈RM×(end_i-start_i+1)与field全连接。


最后,将监督训练应用于最小化对数损失,以捕捉两个概率分布之间的分歧:

IPNN
在IPNN中,首先将成对的特征交互定义为矢量内积:g(f_i, f_j ) =<f_i, f_j>。在恒定信号 "1 "的情况下,线性信息z被保留为:

至于二次信息p,g(f_i, f_j )的成对内积项形成一个方形矩阵p∈R
NxN


受FM启发,作者提出了矩阵分解的想法,以降低复杂性。通过引入(W_p)
n
n
θ
nT
的假设,其中,θ
n
∈R
N
,简化l_1的表述为:

通过对第n个节点的一阶分解,得到l_p如下:

更一般地说,我们讨论(W_p)
n
的K阶分解。(W_p)
n
n
θ
nT
只是强假设下的一阶分解。一般的矩阵分解方法可以由下式推导出来:

OPNN
矢量内积将一对矢量作为输入,输出一个标量。与此不同的是,矢量外积需要一对矢量并生成一个矩阵。IPNN通过向量内积定义了特征交互,接下来我们讨论基于外积的神经网络(OPNN)。IPNN和OPNN之间的唯一区别是二次项p。在OPNN中,定义特征交互如下:


此时,OPNN复杂度比IPNN还高。作者引入sum pooling降低复杂度,重新定义p的表述如下:


当前 SOTA!平台收录 PNN 共 2 个模型实现资源。
项目SOTA!平台项目详情页

PNN

前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/pnn
前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。 
网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。 
移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。
继续阅读
阅读原文