谈谈工业界落地能力最强的机器学习算法

尽管BERT为代表的预训练模型大肆流行,但是身处工业界才会知道它落地有多难,尤其是QPS动辄几百的在线推荐、搜索系统,哪怕在大厂也很难在线上系统见到它们。

今天就想反其道而行之,谈谈工业界搜索、推荐、广告这类核心场景中落地能力最强的算法(之一):因子分解机(FM)。我不敢说它是最简单的(FM的确很简单),但是作为一个推荐算法调参工程师,掌握FM一定是性价比最高的。我推崇FM算法的原因,有以下三点:

功能齐全
众所周知,推荐算法有三个应用领域:召回、粗排、精排。推荐算法千千万,但是有的算法只能用于召回,有的算法只能用于排序。像FM这样实现三个领域全覆盖的多面手,目前为止,孤陋寡闻的我尚不知道有第二个。但是需要强调的是,我们不能只训练一个FM排序模型 ,然后直接拿这个排序模型用于召回。尽管都是基于FM算法,但是FM召回与排序,有以下不同:

使用的特征不同

FM召回,由于未来要依赖Faiss进行线上检索,所以不能使用user与doc的交叉特征。只有如此,我们才能独立计算user embedding与doc embedding

FM排序,则没有这方面的限制,可以使用user与doc的交叉特征。是的,你没看错。因为FM所实现自动二阶交叉,仅能代表“共现”。但是user与doc之间还有其他形式的交叉,比如user tag与doc tag之间的重合度,喂入这样的交叉,对于排序性能提升,仍然有很大帮助。

使用的样本不同

训练FM做排序时,必须使用“曝光未点击”这样的“真负”样本。

训练FM做召回时,起码不能只使用“曝光未点击”做负样本。大部分的负样本必须通过随机采样得到。个中原因见我的文章《负样本为王:评Facebook的向量化召回算法》。

使用的Loss不同

FM排序时,由于负样本是真实的,可以采用CTR预估那样的point-wise loss

FM召回时,由于负样本是随机采样得到的,存在一定的噪声,最好采用BPR, hinge这样的pair-wise loss。

性能优异
推荐系统的两大永恒主题,“记忆”与“扩展”,FM也能实现全覆盖。

FM存在一阶项,实际就是LR,能够“记忆”高频、常见模式

FM存在feature embedding。如我在《无中生有:论推荐算法中的Embedding思想》据说,Embedding是提升推荐算法“扩展性”的法宝。FM通过feature embedding,能够自动挖掘低频、长尾模式。在这一点上,基于embedding的二阶交叉,并不比DNN的高阶交叉,逊色多少。

便于上线
现在深度学习是推荐领域的宠儿,LR/FM/GBDT这样的传统机器学习算法,不招人待见。

DNN虽然性能优异,但是它有一个致命缺点,就是上线困难。训练的时候,各位调参侠,把各种酷炫的结构,什么attention, transformer, capsule,能加上的都给它加上,看着离线指标一路上涨,心里和脸上都乐开了花,却全然无视旁边的后端工程师恨得咬紧了牙根。模型越复杂,离线和线上指标未必就更好,但是线上的时间开销肯定会增加,轻则影响算法与后端的同事关系(打工人何苦为难打工人),重则你那离线指标完美的模型压根没有上线的机会。虽说,目前已经有TF Serving这样的线上serving框架,但是它也不是开箱即用的,也需要一系列的性能调优,才能满足线上的实时性要求。

所以,如果你身处一个小团队,后端工程人员的技术能力不强,DNN的线上实时预测,就会成为一个难题,这个时候,FM这样的传统机器学习算法,就凸显出其优势。

FM排序,虽然理论上需要所有特征进行二阶交叉,但是通过公式化简,可以在 O(n)的时间复杂度下完成。n是样本中非零的特征数目,由于推荐系统中的特征非常稀疏,所以预测速度是非常快的。

召回,由于候选集巨大,对于实时性的要求更高。很多基于DNN的召回算法,由于无法满足线上实时生成user embedding的需求,只能退而离线生成user embedding ,对于用户实时兴趣的捕捉大打折扣。FM召回,这时就显现其巨大的优势。事先把doc embedding计算好,存入Faiss建立索引,user embedding只需要把一系列的feature embedding相加就可以得到,再去faiss中进行top-k近邻搜索。FM召回,可以实现基于用户最新的实时兴趣,从千万量级候选doc中完成实时召回。

总结与参考
由于以上优点,我心目中,将FM视为推荐、搜索领域的"瑞士军刀"。风头上虽然不及DNN那么抢眼,但是论在推荐系统中发挥的作用,丝毫不比DNN逊色,有时还能更胜一筹。FM有如此众多的优点,优秀的调参侠+打工人,还等什么,还不赶快学起来。想迅速掌握FM,我推荐如下参考文献:

掌握FM原理,推荐读美团的博客《深入FFM原理与实践》。FFM的部分可以忽略,在我看来,FFM更像是为了Kaggle专门训练的比赛型选手,损失了FM的很多优点。这就好比,奥运会上的射击冠军,未必能够胜任当狙击手一样。

FM用于召回,推荐读《推荐系统召回四模型之:全能的FM模型》。注意,如我所述,FM虽然万能,但是FM排序与FM召回,在特征、样本、Loss都存在不同,不可能训练一个FM排序就能直接拿来做召回。这一点,《全能FM》一文没有提到,需要读者特别注意。

如果想亲手实践,可以尝试alphaFM。该项目只不过是作者八小时之外的课外作品,却被很多公司拿来投入线上实际生产环境,足见该项目性能之优异和作者功力之深厚,令人佩服。强烈建议不满足只当“调参侠”的同学,通读一遍alphaFM的源代码,一定收获满满。

[1] https://zhuanlan.zhihu.com/p/165064102
[2] https://zhuanlan.zhihu.com/p/320196402
[3] https://link.zhihu.com/?target=https%3A//tech.meituan.com/2016/03/03/deep-understanding-of-ffm-principles-and-practices.html
[4] https://zhuanlan.zhihu.com/p/58160982
[5] https://link.zhihu.com/?target=https%3A//github.com/CastellanZhang/alphaFM

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

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

相关文章

论文浅尝 | 中科院百度微软等学者最新综述论文40+最新方法阐述知识图谱提升推荐系统准确性与可解释性...

本文转载自公众号:先知。【导读】近来,知识图谱用于推荐系统是关注的焦点,能够提升推荐系统的准确性与可解释性。如何将知识图谱融入到推荐系统呢? 最近中科院计算所百度微软等学者最新综述论文《A Survey on Knowledge Graph-Based Recomm…

美团酒旅起源数据治理平台的建设与实践

背景 作为一家高度数字化和技术驱动的公司,美团非常重视数据价值的挖掘。在公司日常运行中,通过各种数据分析挖掘手段,为公司发展决策和业务开展提供数据支持。 经过多年的发展,美团酒旅内部形成了一套完整的解决方案,…

LeetCode 1103. 分糖果 II

1. 题目 排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n num_people 个小朋友。 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。 然后,我…

计算广告与推荐系统有哪些区别?

文 | King James本文已获作者授权,禁止二次转载计算广告和推荐系统总感觉有千丝万缕的关系,但是它们之间又有什么异同呢?话不多说,上图!计算广告和推荐系统有交集,但是不能说推荐系统是计算广告的一部分。因…

Android官方开发文档Training系列课程中文版:调用相机之简单摄像

原文地址:http://android.xsoftlab.net/training/camera/videobasics.html 这节课解释了如何通过已有的相机应用拍摄视频。 假设你的程序含有摄像功能,但是它只是程序很小的一部分功能,你并不想在这么小的功能上花费很大的精力。幸运的是&a…

解决cuda版本与pytorch版本不兼容问题

解决PyTorch与CUDA版本不匹配: 2 pytorch官网查看安装命令 https://pytorch.org/get-started/locally/ 如果你发现你的版本与上面的都不符合,可以点击 进入以前版本页面:https://pytorch.org/get-started/previous-versions/的安装命令&am…

论文浅尝 | 重新实验评估知识图谱补全方法

论文作者:Farahnaz Akrami,美国德州大学阿灵顿分校,博士生。笔记整理:南京大学,张清恒,硕士生。链接:https://arxiv.org/pdf/2003.08001.pdf代码:https://github.com/idirlab/kgcomp…

Android组件化方案及组件消息总线modular-event实战

背景 组件化作为Android客户端技术的一个重要分支,近年来一直是业界积极探索和实践的方向。美团内部各个Android开发团队也在尝试和实践不同的组件化方案,并且在组件化通信框架上也有很多高质量的产出。最近,我们团队对美团零售收银和美团轻收…

Android官方开发文档Training系列课程中文版:调用相机之控制相机

原文地址:http://android.xsoftlab.net/training/camera/cameradirect.html 在这节课,我们会讨论如何使用Android框架API来直接控制相机硬件。 直接控制设备的相机拍照或者摄像的代码远比通过其他相机应用来完成要多得多。然而,如果你想构建…

我,大学没毕业,在OpenAI搞AI,想教教你如何提升“研究品味”

文 | 蒋宝尚源 | AI科技评论在AI圈里有这么一个人,虽然大学没有毕业,但却做过谷歌大脑研究员,担任过OpenAI团队的领导人。他被人称作“怪胎”,也被人称作神童。他的名字叫做Chris Olah。在众人眼里,他的成长树在一开始…

LeetCode 889. 已知前序后序 求二叉树(不唯一)

1. 题目 返回与给定的前序和后序遍历匹配的任何二叉树。 pre 和 post 遍历中的值是不同的正整数。 示例:输入:pre [1,2,4,5,3,6,7], post [4,5,2,6,7,3,1] 输出:[1,2,3,4,5,6,7]来源:力扣(LeetCode) 链…

cuda run out of memory内存不足的解决方案

https://segmentfault.com/a/1190000022589080

论文浅尝 | TANDA: Transfer and Adapt Pre-Trained Transformer Models

论文笔记整理:王春培,天津大学硕士。链接:https://arxiv.org/pdf/1911.04118.pdf动机这篇文章聚焦的是问答系统(Q&A)中的一个问题:回答句子选择(Answer Sentence Selection,AS2&…

深入浅出排序学习:写给程序员的算法系统开发实践

引言 我们正处在一个知识爆炸的时代,伴随着信息量的剧增和人工智能的蓬勃发展,互联网公司越发具有强烈的个性化、智能化信息展示的需求。而信息展示个性化的典型应用主要包括搜索列表、推荐列表、广告展示等等。 很多人不知道的是,看似简单的…

从ScrollView嵌套EditText的滑动事件冲突分析触摸事件的分发机制以及TextView的简要实现和冲突的解决办法

本篇文章假设读者没有任何的触摸事件基础知识,所以我们会从最基本的触摸事件分发处说起。 ScrollView为什么会出现嵌套EditText出现滑动事件冲突呢?相信你会有这种疑问,我们来看这么一种情况: 有一个固定高度的EditText&#xff…

LeetCode 1185. 一周中的第几天

1. 题目 给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数:day、month 和 year,分别表示日、月、年。 您返回的结果必须是这几个值中的一个 {“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursda…

使用NLP和ML来提取和构造Web数据

原文链接:https://blog.csdn.net/fendouaini/article/details/109374462 作者|Conner Brew 编译|VK 来源|Towards Data Science 介绍 在本文中,我们将创建一个基于战争研究所(ISW)的结构化文档数据库。ISW为外交和情报专业人员提供…

如何评价一个推荐系统的好坏?

文 | Nemo知乎本文已获作者授权,禁止二次转载现如今,推荐系统几乎无处不在。电商购物,有猜你喜欢。资讯阅读,有个性推荐。听歌看电影,都能识别你的兴趣。就连工作社交,也会提示你可能认识的人...推荐系统火…

论文浅尝 | GEOM-GCN: Geometric Graph Convolutional Networks

论文笔记整理:毕祯,浙江大学硕士,研究方向:知识图谱、自然语言处理。动机消息传递神经网络(MPNN)已成功应用于现实世界中的各种应用中。但是MPNN聚合器的两个基本弱点限制了它们表示图结构数据的能力&#…

ScrollView嵌套EditText联带滑动的解决办法

本篇文章的相关内容需结合上文:从ScrollView嵌套EditText的滑动事件冲突分析触摸事件的分发机制以及TextView的简要实现和冲突的解决办法 在说完了如何解决ScrollView嵌套EditText的滑动事件冲突之后,我们接下来说一下如何实现它们两者之间的联带滑动。什…