推荐中使用FNN/PNN/ONN/NFM优化特征交叉

31944c251dbe4f60d4b76ee60f492580.png

文 | 水哥
源 | 知乎

saying

  1. DNN时代来临的时候,LR没打过,也很难加入。FM打不过,但他可以加入

  2. FM的精髓,最上在于latent embedding,有了它才能把交互拆解到基底上;居中在于element-wise乘,能让两个特征之间互相影响;最下在于点积,把好不容易带进来的高维信息全部压缩完了

  3. 特征分组的小技巧:交叉前要同质化,交叉时要差异化

2016左右是一个重要的时间节点,DNN在CV,NLP领域的爆发也蔓延到了推荐领域,在这一讲,我们先不展开讲DNN的模型怎么做,而是先介绍一下当DNN的铁蹄碾压了各个领域之后,FM和DNN的关系又是什么。

从FNN-PNN-ONN到NFM,经历的过程大概可以归纳为 感觉FM和DNN没直接关系->FM可以和DNN相互作用,但有点别扭->FM可以以比较优雅的方式融合进DNN->对FM的内核重新思考,保留最关键的部分,同时保留更多的可能。

Factorisation-machine supported Neural Networks (FNN[1])——求援于FM

在深度神经网络在CV,NLP上已经取得巨大成功,开始延伸到推荐领域的时候。学者们首先要考虑的问题是,如何把一个高度稀疏,维度也很高的拼接输入放到DNN中去。这里要特别说明,在当时学术界的背景下,特征往往是one-hot并且可以穷举的。比如一个特征是城市,一共有1000中选择,就有一个1000维的向量,其中只有一个地方有非零值。当我把所有这类特征拼接起来的时候就是一个非常高维的输入了。后面会讲现代的embedding生成方式,DNN的输入会变成比较短的dense输入,拼接起来不会特别高维。这种特征也可以称之为categorical的特征。

FNN就是其中一个工作,他的想法是,把FM当做一个很好的初始化工具。从serving的角度来看,其本质是一个很简单的MLP:

d0781946ed48000ab771e19bccaaf253.png

在上图中分了两个field,但为了便于理解可以先假设只有一个。假设有 种特征(也就是one-hot拼起来是 维),一开始就就有一个从 到的权重矩阵,接下来的几层就是很普通的MLP。在serving的时候就是很普通的categorical特征输入DNN的结构。

但在训练时较为特殊:我们先训练一个FM,就可以得到每一种特征正对应的一个。接下来用这些embedding来初始化从one-hot输入到第一层dense激活元之间的那个权重矩阵 。 这个矩阵的输入维度也是的(1是FM中的一阶项)。所以在FNN这里,作者认为DNN中最难学的部分就在one-hot输入到第一层激活元那里,那里参数最多,最难学。因此用更成熟的FM训练来先打个基础。当然也要注意,FNN的训练是要分两阶段的,FM阶段和DNN阶段。

FM对于FNN是一种援助的关系,仅仅出现在初始化的地方,或者说是给出了一种DNN的优化方式。但是我有几个疑虑:

问题1: 虽然有很好的初始化,但是并没有保证FM中的交叉项,初始化的embedding是否能真正发挥作用?这里要插一个背景讨论,就是DNN不能很好的模拟出交叉(可以看文章结尾处),在此前提下,如果没有后面的交叉,FM的embedding是否还能发挥效果?

问题2: FM中的embedding只是用来初始化,能保证最后的embedding还和原来一样吗?这个在文章中作者也说了,是不能完全保证的。文章中没看到相关实验,我很好奇的是,在巨量的数据量面前,如果收敛后的参数和初始化没什么关系了,初始化的优势还能剩下多少?

问题3: 假设大量的embedding在DNN里训不好,为什么在FM里面就训得好?因为FM里面和DNN的第一层参数量其实是相等的。FM也是存在过拟合问题的。所以感觉问题解决的不够彻底,还留了一点小尾巴。

当然这里是有时代限制在里面,当时大家对DNN普遍存在的担忧就是参数量太多了,数据量不够会学的不太好。其实用现在的眼光来看,参数多一点也是完全可训的,因为当我选择DNN的时候,产品的日活月活都已经不错了,这时候数据量肯定是够用了的。没有必要在数据真的很少的时候硬上DNN。 总的来说,FNN给DNN进入推荐系统还是开了一个很好的头,接下来要介绍的工作,就一步一步逐渐把FM和DNN的关系体现得更加明确。

Product-based Neural Networks(PNN[2])——利用+扩展FM

如果说FNN是在DNN时代的一个初步尝试的话,那么PNN就是真正意义上把FM融入到了DNN之中,这篇文章写的比FNN清晰很多,其主体结构如下:

d3b12ba867f5d546f40351edbffcbe86.png

input就是外部输入,这里PNN用了embedding layer,先从one-hot的特征生成dense embedding,然后接下来开始插入FM的操作。用来表示dense embedding, 用来表示FM的一阶项,所以左边有一个1,和一起作用生成 。而 两两之间互相作用生成 ,下面的激活元是通过对 和分别进行线性映射,然后加上偏置,合在一起得到的。

PNN比较有意思的一个点是,它对product这个事情,不仅仅定义了内积,还定义了外积,也就是所谓的IPNN和OPNN。内积就和图上画的一样,直接对两个 做内积得到 就好了。但是外积怎么做呢?按照外积的定义:这样得到的结果是一个矩阵,那么下面映射到L1那里就需要一个3维的矩阵来做转换。如果每次都先算完两两的外积然后再按照FM求和,复杂度是有点爆炸的。这篇文章在这里做了一个近似:先计算所有的和,再做外积,即。这样先计算求和的复杂度不高,最后只需要做一次点积就行了。

最后这个点在论文中虽然不重要,但是实践中却很有意义:在我们现在的推荐模型中不太有时间空间允许所有的embedding互相交叉,像上面这个操作完全可以借鉴到内积中,挑出两组特征,对embedding分别求和,再做点积,可以同时缝合FFM和PNN

PNN这个模型结构相对来说是比较舒服的,每一步操作都挺自然,也不需要两阶段。实践中属于应用或者借鉴比较广泛的模型。

Operation-aware Neural Networks(ONN[3])——FFM的进化体

ONN所定义的operation-aware,其实本质也是像FFM一样,允许更大的自由度,只不过这个划分方式,在FFM里面叫做field,在这里叫做operation而已。ONN的结构如下,可以看做是在PNN的基础上加了分组的操作:

8bb2be6069f7f64dcf1a0c714be7fa13.png

实践中选择哪些特征交叉到一起是比较有意思的(可能也是大多数算法工程师真正日常在做的工作)。这里介绍一些个人的经验:

  • 类型相似的特征,可以放在同一个field里面,比如user的城市,年龄,性别,这些都是静态的,短时间内不会变化,就可以放在一起

  • field之间尽量有差别,比如第一个以用户静态特征为主题,第二个field可以以用户兴趣标签之类的为主题,第三个可以选到作者侧上

  • 交叉的时候倾向于user交叉item,在个人的经历中,item或者user自己内部的交叉收益不太大,而user和item的共现(co-occurrence)更加重要

Neural Factorization Machines(NFM[4])——消化FM

FM的精髓实际在于利用了隐式的embedding,但是点积实质上仍然对信息做了压缩。当我们做到element-wise这一步,其实已经把FM的优势大体上包进来了。然而如果下一步做sum,会损失一些信息,那么有没有办法,取FM的精髓,但又不造成信息损失呢?

899b56884b16c374a4abdfaf2de433a3.png

在NFM这个方法中,作者认为点积某种程度上限制了FM的能力上限,因为embedding比较长,是包含更多信息的,而点积之后就只剩下一个数了,于是仅仅做到element-wise就停止,然后往下直接接DNN:

其中 表示element-wise乘法。在这里的原型还是按照原始FM来的,把所有的交叉都表示到element-wise乘法这一步,就停止,保持二阶信息作为输入送进DNN中,我们都知道DNN具有很好的非线性,二阶信息叠加高度非线性,那我们其实是有理由展望一下更高阶的交叉可能存在。

其实在NFM这里就隐隐透露出可以做更高阶的交叉的影子了,但是为什么我们只强调是可能存在呢,因为MLP不会替你做交叉,而且这里的交叉还是不如DCN里面形式上那么明显。NFM的主要立论点是要扩展FM的上限,强化FM的能力,其实主要目标不在高阶交叉上,而DCN这一类方法就完全是奔着高阶交叉去的了。

为什么FM还可以留在DNN的时代?

现在我们要解答一个问题,为什么在DNN的时代,SVM没了,LR几乎没了(之所以说“几乎”是因为Wide&Deep中还有LR,但是有点硕果仅存的意思)?

本质原因是,点积不能被DNN很好的替代,Neural Collaborative Filtering vs. Matrix Factorization Revisited[5]就做了详细的实验来验证,在这篇文章的实验中,点积的效果都好于MLP。点积是不是真的好于MLP先不谈,点积的信息不容易被MLP cover这个结论还是可以下的。大家学习深度学习的时候可能听说过有一个很著名的理论叫做:任何函数都可以用一个足够大的MLP去拟合。那么这里怎么会有这样的矛盾?所以说看理论的时候还是要注意和实践之间的差距,多大的MLP叫“足够大”?在我们的实践中能做得出来这样的吗?足够大的MLP容易训练吗?其实这些都是问题。而这些理论的“允诺”在当下还是无法兑现的,因此FM还以非常灵活的姿态活在各个实践模型中。

还有更加灵活的可能吗?

既然我们说FM的精髓到了element-wise乘这里就可以了,那么还有更加灵活的方案吗?在实践中我们可以对这三种信息:单独的embedding(记为 ,element-wise乘后的二阶embedding( ),点积结果( ),做各种各样的操作(其中也归纳了上面方法中所提到的操作):

  • 对 ,可以让它参与element-wise乘法或者点积的运算,但是同时可以share一份单独供给DNN做输入;

  • element-wise乘的结果 ,可以独立给DNN输入,也可以共享一份得到点积的结果;

  • 点积结果,可以和DNN的输出加起来整体作为输出,也可以单独拉一个loss,仅仅是为了辅助embedding的训练。

上面的每种做法都是一种可选的选择,实践中也不需要讲出哪种更好,灵活的尝试就好了。

下期预告

推荐系统精排之锋(6):DCN+DCN-V2,高阶交叉空许约

往期回顾

1.召回 粗排 精排,如何各司其职?

2.拍不完的脑袋:推荐系统打压保送重排策略

3.简单复读机LR如何成为推荐系统精排之锋?

4.召回粗排精排-级联漏斗(上)

5.召回粗排精排-级联漏斗(下)

6.推荐系统精排:看阿里妈妈再试线性模型

7.推荐精排之锋:FM的一小步,泛化的一大步

b24babb4def8fb94f57bd6431f473653.png后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

a3d65c9034999883d31f2b1b55445369.gif f15c4b0eba5c0042e6406f76b248c58b.png

[1] Deep Learning over Multi-field Categorical Data – A Case Study on User Response Prediction
https://arxiv.org/pdf/1601.02376.pdf

[2] Product-based Neural Networks for User Response Prediction
https://arxiv.org/pdf/1611.00144.pdf

[3] Operation-aware Neural Networks for user response prediction,NN,2020
https://cs.nju.edu.cn/rinc/publish/download/2020/2020_1.pdf

[4] Neural Factorization Machines for Sparse Predictive Analytics,SIGIR,2017
https://arxiv.org/pdf/1708.05027.pdf

[5] Neural Collaborative Filtering vs. Matrix Factorization Revisited
https://arxiv.org/pdf/2005.09683.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 310. 最小高度树(图 聪明的BFS,从外向内包围)

文章目录1. 题目2. 解题2.1 暴力BFS2.2 聪明的BFS1. 题目 对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到…

Emma使用与分析

什么是Emma EMMA 是一个开源、面向 Java 程序测试覆盖率收集和报告工具。 它通过对编译后的 Java 字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。 EMMA 所使用的字节码插装不仅保证 EMMA 不会给源代码…

论文浅尝 | WWW2022 - “知识提示”之知识约束预训练微调

本文作者 | 陈想(浙江大学)、张宁豫(浙江大学)、谢辛(陈想)、邓淑敏(浙江大学)姚云志(浙江大学)、谭传奇(阿里巴巴),黄非&…

吐血整理:论文写作中注意这些细节,能显著提升成稿质量

文 | python编 | 小轶前言不知诸位在科研的起步阶段,是否曾有过如下的感受:总感觉自己写的论文就是和自己读过的论文长得不太一样,也不知道为啥。投稿的时候,审稿人也总是 get 不到论文的核心,只揪着论文的次要细节不放…

LeetCode 1237. 找出给定方程的正整数解

1. 题目 给出一个函数 f(x, y) 和一个目标结果 z&#xff0c;请你计算方程 f(x,y) z 所有可能的正整数 数对 x 和 y。 给定函数是严格单调的&#xff0c;也就是说&#xff1a; f(x, y) < f(x 1, y) f(x, y) < f(x, y 1)函数接口定义如下&#xff1a; interface Cu…

基于Wi-Fi的室内定位在美团总部的实践和应用(上)

室内定位技术的商业化必将带来一波创新高潮&#xff0c;尤其是在O2O领域&#xff0c;各种基于此技术的应用将出现在我们的面前。我们可以想象一些比较常见的应用场景&#xff0c;比如在大型商场里面借助室内导航快速找到目标商铺&#xff0c;商店根据用户的具体位置向用户推送更…

LeetCode 1266. 访问所有点的最小时间(数学)

1. 题目 平面上有 n 个点&#xff0c;点的位置用整数坐标表示 points[i] [xi, yi]。请你计算访问所有这些点需要的最小时间&#xff08;以秒为单位&#xff09;。 你可以按照下面的规则在平面上移动&#xff1a; 每一秒沿水平或者竖直方向移动一个单位长度&#xff0c;或者…

Coding Party 邀你出战!飞桨黑客马拉松线下场来啦

12月4-5日&#xff0c;这48H&#xff0c;与100开发者HACK Together“黑客”很酷&#xff1f;和“黑客”一起“战斗”是种什么样的体验&#xff1f;你参与这场“战斗”了吗&#xff1f;PaddlePaddle Hackathon 2021飞桨黑客马拉松&#xff0c;由百度飞桨联合深度学习技术及应用国…

技术动态 | 「知识图谱嵌入技术研究」最新2022综述

转载公众号 | 专知知识图谱(KG)是一种用图模型来描述知识和建模事物之间关联关系的技术. 知识图谱嵌入(KGE)作为一 种被广泛采用的知识表示方法,其主要思想是将知识图谱中的实体和关系嵌入到连续的向量空间中,用来简化操作, 同时保留 KG 的固有结构.它可以使得多种下游任务受益…

美团数据仓库-数据脱敏

背景与目标 在数据仓库建设过程中&#xff0c;数据安全扮演着重要角色&#xff0c;因为隐私或敏感数据的泄露&#xff0c;会对数据主体&#xff08;客户&#xff0c;员工和公司&#xff09;的财产、名誉、人身安全、以及合法利益造成严重损害。因此我们需要严格控制对仓库中的数…

全球仅3000人通过的TensorFlow开发人员认证到底有多香!

现在&#xff0c;我们每个人都已经习惯了社交网络&#xff0c;随时随地都能进行微信、QQ语音和视频通话。那么&#xff0c;你是否发现在不同场景下&#xff0c;这些社交软件音频、视频都是那么的流畅&#xff0c;这背后是什么科技在支撑这“声”与“话”的美好呢&#xff1f;这…

LeetCode 1043. 分隔数组以得到最大和(DP)

1. 题目 给出整数数组 A&#xff0c;将该数组分隔为长度最多为 K 的几个&#xff08;连续&#xff09;子数组。分隔完成后&#xff0c;每个子数组的中的值都会变为该子数组中的最大值。 返回给定数组完成分隔后的最大和。 示例&#xff1a; 输入&#xff1a;A [1,15,7,9,2,…

图谱实战 | 安全领域知识图谱建设与典型应用场景总结

转载公众号 | 老刘说NLP 安全知识图谱是网络安全领域专用知识图谱&#xff0c;也是知识图谱应用于安全业务的重要工业尝试。当前&#xff0c;安全领域中存在大量的业务数据&#xff0c;建模需求以及应用需求&#xff0c;了解安全领域知识图谱的建设方法以及典型应用场景&#x…

Hadoop安全实践

前言 在2014年初&#xff0c;我们将线上使用的 Hadoop 1.0 集群切换到 Hadoop 2.2.0 稳定版&#xff0c; 与此同时部署了 Hadoop 的安全认证。本文主要介绍在 Hadoop 2.2.0 上部署安全认证的方案调研实施以及相应的解决方法。 背景 集群安全措施相对薄弱 最早部署Hadoop集群时并…

论文浅尝 | KGQR: 用于交互式推荐的知识图谱增强Q-learning框架

笔记整理&#xff1a;李爽&#xff0c;天津大学链接&#xff1a;https://dl.acm.org/doi/pdf/10.1145/3397271.3401174动机交互式推荐系统(IRS)以其灵活的推荐策略和考虑最佳的长期用户体验而备受关注。为了处理动态用户偏好&#xff0c;研究人员将强化学习(reinforcement lear…

收藏清单:史上最全java自动化测试工具汇总

xUnit frameworks 单元测试框架 JUnit - 常用的测试框架TestNG - 测试框架 Test Data Supplier - TestNG DataProvider封装&#xff0c;让数据的生成更加灵活 TDD \ ATDD \ BDD 工具 JBehave - Behaviour-Driven Development (BDD)测试框架. BDD是从 test-driven development…

LeetCode 1014. 最佳观光组合

1. 题目 给定正整数数组 A&#xff0c;A[i] 表示第 i 个观光景点的评分&#xff0c;并且两个景点 i 和 j 之间的距离为 j - i。 一对景点&#xff08;i < j&#xff09;组成的观光组合的得分为&#xff08;A[i] A[j] i - j&#xff09;&#xff1a;景点的评分之和减去它…

聊聊推荐系统的高阶特征交叉问题

文 | 水哥源 | 知乎Saying1. DCN看起来给了我们很好的允诺&#xff0c;但是细细想来是有一些问题的&#xff0c;这里也可以参考大佬的意见2. 高阶FM的核心设计是先element-wise乘&#xff0c;再对embedding求和。核心优化方法是利用计算中的冗余构建递推关系&#xff0c;然后使…

COS系统的前端演变和发展

背景 美团COS&#xff1a;全称美团网核心业务系统部&#xff0c;以持续整合O2O线下资源&#xff0c;共建高效率、低成本的供应链系统&#xff0c;高效推动O2O生态环境建设为业务目标&#xff0c;负责美团网核心业务系统的建设和管理。 COS系统&#xff0c;伴随着美团3年多的发展…

OpenKG 祝大家元宵节快乐!

OpenKGOpenKG&#xff08;中文开放知识图谱&#xff09;旨在推动以中文为核心的知识图谱数据的开放、互联及众包&#xff0c;并促进知识图谱算法、工具及平台的开源开放。点击阅读原文&#xff0c;进入 OpenKG 网站。