真正的高阶特征交叉:xDeepFM与DCN-V2

ce112a4e88e21bd88799242e4e95aceb.png

文 | 水哥
源 | 知乎

Saying

1. xDeepFM和DCN-V2是真正的高阶交叉,和前面讲的High Order Factorization Machine(HOFM)又有着千丝万缕的联系。某种简化下,都能退化为HOFM的形式
2. 如图

d24de3e8eecacdf611bdb4562131872c.png

3. 推荐模型迭代的时候要平衡涨点和复杂度的关系,不然你开开心心参加launch review,准备向老板汇报fancy的技术,老板直接问上了以后会不会迭代投入都要乘2是不是多的机器钱你来出就尬住了
4. 数学给我们的东西是所有阶交叉都加上会好,实践需要的是哪些特征交叉,交叉到几阶性价比最高。这一点目前看来业界很少有分享,但是又很缺

本讲是 【[从零单排推荐系统]】 的第13讲,这一讲的两个工作都是真正兑现了高阶交叉的。两个工作存在共同点:
(1)都是将交叉结果当做网络的feature map(看了下面的思路反编译你会明白是为什么);
(2)毫不吝啬的投入大量参数来赋予权重;
(3)同时结合了显式交叉的部分和隐式交叉的部分(DNN)。所以其实这两个工作都可以看成是以更容易操作的方式融合了HOFM。

但是在这一讲中我们也要强调两个实际问题:
(1)引入高阶交叉的同时,也需要付出很高复杂度的代价。
(2)高阶交叉本身是一个很有意思的方向,但是在实践中可能存在效果不显著,投入产出比不高的问题,操作时建议控制投入度。

xDeepFM[1]

根据DNN的非线性性质,我们可以认为DNN完成了一种隐式的交叉。而Deep&Cross Network是致力于在做显式的操作。但就像上一讲 水哥:推荐系统精排之锋(6):Deep&Cross Network——高阶交叉空许约 提到的,DCN的交叉最后剩下的是 乘以一个变换后的系数,这样的交叉并不像我们预期中那样,也无法变换出High Order FM的形式。

与DeepFM相比,xDeepFM还是保持了一部分是Deep一部分是Cross这样的结构,但重点对Cross这部分做了结构上的修改。对于输入特征,变为embedding之后可以全部拼接起来组成一个矩阵 ,其中, 是特征的个数, 是embedding的维度。第 层的feature map记为 ,但它的第一维现在不是 了,可以暂记为个,得到第层的操作可以表示为:

在这里写法上和python代码是类似的, 就表示取出这个矩阵的第 行。, , 分别是输入矩阵, 层feature map和第 层feature map的行号索引。那么新的feature map中的每一行,都是先让上一层的每一行,和每一个输入embedding做element-wise交叉,再用一套独有的 做变换后加起来融合的。

这篇文章的原图不是很容易看懂,这里重新做一张,解释上面的操作:

fc7654a6fb5e4ffea2b58ae03977bbeb.png

在图中,每一个圆都表示一个元素。红色方框框起来的部分是一个embedding。灰色是原始特征 ,蓝色和黄色分别是 和。我们把灰色和蓝色的每一行分别交叉后,乘以对应的 ,加起来得到最终 的第一行。

像这样操作之后,每一层都会得到一个矩阵 ,先对特征那个维度( 对应的维度,也就是上图中的水平方向)求和,得到一个向量(这一步是不是和内积很像?)。然后把每一层的这个向量都拼在一起,最后再用一层线性层+Sigmoid输出即可。这种每一层特征都用的方法,和DenseNet也有一定相似之处。

思路“反编译”

这个工作的思路我们可以这么理解(这是我“反编译”作者们如何思考得到这个工作的过程):现在我需要完成真正的交叉,那么首先想到的,就是要让两个embedding做element-wise的乘法操作,如果我先做了两阶的,把结果存下来,再找一个新的来做,就可以得到三阶四阶等等一直递推下去。因此我恰好把两阶段的结果当做网络中间层的feature map,然后每次交叉都从原始输入跳连过来,就可以做到这点。当然按照FM本身的定义,需要有一个各个交叉求和的过程这里也要保留。那各路交叉融合的时候,自然需要一个融合系数了,也就是方法中的 (如果稍作灵活处理的话,个人觉得也可以把 从矩阵改为向量,节省点复杂度)。按照这样的思路梳理下来,是否更能理解这个工作?

交叉的这部分网络按照原文的说明,称作Compressed Interaction Network,从以下几个方面,我们进一步加深对它的认识:

  • CIN有一个声明是,它属于vector-wise的交叉,而不是bit-wise的交叉。vector-wise的交叉指的是,在交叉的时候,整个vector都是一个整体,要么整个vector一起操作,要么不做任何操作。这一点是兑现了的,在上面的示意图中,每次一行的红色框都是同进退,要么一起做,要么不做。而与此相反的bit-wise操作就是vector内部可以拆开,有的元素和别的交叉了,有的还保持不变。如果把embedding当做输入给DNN,下面的操作就是bit-wise的,而像上一讲最后的DCN本质也是bit-wise的。

  • 为什么要把每一层的feature map都直连到输出上?就是为了让高阶的交叉和低阶交叉都传递到输出上。最后输出环节就包含了各个阶的交叉信息。

  • 名字中的compressed(压缩)主要体现在哪里?主要是在 这一层,与原始embedding作用后,通过加权求和,最终剩下有限个embedding拼接的矩阵。交叉的结果并不会无限膨胀。因此求和这里其实就是做了压缩。比如我们可以令每一层的 都相同,而且是一个比较小的数字。

CIN的操作其实靠近了HOFM的主旨思想,xDeepFM的模型中存在任意阶(在层数允许范围内)的交叉,而且是以类似HOFM的方式,我们尝试是否可以通过一些简化退化到HOFM上?

如何从CIN还原HOFM的形式?

在上面的公式中,如果我们把 做成一个恒等矩阵乘以系数的关系就可以退化到近似的HOFM上,即 这里改为 可以让最终的形式变为embedding连乘再乘上原特征的形式,因为xDeepFM中本来就有按元素求和,因此和HOFM的本意是一致的。但是要注意,中间层的embedding是存在压缩的,也就是上面的不能遍历所有特征,除非设定 。

DCN-V2:Improved Cross&Deep Network[2]

在WWW2021上,DCN的作者“卷土重来”,提出了一个船新版本V2。我们直接对比V1和V2的结构来理解DCN-V2。V1的结构如图:

9c68052b5e7e5227fd7e472e5398ee28.png

它的核心表达式为:

而V2的结构为:

f1a72084749f4a590d2061fd5f36ea73.png

它的表达式可以写为:

这里的定义和上一讲保持一致。可以看出,最大的变化是将原来的向量 变成了矩阵。而这一个改动就解决了前面最大的问题。一个矩阵 拥有足够多的参数来保留高阶交叉信息,或者挑选需要的交叉结果。在现在这个结构下,就可以还原出HOFM的形式了(这里留作思考题,读者可以自行推一下),因此这个工作也兑现了真正的高阶交叉。

要注意的一个DCN-V2和xDeepFM的很大区别是,DCN-V2仍然不是vector-wise的操作。根源在于,DCN-V2把所有特征的embedding拼起来一起输入网络,所以在 那里无法保持同一个特征的embedding同进退,同一段embedding自己内部也存在交叉。而模型的结构又要求 是个方形矩阵,这样参数量就会非常大。因此作者引入了低秩分解来处理,即把变成两个小矩阵的乘,即 , :

我们团队也尝试了DCN-V2,涨点是没问题的。但是如果你的模型一开始是一个MLP为基准的模型,另外半边就是凭空冒出来的,相当于MLP那边的复杂度要翻倍。考虑到AUC涨的幅度有限,在大幅增加的复杂度面前不是很划算,最后没有上线。

高阶交叉本身的必要性?

我们一直说怎么做高阶交叉,但是回过头来,没有讨论过的一个问题是在实践中,高阶交叉本身有多大的必要性?

一方面在文献,或者我们自己的实践中,没有说明某个具体的高阶,或者某种具体的形式是能够确定涨点的。 比如我们希望有人能够分享经验,说把用户,物料,环境信息三者交叉能涨点,或者这些大方面中的哪些具体特征交叉起来是最有利的。没有这些经验,高阶的探索变的很不确定,如果只是说就把所有的东西大杂烩放进去,那么里面可能有很多浪费的计算,而且操作很不经济。这是现在业界在实际操作中比较需要的地方

另一方面,在实际迭代的过程中,不仅仅要说明有所提升,还要看复杂度,时延的变化情况,必须说明这些复杂度的提升,换来这些涨点是赚的。模型复杂了,并发能支持的请求更少,就得通过堆机器把这些并发补上。那这些机器租,买,维护也是要钱的。所以一般要算一个成本,如果时延显著增加了,需要看看钱用在这里是不是划算。现在业界很少听说DCN有部署的,就像上面说的,大多数场景上都是MLP一上来就上了,后面都是增量式迭代(因为有主场优势的存在,你想不增量可能会更难)。这时候加Cross Network还不敢动原来那部分,就导致复杂度急剧增大,对后续迭代,维护都是问题。

思考题

1.DCN-V2的操作不是vector-wise的,你认为这件事情的边界是绝对的吗?你认为对性能会有多大影响呢?

2.在DCN-V2里面可以做一些简化,让模型还原出HOFM的形式吗?如果是的话该如何操作?

提示:可以做一个分块对角矩阵,每一个分块都是单位矩阵的变形

下期预告

推荐系统精排之锋(8):工具人GBDT

往期回顾

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

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

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

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

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

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

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

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

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

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

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

后台回复关键词【顶会

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

096a6d9dd342ad63ba551eed0b161d32.gif 57acc4322d6d347a560587556a9c36e0.png

[1] xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems,KDD,2018
https://arxiv.org/pdf/1803.05170.pdf

[2] DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-scale Learning to Rank Systems,WWW,2021
https://arxiv.org/pdf/2008.13535.pdf

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

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

相关文章

学术会议 | 中国杭州举办——第21届国际语义网大会​ISWC2022 Call for Papers

中国杭州举办!ISWC2022 Call for Papers.ISWC(International Semantic Web Conference)是语义网和知识图谱领域的国际顶级学术会议,2022年10月23-27日,ISWC将在中国杭州举行,通过线上线下结合的方式,汇聚全世界相关的科…

LeetCode 82. 删除排序链表中的重复元素 II(链表)

1. 题目 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5示例 2: 输入: 1->1->1->2->3 输出: 2->3来源:力…

从 ACL’22 投稿情况,速览当下 NLP 研究热点!

文 | Yimin_饭煲编 | 小轶卖萌屋的作者们,最近可真是忙秃了头~,不仅要苦哈哈地赶 ACL 2022 提前了两个月的Deadline,还要尽心尽力为读者们提供高质量的内容。如果大家心疼卖萌屋的作者们的话,还请多多一键三连:)ACL2022 全部转向了…

开源开放 | DeepKE发布新版本:支持低资源、长篇章、多任务的图谱抽取开源框架(浙江大学)...

OpenKG地址:http://openkg.cn/tool/deepkeGitHub地址:https://github.com/zjunlp/deepkeGitee地址:https://gitee.com/openkg/deepkeDeepKE网站:http://deepke.zjukg.org/CN/index.html开放许可协议:GPL 3.0贡献者&…

LeetCode 478. 在圆内随机生成点(概率)

1. 题目 给定圆的半径和圆心的 x、y 坐标,写一个在圆中产生均匀随机点的函数 randPoint 。 说明: 输入值和输出值都将是浮点数。圆的半径和圆心的 x、y 坐标将作为参数传递给类的构造函数。圆周上的点也认为是在圆中。randPoint 返回一个包含随机点的x坐标和y坐标…

11月AI大事件回顾:GPT3开放使用/女娲视觉大模型/AE文艺复兴/...

编 | iven感谢提供本期内容的 ZenMoore、 jxyxiangyu、付瑶大家好~ 11月的新闻速报来啦!上个月不知道大家有没有忙着写文章,反正小编是这样的:好啦,让我们快来回顾上个月的 AI 大新闻吧!学术进展何恺明 Mas…

开源开放 | 开源立体化漏洞情报知识图谱(四维创智)

OpenKG地址:http://openkg.cn/dataset/vuln-sprocket开放许可协议:CC BY-SA 4.0 (署名相似共享)贡献者:四维创智(李德斌,孙基栩,鲍晨阳)1. 前言随着时间的推移&#xff0…

LeetCode 515. 在每个树行中找最大值(层序遍历)

1. 题目 您需要在二叉树的每一行中找到最大的值。 示例: 输入: 1/ \3 2/ \ \ 5 3 9 输出: [1, 3, 9]来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-largest-value-in-each-tree-row 著作…

GBDT是如何成为推荐系统顶级工具人的?

文 | 水哥源 | 知乎Saying1. 集成学习的ensemble注意一定要读作昂三姆包而不是印三姆包,一天一个算法工程师装x小技巧2. 区别bagging和boosting的准则是,先训练的模型对于后训练的模型是否有影响3. GBDT中,B(boosting)…

会议交流 | 如何提升推荐系统的可解释性?——DataFunSummit2022知识图谱在线峰会...

背景介绍知识图谱及特征学习结合智能推荐,可解决数据稀疏性及冷启动问题,更好的提升推荐决策场的准确性、多样性及可解释性,进而提升各个场景的推荐决策效率和体验。3月12日13:30-16:50,在DataFunSummit2022:知识图谱在…

LeetCode 143. 重排链表(链表反转+快慢指针)

1. 题目 给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 给定链表 1->2->3->4, 重新排列为…

论文浅尝 | 采用成对编码的图卷积网络用于知识图谱补全

笔记整理:姚祯,浙江大学在读硕士,研究方向为知识图谱表示学习,图神经网络。论文引用:Liu S, Grau B, Horrocks I, et al. INDIGO: GNN-based inductive knowledge graph completion using pair-wise encoding[J]. Adva…

调研了下 AI 作曲,顺便做了期视频...快进来听歌!

文 | 白鹡鸰编 | 小轶视频 | 白鹡鸰嗨,大家好!这里是卖萌屋,我是白鹡鸰。今天和大家聊聊人工智能作曲。人工智能在音乐领域的应用已经非常常见了,像听歌识曲、曲风分类、自动扒谱等等,而 利用机器来替代人类作曲 &…

LeetCode 1275. 找出井字棋的获胜者(位运算)

1. 题目 A 和 B 在一个 3 x 3 的网格上玩井字棋。 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上。第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。“X” 和 “O” 只能放在空方格中,而…

论文浅尝 | DSKReG:基于关系GNN的推荐知识图谱可微抽样

笔记整理:李爽,天津大学硕士链接:https://dl.acm.org/doi/pdf/10.1145/3459637.3482092动机在信息爆炸的时代,推荐系统被广泛研究和应用,以发现用户的偏好信息。RS在冷启动时性能较差,如果将知识图谱(Knowl…

数据开放平台的配置管理

背景 美团是数据驱动的技术公司, 非常重视使用数据的效率。为了达到这个目标,我们将数据以开放平台的形式开放给需求方。例如,帮助需求方开发报表的报表开放平台,帮助需求方获取数据的自助查询平台,让需求方参与数据建…

LeetCode 1271. 十六进制魔术数字(进制转换)

1. 题目 你有一个十进制数字,请按照此规则将它变成「十六进制魔术数字」:首先将它变成字母大写的十六进制字符串,然后将所有的数字 0 变成字母 O ,将数字 1 变成字母 I 。 如果一个数字在转换后只包含 {“A”, “B”, “C”, “…

评测任务征集 | 全国知识图谱与语义计算大会(CCKS 2022)

评测任务征集全国知识图谱与语义计算大会(CCKS 2022)2022年8月25-28日,秦皇岛http://sigkg.cn/ccks2022/全国知识图谱与语义计算大会(CCKS: China Conference on Knowledge Graph and SemanticComputing)由中国中文信息…

SegmentFault 美团云采访实录

约半年前,美团悄然上线了美团云(Meituan Open Services,简称MOS),这是美团网根据自身虚拟化平台开发和运维经验开放的云计算服务,类似AWS。 美团 CEO 王兴可能是中国最知名的连续创业者,曾创办校…

开局一段扯,数据全靠编?真被一篇“神论文”气到了

文 | 苏剑林(追一科技)编 | 智商掉了一地看来以后我们看论文的时候,不仅要关心论文成绩的可复现性,还要留意它们的求和、均值、方差等有没有算错,否则真的是“无奇不有”!!这篇文章谈一下笔者被…