DNN与推荐两大门派,一念神魔,功不唐捐

62658c70ba16783c6d10a8128be412c9.png

文 | 水哥
源 | 知乎

Saying

1. embedding+DNN范式有两个流派,一个更关注DNN,叫逍遥派;一个更关注embedding,叫少林派
2. embedding+DNN这种结构中,embedding一般是模型并行;DNN一般是数据并行
3. 逍遥派能够创造奇迹,但是也很容易走上邪门歪道。一念成北冥神功,一念成化功大法
4. 少林派把汗水都洒在看不到的地方,但是在长期来看,我还是相信功不唐捐

这是【从零单排推荐系统】系列的第16讲。之前的铺垫是有点多了,现在终于进入到激动人心的DNN环节了。正如一个快要讲烂了的故事说的一样,先是CNN在CV上引发了行业的关注,然后NLP领域也有LSTM这样的工作,乃至后面的transformer。基于DNN的推荐系统现在也成为了标准结构。DNN在这几个领域的发展都很相似:

  1. 先有数据量,再有深度学习。正如有了ImageNet才能有AlexNet一样,当下恰好是一个内容分发,媒体平台的数据量爆炸的时代。因此DNN在推荐中才可以如此顺利,毕竟CNN是做了复杂度简化的,而MLP却没有。

  2. 登堂入室之前都会经历一个观望的阶段。早期CV界刚出AlexNet那几年,大家都负担不起显卡,也没几个实验室摸明白深度学习这一套怎么走下来。再加上传闻CNN不好收敛,对数据需求大(其实最后发现还好,小一点的数据集放开了训也不会怎么样)。所以那时候做法就比较保守,往往是用别人训好的CNN提取特征,再在本地训练类似SVM这样的分类器来做。在推荐这边也是类似,一开始DNN并不直接用来做预测,而是提取一些辅助的信息[1]。

Embedding+DNN的工业操作

在详细聊DNN发展的路径之前,我们还是要把现代工业的标准操作再做一个说明。现在的标准操作是:(1)对于所有特征,通过hash把它转化成一个ID;(2)对于每个ID,都用embedding look-up table把特征映射成一段固定长度的embedding(如果是序列化的可以pooling,或者做其他操作,后几讲会详细讨论);(3)把所有需要用到的特征的embedding拼接起来,作为DNN(一般是MLP)的输入,得到结果。

上面的流程可以大致总结embedding+DNN的主体架构,下面要介绍的工作有自己独特的地方,但都不会改变这个主体结构。细心阅读过一些论文的同学可能会发现上面提到的hash转化是之前没出现过的,和科研场景也有所不同。为什么是这样的形式我们会留到下一讲来说明。

youtube[2]方案

让DNN在推荐中走入大众视野,开始吸引人眼球的比较有名的工作,当属google的这篇Deep Neural Networks for YouTube Recommendations了。在下图中我们展示了其主体结构,除了输入的特征有一些设计(有的特征同时存在一次项,平方项和开根项)之外,还是遵循了拼接后进DNN的方式。

181df5b248e0f704a33787b1e2e7c579.png

有两点需要特别说明。第一点是这篇文章同时提了召回+精排。召回的最终形式是一个单塔(因为item的embedding没有经过网络生成),而不是DNN直接预估点击。我们现在熟悉的双塔都用在召回上,按照复杂度从高到低应该是精排用DNN,粗排用DNN,召回用双塔。如果算力弱一点会是精排用DNN,粗排+召回用双塔。在这篇文章的设计里没有粗排。

第二点是我们之前提到过粗排学习目标,召回学习目标都是多变的,像这篇文章对召回的建模就是softmax做分类(后面再详细分析),唯独精排的学习目标一直没提。原因是之前两个都是序敏感,而精排(多数情况下)是值敏感。也就是说,召回粗排只需要知道谁先谁后就行了,但精排需要CTR,CVR那个具体的数字。很多地方都需要用这个预估数字,而这些数字是精排提供的。

举个例子,在广告竞价时是按照CTRxCVRxbid来竞价,而竞价体现了广告主愿意出的钱。如果某个广告的CTR高估了,该广告主很容易赢得竞价,也就要出更多的钱,但是实际上点击没有发生那么多,等于就多扣冤枉钱了。所以现在精排还是单点分类那样占主导(也可以在精排得到预估值后,再加其他序敏感的环节,在这里就不展开了)。这篇文章中对正样本做了额外的加权(按照实际观看时间,也就是,看得越长的,权重越大),其实会影响最后pctr的预估,但是看起来文章中涉及的场景也还是序敏感的。

其他方案

和上面方案有所不同的是其他环节的引入,比如Wide&Deep[3]就同时结合了LR和DNN。另外我们在推荐中使用FNN/PNN/ONN/NFM优化特征交叉 中也已经讲过DNN如何和FM结合。这部分的方案都比较简单且直观,就不展开了,下面两个主题是比较重要的。

工程上的特殊性

在2019年,Facebook发布了他们的DLRM框架,与之对应的论文:Deep Learning Recommendation Model for Personalization and Recommendation Systems[4]。原论文的图做的不太清楚,这里我们用网站上的:

0f5499ce23b0b869e7c28d11e88c55e4.png

图中的sparse feature指的就是我们最常见的各种ID,dense feature是数值型特征,我们之前称作numeric,有时候也叫连续特征(continuous)。各种ID可以用look-up table查找embedding,而连续特征是拼成一块,再经过MLP,就可以和查找后的embedding在形式上等价(都是浮点数向量)。Feature interaction这里是对所有的浮点数向量一视同仁,两两做内积,再把结果拼接作为MLP的输入。

虽然论文里一直在强调这个模型与其他模型的不同,但是读过之前FM那几讲的同学可能会有感觉在算法上没有什么独特的地方。处理连续特征那里确实其他文章没有明确提,但也是属于一个拍拍脑袋能想出差不多方案的实现。可能这篇文章更大的目的还是对PyTorch的宣传:PyTorch能做推荐哦,快来试试吧。u1s1如果能用PyTorch的话确实比较爽,TensorFlow静态图很难受,虽然现在有动态了,大多数公司也不支持。

Embedding+DNN这套体系中,目前为止介绍到的算法都比较初级。但是想要这套体系无往不利,更重要的是工程层面的优化:每一个特征都有一个embedding,百万,千万,甚至上亿的特征存在哪?如果要做一套分布式的训练机制,哪些部分应该存在一起?不同的实例之间应该如何通信?

模型并行与数据并行

在讲明白embedding+DNN的工程实现细节之前,我们先要讲分布式计算里面的两个基本概念:模型并行和数据并行。如下图所示:

63eb81152ad8ecfb0202fa2249678333.png

蓝色方块代表模型中的环节,绿色方块表示数据的一部分。节点就是机器,其中黄色的是总节点

  • 数据并行:在每台机器上都有一个完整的模型,把一个大batch的数据分成多份分别给每个模型,对于模型的要求是参数得都保持同步。为了达到这个目的,forward的时候可以各做各的,但是在backward的时候需要互相传递参数和梯度,每个节点要把所有的梯度汇总后回传。通常比较简单的实现是有一个总的节点负责更新梯度,算好以后发送给大家去更新。

  • 模型并行:当模型大到一个机器装不下的时候,把模型拆开,每一部分放在一个节点上。从输入端开始可以灌入全量数据,必须按照次序计算,backward的时候顺序则会倒过来。

我们的embedding+DNN范式是两种并行混着用的情况。embedding按照key-value这样的形式存在存储中,需要用的时候,key就是当前这个特征的ID,而value就是一段我们定义长度的向量。如果特征量很大的话,一台机器肯定是存不下的。实际中用的方式一般都是按照特征分别存在不同的CPU大内存机器中。比如第一台机器存User ID,第二台机器存Item ID这样,因此embedding这部分属于模型并行。下面DNN的部分一般来说单机都是放的下的,就是batch可能比较大,要拆开,因此DNN这部分则是数据并行。用原论文的图来解释一下:

1be1f0e97505fbad93815c5fd7a0b24e.png

上面是embedding部分,下面是DNN部分。按照上面的描述,这里有1,2,3三种特征,其中1全部放在Device1上,2,3也是同理。下面的DNN有三个实例,分别是蓝绿黄三种颜色。这三种颜色也对应一个batch内的三个小batch。需要用的时候,蓝色的DNN从3个embedding机器中分别取出属于它的数据对应的3种特征的embedding,完成自己的推断。另外两边也以此类推。

像这样的工程架构其实还延伸出很多可以做的事情:从embedding到DNN部分如何更加科学的通信,下面的DNN部分如何用GPU加速,embedding中如何设计特征的摆放更好等等。都是一些有意思的方向,也有很多公司有团队在做这些方面的探索。

在上面的介绍中,我们的主流范式分为两部分:embedding和DNN部分。以现在的眼光来看,DNN如果直接就3层MLP显得太简单了一些,很多新奇的结构都可以试一试,这样想的人,慢慢就形成了以DNN优化为主的“逍遥派”。另一波人认为推荐的关键还是在特征上,各种十年经验“调参仙人”对特征有着独到的理解。随着特征越加越多,DNN的输入也越来越宽,这就是“少林派”。在实际业务中,两个门派各自有得意的祖传技法,但也有各自的苦衷。

逍遥派——内卷的路上,不要忘了初心

  • 秘籍:北冥神功,小无相功

  • 弱点:内力(算力)有限,容易走上邪路

  • 势力:随着深度学习的各种模型发力,势力明显提升

所谓逍遥派,就是要在DNN上尝试各种各样新奇的技术。眼观六路耳听八方,新出的技术一定要及时了解,并且往往都有很酷炫的名字(小无相功,凌波微步)。比如transformer我知道能用在NLP的序列中,那么推荐中也有用户的行为序列,就可以把transformer借助过来(北冥神功);再比如CV领域的自监督学习很火,我们也可以想办法把自监督学习的思想用在推荐领域。所以对于逍遥派弟子来说,只要这个领域还在发展,永远不会陷入没事情可做的境地,而且像transformer这样的技术确实也能在推荐中发挥很大的作用,能拿到很不错的收益。对于高手来说,有的模型变形不大,看起来是蜻蜓点水,然而效果却非常犀利。他们能把深度学习的很多技术和之前的机器学习技术都融会贯通(天山折梅手)。

但是逍遥派有一个弱点是,很多技术原生于CV,NLP等领域,这些技术发展的时候对于实时性没有那么高的要求。当借鉴过来的时候大多数情况都要直接面对时延的增长,即使这一次成功说服了大家部署上线了,后面的迭代也变得越来越慢(内力不足)。毕竟允许的时延总归有个上限,不能一直往上加。所以这一派越做,就越有点挖断后人路那么点味道(逍遥不动了)。

相对少林派来说,逍遥派的门槛其实要更低,这也导致他们是内卷大户。你能看paper,我也能看,你能实现一个新算法,我也能实现。所以经常看到的现象是新出现一篇paper有好几波不同的人都在做。这种赛马很折磨人,但是大家为了出效果完成KPI还是都会去做。如果失去管控,这个门派是最容易走上歪门邪路(星宿派):把不work的东西包装成有效果,把不必要的环节强行加进去等等,甚至吹吹捧捧(丁春秋)。在后面我们会探讨一下健康的迭代路径是怎么样的,但首先要知道,前面这两个都是极不健康的。

逍遥派其实是上限极高的一派,但是本质还是要实事求是+创新。看别的文章实现仅仅是初出茅庐的水平,如果你想在这一派中做到护法或者长老,应该对这个问题有自己的认识,有自己的理解。我希望这个专栏一些有点键盘侠的言论能启发读者对问题有自己的见解,这是成长中很重要的一步。

少林派——不能吹的痛,外人是否能懂?

  • 秘籍:七十二绝技(特征)

  • 弱点:锦衣夜行/怀才不遇

  • 势力:硕果仅存的sql boys

既然逍遥派我们给定义到专注于DNN,那么少林派就定义为关注embedding部分了。关注的形式倒不是embedding本身的操作有什么差异,而是体现在特征的设计上。像我们之前在讲FM的时候,提到过实践中最好是能指出谁和谁交叉才是好的。这个技能一般人没有,但是少林派的高手有,而且有很多。所以其实少林派的门槛还是比较高的,做这些事情需要很深的业务积累(苦练内功)。另一方面,少林派做事情更加自然,更加贴合实际,要设计出好用的新特征其实是要仔细观察分析系统和模型的各种表现的。针对模型目前的弱点加以改进总是一种更实事求是的改进方式。

但是少林派正在遭受巨大的打击,随着行业内卷的加剧,方法的创新性变的非常重要。少林派要在实际业务中吃无数的亏,栽无数的跟头(十八铜人)。到最后功力终于大成了,用最简单普通的招式(罗汉拳)就能打出海量伤害了,还是会被人用“不就是加特征嘛”,“不就是sql boy嘛”给破防。另一边逍遥派可以发paper,搞宣传,给少林派真的是馋哭了。所以大批原本深入特征的少林派弟子纷纷“叛变”,加入逍遥派(neijuan)的怀抱。可以理解他们的委屈,只能说人在江湖,身不由己,打不过那就加入。

想要在少林派中成长到高手,必须耐得住寂寞。算法在学习的同时,也必须端正自己面对问题的态度,到最后会发现,即使是特征设计上,也能有拈花指,千手如来掌招式(这里可以牵强附会举例一下前面Facebook做GBDT那个工作,也是很有影响力的)。但是如果心态不正也会走上别的路子,正如扫地僧说的那样,越高深的武功越需要佛法来化解。

逍遥派的创新能力和少林派深入问题的态度值得所有人学习,对我们普通人来说,最好是同时具备这两派的优点。取百家之长,然后形成自己的风格,一句话概括下:

实事求是,有创新意识,以北冥神功才能驾驭少林七十二绝技。

下期预告

推荐系统精排之锋(11):再论特征与embedding生成

往期回顾

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

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

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

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

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

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

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

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

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

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

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

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

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

后台回复关键词【顶会

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

fc227b300d0b3d9d94ec89a43fc91168.gif d695d0350a84b28dc4fad2dfb34e81fd.png

[1]Deep content-based music recommendation

[2]Deep Neural Networks for YouTube Recommendations,RecSys,2016  https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf

[3]Wide & Deep Learning for Recommender Systems https://arxiv.org/pdf/1606.07792.pdf

[4]Deep Learning Recommendation Model for Personalization and Recommendation Systems https://arxiv.org/pdf/1906.00091.pdf

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

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

相关文章

会议交流—PPT下载|DataFunSummit2022:知识图谱在线峰会PPT合集!

点击上方公众号卡片,后台回复『20220312』,即可下载!有哪些PPT?下载方式点击下方公众号卡片,后台回复『20220312』,即可下载!OpenKGOpenKG(中文开放知识图谱)旨在推动以中…

Spring Cloud 2020年路线图发布,涵盖Spring Boot 2.3、2.4,Spring Cloud Ilford等重磅内容!

Spring Cloud 开发团队昨日公布了 Spring Cloud 2020 年的路线图,并对 Spring Cloud Greenwich 和 Hoxton 的生命周期进行了一些讲解。 Spring Cloud Ilford 开发团队称 Spring Cloud Ilford 将是下一个主要版本,这也将是自 Spring Cloud Finchley 发布…

LeetCode 398. 随机数索引(概率)

1. 题目 给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。 注意: 数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。 示例: int[] nums new int[] {1,2,3,3,3}; Solutio…

再论推荐特征与embedding生成

文 | 水哥源 | 知乎Saying1. 工业特征处理和学术特征处理存在巨大差异,这里建议同学们一定认真阅读。这个差异可能引发未来各种方法落地的矛盾。2. full embedding在概念上和one-hot的操作等价,但在操作上省略了这个过程。3. hash是最省事的,…

图谱实战 | 李翔:美团到店综合知识图谱的构建与应用

转载公众号 | DataFunTalk分享嘉宾:李翔 美团 算法专家编辑整理:王惠灵 合肥工业大学出品平台:DataFunTalk导读:美团到店综合业务涵盖了本地生活中的休闲玩乐、丽人、亲子、结婚、宠物等多个行业。为了不断提升到店综合业务场景下…

Spring Cloud Hoxton正式发布,Spring Boot 2.2 不再孤单

距离Spring Boot 2.2.0的发布已经有一个半月左右时间,由于与之匹配的Spring Cloud版本一直没有Release,所以在这期间碰到不少读者咨询的问题都是由于Spring Boot和Spring Cloud版本不匹配导致。 很多时候,我们在学习或重建系统的时候都喜欢直…

加了元学习之后,少样本学习竟然可以变得这么简单!

文 | Rukawa_Y编 | Sheryc_王苏,小轶去年年初 GPT-3 的论文在 arxiv 上出现,论文名为 “Language Models are Few-Shot Learners”,引起一阵轰动。除了前无古人的模型规模外,最抓人眼球的是, GPT-3 能够不需要 fine-tu…

Spring Cloud Alibaba基础教程:与Dubbo的完美融合

很早以前,在刚开始搞Spring Cloud基础教程的时候,写过这样一篇文章:《微服务架构的基础框架选择:Spring Cloud还是Dubbo?》,可能不少读者也都看过。之后也就一直有关于这两个框架怎么选的问题出来&#xff…

DIN+DIEN,机器学习唯一指定涨点技Attention

文 | 水哥源 | 知乎Saying1. 如果你面对一个全新的机器学习任务,让你来涨点。你可能第一个想到的往往是attention,第一个实现的是attention,第一个真的涨点了的技术也是attention;2. DIN的最主要的意义,把attention引入…

RabbitMQ延迟消息的极限是多少?

之前在写Spring Cloud Stream专题内容的时候,特地介绍了一下如何使用RabbitMQ的延迟消息来实现定时任务。最近正好因为开发碰到了使用过程中发现,延迟消息没有效果,消息直接就被消费了的情况。因此就继续深入研究了一下问题原因,在…

推荐中的attention有什么作用?

文 | 水哥源 | 知乎Saying1. attention要解决两个问题:(1)attention怎么加,在哪个层面上做attention;(2)attention的系数怎么来,谁来得到attention2. Attention常见的本质原因是求和…

LeetCode 667. 优美的排列 II(找规律)

1. 题目 给定两个整数 n 和 k,你需要实现一个数组,这个数组包含从 1 到 n 的 n 个不同整数,同时满足以下条件: ① 如果这个数组是 [a1, a2, a3, ... , an] ,那么数组 [|a1 - a2|, |a2 - a3|, |a3 - a4|, ... , |an-1…

图谱实战 | 医学知识图谱的价值与应用场景

转载公众号 | OMAHA联盟随着技术的进步和市场的逐渐成熟,人工智能在医疗等领域的应用日益广泛和深入。而知识图谱技术作为一种从海量文本和图像中抽取结构化知识的手段,正在成为推动人工智能发展的核心驱动力之一。◆ ◆ ◆知识图谱概述知识图谱是一种…

Spring Cloud Alibaba基础教程:Sentinel Dashboard中修改规则同步到Nacos

上一篇我们介绍了如何通过改造Sentinel Dashboard来实现修改规则之后自动同步到Apollo。下面通过这篇,详细介绍当使用Nacos作为配置中心之后,如何实现Sentinel Dashboard中修改规则同步到Nacos。关于下面改造的原理和分析可以见上一篇《Sentinel Dashboa…

OCR完整技术栈10天掌握!教程完全开源,更有产学研大佬们联合授课!

你日常会用到OCR(光学字符识别)技术吗?“妈妈再也不用担心我的学习了”、“老板来问进度了,文献还没整”... ...除了点读机广告,很多人对OCR的印象主要是肝文章的时候被OCR“救过命”,这项技术最早也是被用…

论文浅尝 - ACL2022 | 基于多语言语义解耦表示的跨语言迁移方法实现多语言阅读理解...

论文作者:吴林娟,天津大学,研究方向为自然语言理解论文链接:http://arxiv.org/abs/2204.00996代码地址:https://github.com/wulinjuan/SSDM_MRC摘要多语言预训练模型在机器阅读理解(Machine Reading Comprehension, MR…

LeetCode 1017. 负二进制转换(负数进制转换)

1. 题目 给出数字 N,返回由若干 “0” 和 "1"组成的字符串,该字符串为 N 的负二进制(base -2)表示。 除非字符串就是 “0”,否则返回的字符串中不能含有前导零。 示例 1: 输入:2 输…

公益:开放一台Nacos服务端给各位Spring Cloud爱好者

之前开放过一台公益Eureka Server给大家,以方便大家在阅读我博客中教程时候做实验。由于目前在连载Spring Cloud Alibaba,所以对应的也部署了一台Nacos,并且也开放出来,给大家学习测试之用。 Nacos控制台 地址:http:/…

一份北大信科内部流传的 “CS 自救指南”(无广推荐)

文 | PKUFlyingPig,智商掉了一地编 | 小轶小编记:从上周开始,一篇 github 博客就在北大同学的朋友圈之间刷屏。不到一周时间,已收获了 1.8 k stars。这是一篇来自一位北大学弟的博客——“CS自学指南”,一份自学式 cs …

论文浅尝 | Rot-Pro:通过知识图谱嵌入中的投影建模关系的传递性

笔记整理:陈湘楠,浙江大学硕士在读。研究背景知识图嵌入模型学习知识图谱中实体和关系的表示,以预测实体之间的缺失链接(关系)。它们的有效性深受建模和推断不同关系模式(如对称、不对称、逆向、组合和传递…