社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

浅谈推荐,从FM到深度学习

AINLP • 3 年前 • 276 次点击  

大家好,上一篇文章当中我们介绍了Embedding对于推荐系统模型的作用,介绍了FFM和AFM的基本原理。今天我们继续来介绍FM,介绍一下FM之后的几个重要的迭代版本,以及它的发展方向。

FNN

首先我们来介绍一下FNN,FNN的全称是Factorisation-machi supported Neural Network,即FM支撑的神经网络。其实这个名字当中信息量很大,我们来做个简单的词法分析,这个短语的主语是神经网络,FM支撑的是一个修饰的定语。也就是说这个模型的本质是神经网络,FM只是这个神经网络的一个特性。

而如果回顾一下FFM以及AFM,你会发现这两个模型的主体还是FM,神经网络是FM的修饰。这里的一个潜在的主语的变化其实是有隐藏信息的,隐藏信息就是学界对于模型的认知正在逐渐变化,正从FM为主体悄然转化成神经网络为主体。这个悄然的变化说明了一个关键信息,以后推荐系统的相关模型,神经网络才是大头。

了解完了这个潜在台词之后,我们再来看看FNN的网络结构。其实FNN的网络结构非常简单,就是FM与神经网络的一个串联。通过FM部分将特征转化成Embedding,之后全部拼接到一起之后,放入MLP(多层感知机)当中做训练。大家参考一下下图很容易就能搞明白。

PNN

PNN和FNN类似它唯一的区别就是MLP的输入不仅仅是特征的Embedding,还加上了Embedding product的结果。

它的模型结构是这样的:

我们关注一下中间的Product Layer,这一层分成了左右两个部分,左边的部分就是特征Embedding,右边的部分是Embedding的两两product的结果,也就是特征之间两两内积的结果。而向量之间product的操作也有好几种,既可以内积也可以外积。但不管是内积还是外积都有一个问题,就是它的数量太多了。对于N维特征的模型来说,它的两两交叉一共有种,这是一个非常庞大的数字。

DeepFM

下一个登场的是DeepFM,关于这个模型我们之前对它的论文写过详细的分析解读,如果感兴趣想要了解更多细节的同学可以点击一下下方的传送门。

吃透论文——推荐算法不可不看的DeepFM模型

DeepFM和FNN非常接近,唯一的不同点是FNN的FM部分和MLP是串联,而在DeepFM当中则改成了并联。

大家对照一下下图,就可以发现FM模块输出的Embedding除了直接进入MLP之外,也会在FM层进行FM的两两交叉操作,之后会和MLP的结果一起作为最后一层的输入。

总结

在这个三个模型当中,前两个基本上都是摆设,真正效果比较不错,在工业界得到广泛使用的还是第三个。因为它既保留了FM原汁原味的两两特征交叉项,也容纳了多层神经网络强大的泛化拟合能力,因此它在FM的基础上得到了进一步的极大提升。

除了模型效果之外,还有一点非常有意思,就是以现在的眼光来看,FNN和PNN其实和FM没有半毛钱关系。因为他们所谓的FM支撑的部分不过是用来进行了Embedding而已,也就是把单个的特征转化成了向量的形式。这个在如今的推荐领域已经成了常规操作、家常便饭,但是在当时还是会被视为是FM的特性,这其实是很鲜明的时代特征。这里也能看得出一个转变,我们推荐领域的模型正在逐渐摆脱FM的束缚,全面迎接神经网络。

那么在摆脱FM迎接神经网络的过程当中又有哪些精彩的模型呢?同样,我先卖个关子,让我们下期揭晓。

好了,今天的文章就到这里,感谢阅读,如果喜欢的话不要忘了三连。



由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

欢迎加入AINLP技术交流群
进群请添加AINLP小助手微信(id: ainlper)
请备注具体方向+所用到的相关技术点

推荐阅读

这个NLP工具,玩得根本停不下来

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/111615
 
276 次点击