我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1173|回复: 2

[技术文章] 机器学习算法那家强 因子分解机(FM算法)工业落地能力最

[复制链接]
  • TA的每日心情

    2024-10-6 20:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    479

    主题

    247

    回帖

    1392

    积分

    二级逆天

    积分
    1392

    终身成就奖特殊贡献奖

    发表于 2020-12-31 09:12:22 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    [paragraph]尽管BERT为代表的预训练模型大肆流行,但是身处工业界才会知道它落地有多难,尤其是QPS动辄几百的在线推荐、搜索系统,哪怕在大厂也很难在线上系统见到它们。
    今天就想反其道而行之,谈谈工业界搜索、推荐、广告这类核心场景中落地能力最强的算法(之一):因子分解机(FM)。我不敢说它是最简单的(FM的确很简单),但是作为一个推荐算法调参工程师,掌握FM一定是性价比最高的。我推崇FM算法的原因,有以下三点:
    功能齐全
    众所周知,推荐算法有三个应用领域:召回、粗排、精排。推荐算法千千万,但是有的算法只能用于召回,有的算法只能用于排序。像FM这样实现三个领域全覆盖的多面手,目前为止,孤陋寡闻的我尚不知道有第二个。但是需要强调的是,我们不能只训练一个FM排序模型,然后直接拿这个排序模型用于召回。尽管都是基于FM算法,但是FM召回与排序,有以下不同:
    使用的特征不同
    FM召回,由于未来要依赖Faiss进行线上检索,所以不能使用user与doc的交叉特征。只有如此,我们才能独立计算userembedding与docembedding
    FM排序,则没有这方面的限制,可以使用user与doc的交叉特征。是的,你没看错。因为FM所实现自动二阶交叉,仅能代表“共现”。但是user与doc之间还有其他形式的交叉,比如usertag与doctag之间的重合度,喂入这样的交叉,对于排序性能提升,仍然有很大帮助。
    使用的样本不同
    训练FM做排序时,必须使用“曝光未点击”这样的“真负”样本。
    训练FM做召回时,起码不能只使用“曝光未点击”做负样本。大部分的负样本必须通过随机采样得到。个中原因见我的文章《负样本为王:评Facebook的向量化召回算法》。
    使用的Loss不同
    FM排序时,由于负样本是真实的,可以采用CTR预估那样的point-wiseloss
    FM召回时,由于负样本是随机采样得到的,存在一定的噪声,最好采用BPR,hinge这样的pair-wiseloss。
    性能优异
    推荐系统的两大永恒主题,“记忆”与“扩展”,FM也能实现全覆盖。
    FM存在一阶项,实际就是LR,能够“记忆”高频、常见模式
    FM存在featureembedding。如我在《无中生有:论推荐算法中的Embedding思想》据说,Embedding是提升推荐算法“扩展性”的法宝。FM通过featureembedding,能够自动挖掘低频、长尾模式。在这一点上,基于embedding的二阶交叉,并不比DNN的高阶交叉,逊色多少。
    便于上线
    现在深度学习是推荐领域的宠儿,LR/FM/GBDT这样的传统机器学习算法,不招人待见。
    DNN虽然性能优异,但是它有一个致命缺点,就是上线困难。训练的时候,各位调参侠,把各种酷炫的结构,什么attention,transformer,capsule,能加上的都给它加上,看着离线指标一路上涨,心里和脸上都乐开了花,却全然无视旁边的后端工程师恨得咬紧了牙根。模型越复杂,离线和线上指标未必就更好,但是线上的时间开销肯定会增加,轻则影响算法与后端的同事关系(打工人何苦为难打工人),重则你那离线指标完美的模型压根没有上线的机会。虽说,目前已经有TFServing这样的线上serving框架,但是它也不是开箱即用的,也需要一系列的性能调优,才能满足线上的实时性要求。
    所以,如果你身处一个小团队,后端工程人员的技术能力不强,DNN的线上实时预测,就会成为一个难题,这个时候,FM这样的传统机器学习算法,就凸显出其优势。
    FM排序,虽然理论上需要所有特征进行二阶交叉,但是通过公式化简,可以在O(n)的时间复杂度下完成。n是样本中非零的特征数目,由于推荐系统中的特征非常稀疏,所以预测速度是非常快的。
    召回,由于候选集巨大,对于实时性的要求更高。很多基于DNN的召回算法,由于无法满足线上实时生成userembedding的需求,只能退而离线生成userembedding,对于用户实时兴趣的捕捉大打折扣。FM召回,这时就显现其巨大的优势。事先把docembedding计算好,存入Faiss建立索引,userembedding只需要把一系列的featureembedding相加就可以得到,再去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威望 -5 收起 理由
    老吴 -5 没有按版规发帖。下不为例

    查看全部评分

    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1600

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖特殊贡献奖原创先锋奖

    发表于 2020-12-31 09:57:20 | 显示全部楼层
    感谢楼主的无私分享,学习学习
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-6-14 16:03
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    0

    主题

    1万

    回帖

    7618

    积分

    二级逆天

    积分
    7618

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2021-1-2 16:34:57 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    公告:服务器刚移机,
    大家请不要下载东西。
    会下载失败


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表