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

306fd8c757b91ea3f6786e7173b9afc9.png

文 | 水哥
源 | 知乎

saying

1.科学总是要求我们有深度,但在实际业务中这却是一条悖论:越有深度的事情往往投入产出比不够高
2.当我有一个方法A,还有一个方法B。且B的某种简单形式就是A的时候,我就会很快乐,因为这时候B获取提升是很自然的
3.MoE有点像火影里的影分身之术,看着人很多,但是里面混的,弱的也很多。实际发挥作用的可能就旁边那两个帮着搓丸子的

在早期的LR中,稀疏性确实是一个很重要的要求。上一讲里面也谈了几个工业界中怎么做到这点的方法。但是现在这类问题已经不怎么提了。原因包括以下几点:

  1. 算力的提升,现在的系统不要说几千,几万个特征,几千维的DNN也能扛的下来。那么稀疏不稀疏就不那么重要了。其实大家可能也知道,当下的推荐系统中,每一个特征都会有对应的一段稠密的embedding来表示,这个容量其实是远远超出当年的稀疏解的。

  2. 对模型性能的追求,FTRL的文章提到过,虽然稀疏是很重要,但是稀疏比较重的时候,还是会伤害性能(上一讲没有提的一个trick是,训练的时候允许更多的非0解,但是serving的时候用更少的非0解)。

  3. 卷不动了,前人的工作已经把数学方面的内容挖掘的差不多了。但是挖来挖去都是在怎么求解一个稀疏解的问题上,LR这个模型这么简单,难道我们就不能关注点别的方面?比如模型结构什么的?

在这一讲中我们要介绍的就是另一个路线:模型结构。这一讲要介绍的文章是Piece-wise Linear Models(PLM[1])。这是一篇阿里妈妈的早期文章,熟悉这个领域的同学可能知道,阿里妈妈在推荐方面发表了很多论文,也是现在国内的一个大“IP”,这一篇可能是现在这一切的开始。这里要说明一下,虽然这篇文章放在arXiv上是2017年,但是这个工作应该很早就展开了。

通过苟一步到达非线性

我们回过头来重新思考LR,它的瓶颈是稀疏性吗?可能不是,它的瓶颈是能表达的映射太简单,当我们使用这个模型的时候其实是默认所有一元的或者多元的特征之间是加权和的关系,但这一点是有可能不成立的。很尴尬,一个东西的瓶颈是这个东西自己。那么最直接的想法就是,我需要引入一些非线性,这种非线性应该是什么形式?

由于时代原因,我们不能剧透深度神经网络这些技术,当时的背景都是在LR的基础上来做的。PLM这篇文章的非线性怎么来的?是来自于线性的一个加权和:

其中是每一个区域下的模型,而的作用是给这些不同区域下的模型做一个融合,一共有个独立的区域,也即这么多独立的子模型。最后的g使用来保证加完了的结果还在[0,1]之间,符合点击率的定义。

为什么这么做了以后就是非线性的(要注意这里所讨论的线性非线性指的是分类面,不是模型的函数是不是线性的)?数学上考虑起来比较麻烦,我们用文章中举的例子来表示:

88d4f36520787e358fe253b459caa1f4.png

左边的图表示的是训练数据,红色的属于一种类别,蓝色是另一种类别。如果用中间的单个的LR模型来做,只能画一条直线作为分界面。但是数据分布又长得比较扭曲,怎么画这条直线,都画不出什么好结果。如果用上面的PLM模型,理想情况下是怎样的呢?我们可以令m=4,四个模型分别只在四个象限内才有响应,他们的分界面就是蓝色四边形的四条边。这样就提供了一个非线性的分类面。

上面的公式给出的是一个概括性的形式,在实际业务中,文章对和都有具体的选择: 就是原来的LR模型,是softmax的不同项。由于这样乘起来已经满足归一化了,就不需要了。也就是:

这个模型有几个优点,第一,大体上还是延续了LR的形式。在业务上,之前关于LR的一切经验和积累都还可以保留下来(实在不行,我就让其他几个softmax的输出都极低,就留下一个LR,不就是baseline嘛),这个形式包含了原来LR的形式。像这种情况下涨点是很常见的,大不了我就沿着原先的LR一点点往前苟,很容易找到一个点能拿点收益。第二,这个模型对并行化是比较友好的,每一个都可以放在一个机器上,很直观。

MoE的理想与现实

看了上面的形式,其实大家也能反应上来,这个模型其实可以看做是MoE(Mixture of Experts)的一种形式。这里也提前介绍一下MoE好了,假设我有一个layer用来表示,我会复制份,上一层的输入是的话,也会从产出归一化的门控(称为gating network):

其中是激活函数,是expert的索引。根据门控网络把所有expert的输出综合起来就是MoE的输出:

所以MoE就是搞一堆模块,然后让他们的输出结果做一个融合,最后得到一个更加综合的解。

MoE的行为和多模型融合其实比较像,就是我一个打不过我就搞一个影分身一堆分身上来打。很多比赛里面大家都会做多模型融合,就是一样的训练集我训练若干个模型,预测的时候把他们结果加起来或者搞个投票,往往会得到更好的结果。

有一个区别是,多模型融合一般来说真的就是一堆模型,每一个模型都能保证发挥一些作用。而现在典型的MoE[2]则是多个layer,融合的权重也是来自网络自己产出的。这可能是有问题的。根据我们前面提到过的“模型懒惰原则”,很难控制多个expert的行为。有没有可能门控网络就输出一个比较大的值,剩下的都很接近0,那这样不就是和只用一个模块差不多了吗?或者大家权重都差不多,但是没有一个是真正强的。

根据我个人的经验(去查看门控网络的输出),这种情况是很有可能发生的。MoE的方法里面提到了一些操作来尽量避免这些现象,比如取topK之类的。这些操作其实也是有概率能避免,有概率不能避免的。另外,本来MoE至少在数学形式上是promising的,加入了后面这些操作会让方法变丑。。。在实践中使用MoE还是需要考虑挺多因素。PLM的论文没提到,想必还是趟了不少坑的。像上面那张图还是画饼的成分多一些,实际上做出来很难到这么理想。

线性的rethink

PLM对于一个线性模型做出了改进,是一个很有意思的claim。但是大家不要认为工业界之前的LR模型就是100%纯线性憨憨模型。假如我只有user id,item id这样的特征,那确实是线性的。但是实际上是可以开发很多交叉特征的,比如user id x item id。当我把所有特征都放在一个空间中的时候,模型确实是线性的。但是当我在原始特征(就是只有一阶特征)的视角下看,这个空间就不是线性了。

这个和早期CV中的图片分类是很像的。图像经过Bag-of-Words等方法的处理之后会得到一段特征。此时后面接的往往是一个线性分类器(SVM)。你从最后的特征来看,当然是线性分类器。但是你从原始图像的角度看,非线性早已经有了。

一点小尾巴——我这浓眉大眼的也需要稀疏解

在PLM这篇工作中,作者也希望保持稀疏性,对于L1正则化,需要包含每一个子模型的每一个参数:,和前面一样,是子模型的索引,而 是特征的索引,就是模型参数了。但是作者对参数提出了另一个要求:希望非零参数在不同模型上的选择是一致的。也就是说,如果某个特征决定是0了,那在所有子模型中都应该是0.作者把这个正则项定义为“L2,1”正则化:。这里是先把所有子模型中的同一种特征放一起的,外面这层实际上还是相当于一个L1正则化,假设外面这层决定了谁是0,那里面这个特征在所有机器上就都会是0. 这就起到特征选择的作用。这个地方个人理解还是为了省空间。如果是纯粹为了效果,一般的经验还是不同的模型用不同的特征后,融合起来更好。

那接下来我们来推导一下加入这两个正则化后的解是什么:

。。。

还是算了嗷,一方面是因为推导在原论文的附录里面已经给出了(不喜欢推导的同学希望不要ptsd)。另一方面要注意的最重要的一点是,这个问题已经不是凸的了。所以其实再费劲半天推导也大可不必。像现在的优化器都是针对非凸问题的,连DNN都可解,如果真的要使用PLM的方法直接用就行了。

往期回顾

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

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

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

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

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

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

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

后台回复关键词【顶会

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

18ee25b79a03ae5ef37ca2d654ad42db.gif 8c6c9d4109cd78a187850a09d13bd5d9.png

[1] Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction,arXiv,2017 https://arxiv.org/pdf/1704.05194.pdf

[2] Outrageously large neural networks: The sparsely-gated mixture-of-experts layer https://arxiv.org/abs/1701.06538

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

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

相关文章

LeetCode 686. 重复叠加字符串匹配

1.题目 给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。 举个例子,A “abcd”,B “cdabcdab”。 答案为 3, 因为 A 重复叠加三遍后为 “abcd…

如何提升大规模Transformer的训练效果?Primer给出答案

文 | 舞风小兔编 | 智商掉了一地如何进一步提升大规模Transformer的训练效果?Primer给出了答案,一起来看看吧!Transformer是深度学习界的明星模型。由于其具有高度的并行性,十分容易在并行计算系统中扩展至超大规模。自然语言处理…

会议交流|大模型与图学习等知识图谱相关技术实践探索

2021年,在疫情隔离和复杂国际形势的背景下,我们越发认识到重视核心基础技术,对保持国家独立自主发展的关键价值,互联网和科技行业也面临着新的挑战和变革机遇,新的AI技术正发挥越来越大的作用,AI技术本身正…

Kafka文件存储机制那些事

Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡…

LeetCode 392. 判断子序列(双指针二分查找)

1. 题目 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长&#xff08;长度 ~ 500,000&#xff09;&#xff0c;而 s 是个短字符串&#xff08;长度 <100&#xff09;。 字符串的一个子序列是原始…

仅仅因为方法 Too Simple 就被拒稿,合理吗?

文 | 小戏编 | 小轶如果你看到自己实验行之有效的论文被退稿&#xff0c;而收到的退稿理由仅仅是“方法太简单”&#xff0c;你会怎么想&#xff1f;这两天在推特上&#xff0c;佐治亚理工的 Riedl 教授吐槽了自己收到的 AAAI phase 1 退稿理由居然是因为“这方法似乎太简单”&…

论文浅尝 | 从具有数值边缘属性的知识图谱中学习嵌入

论文笔记整理&#xff1a;朱珈徵&#xff0c;天津大学硕士链接&#xff1a;https://www.ijcai.org/proceedings/2021/0395.pdf动机从遗传数据到社会网络&#xff0c;在越来越多的场景下与知识图谱边缘相关的数值已经被用来表示不确定性、边的重要性&#xff0c;甚至是带外知识。…

LeetCode 459. 重复的子字符串(数学)

1. 题目 给定一个非空的字符串&#xff0c;判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母&#xff0c;并且长度不超过10000。 示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成。示例 2: 输入: &quo…

被放养导致申博论文难产,该不该硬gang导师?

最近一位粉丝给我发长文求助&#xff0c;说他因为申博论文的事情快崩溃了&#xff0c;让我给点建议。我把经过贴在这里跟大家探讨一下&#xff1a;985专硕一枚&#xff0c;CV方向&#xff0c;最近想申请国外博士&#xff0c;快被论文逼疯了。提交了初稿&#xff0c;隔了一个月&…

会议交流 | 第十五届全国知识图谱与语义计算大会(CCKS 2021)12月25日线上召开...

勘误&#xff1a;张伟老师为华东师范大学紫江青年学者OpenKGOpenKG&#xff08;中文开放知识图谱&#xff09;旨在推动以中文为核心的知识图谱数据的开放、互联及众包&#xff0c;并促进知识图谱算法、工具及平台的开源开放。点击阅读原文&#xff0c;进入 CCKS 2021 网站。

美团性能分析框架和性能监控平台

以下是我在 Velocity China 2014 做的题为“美团性能分析框架和性能监控平台”演讲的主要内容&#xff0c;现在以图文的形式分享给大家。 今天讲什么&#xff1f; 性能的重要性不言而喻&#xff0c;需要申明的是&#xff0c;我们今天不讲业界最佳性能实践&#xff0c;这些实践已…

LeetCode 581. 最短无序连续子数组(排序单调栈)

文章目录1. 题目2. 解题2.1 排序2.2 4次遍历2.3 单调栈1. 题目 给定一个整数数组&#xff0c;你需要寻找一个连续的子数组&#xff0c;如果对这个子数组进行升序排序&#xff0c;那么整个数组都会变为升序排序。 你找到的子数组应是最短的&#xff0c;请输出它的长度。 示例…

史上最大多模态图文数据集发布!

文 | 付瑶编 | 小轶最近多模态研究圈中出现了一个扬言 “史上最大规模”的多模态图文数据集&#xff1a;LAION-400。该数据集在今年8月完全公开&#xff0c;共计公开了 4亿图文对&#xff0c;可以依据不同的用途提供不同大小版本的子数据集。据小编调查&#xff0c;在 LAION-40…

图谱实战 | 知识图谱构建的一站式平台gBuilder

OpenKG地址&#xff1a;http://openkg.cn/tool/gbuilder网站地址&#xff1a;http://gbuilder.gstore.cn知识图谱能够让机器去理解和认知世界中的事物和现象&#xff0c;并解释现象出现的原因&#xff0c;推理出隐藏在数据之间深层的、隐含的关系&#xff0c;使得知识图谱技术从…

LeetCode 861. 翻转矩阵后的得分(贪心)

1. 题目 有一个二维矩阵 A 其中每个元素的值为 0 或 1 。 移动是指选择任一行或列&#xff0c;并转换该行或列中的每一个值&#xff1a;将所有 0 都更改为 1&#xff0c;将所有 1 都更改为 0。 在做出任意次数的移动后&#xff0c;将该矩阵的每一行都按照二进制数来解释&…

一文跟进Prompt进展!综述+15篇最新论文逐一梳理

文 | ZenMoore编 | 小轶自从 Dr.Pengfei Liu 的那篇 prompt 综述发表开始&#xff0c;prompt 逐渐红得发紫。近期清华、谷歌等单位你方唱罢我登场&#xff0c;涌现了好多好多 prompt 相关的论文。无论是工业界还是学术界&#xff0c;想必大家都在疯狂 follow。不少伙伴肯定从老…

论文浅尝 | PairRE: 通过成对的关系向量实现知识图谱嵌入

笔记整理&#xff1a;黎洲波&#xff0c;浙江大学硕士&#xff0c;研究方向为自然语言处理、知识图谱。研究背景知识图谱因其在问答、语义解析和命名实体消歧等任务取得了良好的效果而受到广泛关注&#xff0c;而大部分知识图谱都存在不全和缺失实体链接的问题&#xff0c;所以…

Java内存访问重排序的研究

什么是重排序 请先看这样一段代码1&#xff1a; public class PossibleReordering { static int x 0, y 0; static int a 0, b 0;public static void main(String[] args) throws InterruptedException {Thread one new Thread(new Runnable() {public void run() {a 1;x…

LeetCode 1261. 在受污染的二叉树中查找元素(树哈希)

1. 题目 给出一个满足下述规则的二叉树&#xff1a; root.val 0如果 treeNode.val x 且 treeNode.left ! null&#xff0c;那么 treeNode.left.val 2 * x 1如果 treeNode.val x 且 treeNode.right ! null&#xff0c;那么 treeNode.right.val 2 * x 2 现在这个二叉树受…

东南大学王萌 | “神经+符号”学习与多模态知识发现

转载公众号 | DataFunTalk分享嘉宾 &#xff5c;王萌博士 东南大学 助理教授编辑整理 &#xff5c;盛泳潘 重庆大学 助理研究员导读&#xff1a;近年来&#xff0c;多模态一词在知识图谱、计算机视觉、机器学习等领域逐渐引起越来越多的关注。从认知科学角度看&#xff0c;…