文件名称:
README.md
所在目录:
RecommendSystem
文件大小:
31.01 KB
下载地址:
文本预览:
# 论文拾贝
## 1. [Item-to-Item Collaborative Filtering_2003](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/Item-to-Item%20Collaborative%20Filtering_2003.pdf)
* **简介**: 这是2003年来自亚马逊的一篇文章
* **内容**: 提出了Item-to-Item协同过滤算法, 也就是物品与物品之间的协同过滤, 通过计算物品之间的相似度对用户来进行推荐, 相比较于用户之间的协同过滤, 适合在线推荐商品, 且在线计算复杂度会低很多。 本篇论文主要是描述了一下传统的协同过滤方法的原理, 像用户的协同过滤, 聚类的模型, 搜索的模型等, 然后通过分析他们的一些不足引出了Item-to-Item算法, 并进行了原理的解释,最后和已有的算法进行了对比。
* **借鉴**: 这篇文章提出的协同过滤推荐算法正式被用于在线推荐, 是推荐系统领域比较重要的一篇论文
* **链接**: [AI上推荐 之 协同过滤](https://blog.csdn.net/wuzhongqiang/article/details/107891787)
## 2. [Factorization-Machines_2010](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/Factorization-Machines_2010.pdf)
* **简介**: 这是2010年的一篇文章
* **内容**: 为了解决二阶多项式交叉算法无法在很稀疏的数据集上表现很好的问题, 提出了因子分解机模型FM, 该模型是把二阶多项式交叉特征前面的单独系数通过隐向量内积的形式表现了出来, 综合考虑了已有的所有数据。 首先是为每个特征学习一个隐向量, 然后把隐向量的内积作为两两交叉特征前面的权重, 相比较于Poly2来说, 这种方式在稀疏数据集上表现比较好。 本论文首先是阐述了FM的原理, FM的公式推导和训练方式, 然后对比了FM和SVM(采用核的思想对特征进行交叉)。这些方式与逻辑回归的区别就是特征与特征之间增加了交互信息。
* **借鉴**: 这篇文章的FM模型也是非常重要的一个模型了, 在传统的推荐算法中也是非常重要, 这种思想可以延续到深度学习领域的隐向量embedding。
* **链接**:[AI上推荐 之 逻辑回归模型与GBDT+LR](https://blog.csdn.net/wuzhongqiang/article/details/108349729)
## 3. [Field-aware Factorization Machines_2015](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/Field-aware%20Factorization%20Machines_2015.pdf)
* **简介**: 这是2015年基于FM改进的一篇文章, 提出的模型在多项CTR大赛中夺得冠军, 并被Criteo、美团等公司深度应用
* **内容**:这个是在FM的基础上引入了特征域感知的概念, 上面的FM模型在学习隐向量的过程中, 综合考虑了所有特征域里面的隐向量, 也就是每个特征值只学习到了一个隐向量, 这样在进行两两特征交互的时候, 用的是他们的内积。 而FFM在这个基础上进行了改进, 认为不同的特征域里面的隐向量不应该相同, 所以**FFM为每个特征值学习了f个隐向量, 这里的f就是特征域的个数。 针对不同特征域里面的特征与某个特征值交叉会使用不同的隐向量进行内积作为交叉的权重**。 这里论文里面考虑的就是交互的时候, 由于交互特征属于不同的域, 统一用相同的隐向量进行计算可能不太合理, 比如(EPSN, Nike)和(EPSN, Male), 对于出版社EPSN来说, 与广告商Nike和性别的交互, 如果是FM, EPSN会是一个隐向量, 而FFM的话, 会分别针对广告商属性和性别属性学习两个隐向量, 这样交互的时候, 前面那个用广告属性的隐向量, 后者用Male的隐向量, 这样可能会合理一些。毕竟广告商和性别相差比较大, 统一学习的话效果不太好。 这篇论文的创新就是FFM, 先介绍了FM的不足, 引出FFM模型, 然后介绍了FFM模型的原理, 训练方式, 最后实验过程探索了一些超参数, 训练方式的影响, 以及速度方面, 和其他模型的比较, 不同数据集的实验等。
* **借鉴**: 这篇论文可以感觉人家的实验设计挺全的, 一读就是做了很多工作, 所以自己写论文的时候也要考虑全面性
* **原理解释**: [AI上推荐 之 FM和FFM](https://blog.csdn.net/wuzhongqiang/article/details/108719417)
## 4. [facebook-GBDT-LR_2014](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/facebook-GBDT-LR_2014.pdf)
* **简介**: 这是2014年来自Facebook的一篇文章
* **内容**: 针对FM没法进行更高阶特征交互的问题, 提出了GBDT+LR模型可以用来更高阶特征之间的交互, 并且把特征工程推向了自动化处理, 之前的那些模型, 特征工程大部分全是靠人工处理, 而该篇论文的模型提出之后, 使得模型自动的交叉组合特征, 然后进行预测工作, 节省了很多人力和人工干预。 本篇论文依然是讲了GBDT+LR模型的架构和工作原理, 然后大部分时间都是在实验, 从实践的角度进行梳理这篇文章, 探索了具体实践过程中的一些细节。
* **借鉴**: 这篇文章后面的实践部分没有细读, 详情可以参考下面这篇文章。
* **链接**:[GBDT+LR](https://blog.csdn.net/Yasin0/article/details/100737222)
* **原理解释**: [AI上推荐 之 逻辑回归模型与GBDT+LR](https://blog.csdn.net/wuzhongqiang/article/details/108349729)
## 5. [DeepCross_2016](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/DeepCross_2016.pdf)
* **简介**: 这是2016年来自微软的一篇文章
* **内容**: 这篇文章提出了DeepCrossing的网络模型, 这个模型是第一次把深度学习应用于推荐系统的工程实现, 解决了从特征工程、稀疏向量稠密化、多层神经网络进行优化目标拟合等一系列深度学习在推荐系统的应用问题,为后面的模型打下了良好的基础, DeepCrossing模型应用场景是微软搜索引擎Bing中的搜索广告推荐, 用户在输入搜索词之后, 搜索引擎除了返回相关结果, 还返回与搜索词相关的广告,Deep Crossing的优化目标就是预测对于某一广告, 用户是否会点击, 依然是点击率预测的一个问题。这个模型的具体结构可以参考下面的链接。具体实验部分没仔细看。
* **借鉴**: 这个模型涉及到的技术比较基础,在传统神经网络的基础上加入了embedding, 残差连接等思想, 且结构比较简单, 对初学者复现和学习都比较友好。
* **链接**: [DeepCross文章导读](https://mp.weixin.qq.com/s/WXnvkoRFxwFpflStAuW7kQ)
* **原理解释**: [AI上推荐 之 AutoRec与Deep Crossing模型](https://blog.csdn.net/wuzhongqiang/article/details/108948440)
## 6. [NeuralCollaborativeFiltering_2017](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/NeuralCollaborativeFiltering_2016.pdf)
* **简介**: 这是2017年来自新加坡国立大学的一篇文章
* **内容**: 这篇文章在传统的协同过滤的基础上进行了改进, 把神经网络引入进了深度学习, 提出了深度协同过滤(NeuralCF)模型,这个模型是GMF和MLP的一个组合模型, GMF就是矩阵分解的泛化模型, 这个依然是保留了MF内积的线性运算。而MLP就是在传统MF的思路基础上, **把内积运算用多层的感知机进行了替换**, 以增强非线性表达和更深层次的交叉, 学习到更多的信息。这一个线性, 一个非线性最后又组合了起来得到最终的NeuralCF模型。 这篇文章介绍了GMF模型, MLP模型, 以及它俩的融合, NeuralCF模型的计算过程, 然后就是在两个真实数据集上进行了实验。
* **借鉴**: 这个模型涉及到的技术也比较基础,思路不是很复杂, 所以也比较利于学习, 涉及的特征只有用户和物品的交互信息, 也就是用户向量和物品向量, 没有其他的特征在里面, 而处理过程,就是通过embedding得到各自的隐向量, 然后各自的隐向量进入不同的模型进行计算。 借鉴的地方就是人家的实验部分抛出了四个问题, 然后一一解决, 非常全面, 还有就是pre-training的思路。 这篇文章感觉质量还是很不错的。读起来, 要比前面的轻松。
* **链接**: [AI上推荐 之 NeuralCF与PNN模型(改变特征交叉方式)](https://blog.csdn.net/wuzhongqiang/article/details/108985457)
## 7. [Product-based Neural Networks for User Response_2016](https://arxiv.org/abs/1611.00144)
* **简介**: 这是2016年上海交大团队在ICDM会议上提出的一个模型
* **内容**: 这个模型也是为了能够更好的加入多组特征, 进行更好的特征交叉提出的一个模型, 这个模型相和Deep Crossing模型非常相似, 唯一的区别就是在于用Product layer代替了DeepCrossing中的Stacking layer,这样就避免了之前不同特征的embedding向量简单堆叠和交互,而是变得有了针对性。 这里面的的Product layer层就是非常大的亮点, 根据特征之间的交叉方式不同, 这里又分成了IPNN和OPNN两种模型。最后也是通过实验验证了提出的模型有效性。
* **借鉴**: 这篇文章当时读的时候,理解起来还是有一定困难的,借鉴的地方感觉是特征交叉的这两种思路。
* **链接**:[AI上推荐 之 NeuralCF与PNN模型(改变特征交叉方式)](https://blog.csdn.net/wuzhongqiang/article/details/108985457)
## 8. [wide&deep_2016](https://arxiv.org/abs/1606.07792)
* **简介**: 这是2016年谷歌提出的模型, 这也是组合模型的开端, 将线性模型和DNN模型很好的组合起来, 在提高泛化能力的同时,兼顾模型的记忆性
* **内容**: 这篇文章提供了一种组合模型的思路, 使得模型能够拥有泛化和记忆能力,wide部分使用了比较简单的逻辑回归, 而Deep部分使用的普通的DNN模型, 所以每个分部分并不是新模型, 这篇paper首先介绍了这个模型的架构,然后介绍了谷歌的推荐系统, 感觉后者也挺重要的。
* **借鉴**: 这种模型组合的思路需要学习一下,互补的东西组合起来会产生很大的作用。 另外感觉后面介绍wide部分接收的特征也需要学习一下, 记忆这块的特征并不是随便输入的。
* **链接**:[AI上推荐 之 Wide&Deep与Deep&Cross模型](https://blog.csdn.net/wuzhongqiang/article/details/109254498)
## 9. [Deep&Cross Network for Ad Click Predictions_2017](https://arxiv.org/abs/1708.05123)
* **简介**: 这是2017年斯坦福大学和谷歌的研究人员在ADKDD上提出的模型
* **内容**: 该模型针对W&D的wide部分进行了改进, 因为Wide部分有一个不足就是需要人工进行特征的组合筛选, 过程繁琐且需要经验, 2阶的FM模型在线性的时间复杂度中自动进行特征交互,但是这些特征交互的表现能力并不够,并且随着阶数的上升,模型复杂度会大幅度提高。于是乎,**作者用一个Cross Network替换掉了Wide部分,来自动进行特征之间的交叉,并且网络的时间和空间复杂度都是线性的。** 通过与Deep部分相结合,构成了深度交叉网络(Deep & Cross Network),简称DCN。这篇文章的亮点就是Cross网络。
* **借鉴**: 同样是这里的交叉思路, 引入了一个交叉网络进行了特征之间的交叉操作
* **链接**: [AI上推荐 之 Wide&Deep与Deep&Cross模型](https://blog.csdn.net/wuzhongqiang/article/details/109254498)
## 10. [Deep Learning over Multi-field Categorical Data_2016](https://arxiv.org/abs/1601.02376)
* **简介**: 这是2016年多伦多大学学院的研究人员提出的模型
* **内容**: CTR预测任务中,针对传统的线性模型LR不能够利用特征之间的交互信息, 而一些非线性模型,如FM,表达能力不够强的问题, 在深度学习时代,该paper提出了两种组合模型的思路,并提出了一些有效的预训练方法, 一种模型是FM+DNN的组合, 叫做FNN模型, 底层是FM, 上层是多层的神经网络, 另一个模型是SNN模型, 底层是一个全连接, 上层是DNN。 这两种模型都采用了预训练的方式,也就是模型的初始化权重是已经训练好的权重,只需要用新的数据集对模型的权重微调,这样可以加快训练速度。 FNN模型和SNN模型的不同之处就是底层的这个模型, 一个是FM, 一个是全连接, SNN的底层全连接用的是限制性的玻尔兹曼机和去噪的自动编码器两种不同的初始化方式,为了减少复杂度,还对one-hot之后, 0的那些单元进行了负采样的操作。最后进行了一系列实验,对比提出的模型和之前的LR, FM的效果,证明了提出模型的有效性。
* **借鉴**: 该paper后面的实验里面做的比较充分,不仅做了对比实验, 还做了超参数调优, 架构选择和正则化方式的相关对比实验, 这里认识到了一种菱形架构, 超越了普通的那种神经网络, 作者分析原因可能是这种特殊形状的网络对神经网络能力有一定的约束,有更好的泛化能力。 作者在对比正则策略的时候提到了dropout比L2有效的一个原因之前也没注意过, 在用每个训练用例训练时, 每个隐藏单元都按照一定的概率随机的从网络中排除, 即每个训练用例都可以看做一个新的模型, 而这些模型的平均化则是一种特殊的bagging行为, 这有利于提高DNN模型的泛化能力。 这些思想感觉都是人家的经验,需要学习一下。
* **链接**: [AI上推荐 之 FNN、DeepFM与NFM](https://blog.csdn.net/wuzhongqiang/article/details/109532267)
## 11. [ DeepFM: A Facorization-Machine based Neural Network_2017](https://arxiv.org/abs/1703.04247)
* 简介:这是2017年哈工大和华为公司联合提出的一个模型
* 内容:CTR预测任务中, 高阶和低阶特征的学习都非常的重要, 线性模型虽然简单,但是没法学习交叉特征且特征工程是个经验活,而FM考虑了低阶交叉, 深度学习模型有着天然的学习特征之间高阶交叉的能力,但是有些深度学习模型却忽略了只顾着学习泛化而忽略了记忆能力,也就是他们一般学习了特征之间的高阶交叉信息而忽略了低阶交叉的重要性。 比如PNN, FNN, 等。 D&W模型架构同时考虑了记忆和泛化,但是wide的部分需要进行特征工程, 所以为了去掉特征工程的繁琐细节,实现一个端到端的CTR预测模型,也为了同时兼顾低阶和高阶交叉特征信息的学习, 该paper,作者提出了DeepFM模型, 这个模型基于了W&D模型,组合了FM和DNN, 把FM的低阶交叉和DNN的高阶交叉学习做到了各司其职且物尽其用,最后做了很多的对比实验证明了该模型要比之前的LR, FM, PNN, FNN, W&D等模型都要好。
* 借鉴:模型的组合思路上, 通过读论文发现, 该模型可不只是单纯的用FM换掉了W&D里面的Wide部分, 而是让FM和DNN使用了相同的embedding输入向量, 这样作者说通过学习高阶和低阶交互特征一块来进行反向传播更新参数会使得模型的表现更佳。第二个就是该paper对比了之前的各种模型, 重点拿出了一小块专门说该模型和其他模型的关系,揭示其他模型的不足之处来证明提出模型的有效性。第三个就是最后大量的实验证明了提出的模型有效性, 数据集上使用了公用数据集和工业级数据集,使得更有说服力。实验上做了速度对比实验,效果实验和各种调参实验, 让人一看做的工作就非常多。最后总结的时候, 也重点强调了实验部分的结果和未来的展望工作, 一直在强调自己提出的模型有多么的牛逼。
* 链接:[AI上推荐 之 FNN、DeepFM与NFM](https://blog.csdn.net/wuzhongqiang/article/details/109532267)
## 12. [ Neural Factorization Machines for Sparse Predictive Analytics_2017](https://arxiv.org/abs/1708.05027)
* 简介:这是2017年由新加坡国立大学的何向南教授等人在SIGIR会议上提出的一个模型, 何向南教授也是NCF模型的提出者。
* 内容:这篇文章主要是针对FM的一些不足进行改进,主要包括线性模型的局限以及无法进行高阶特征交叉,所以作者认为FM无法胜任生活中各种具有复杂结构和规律性的真实数据,尽管当前有了各种FM的变体改进,但仍然局限于线性表达和二阶交互。所以作者在这里提出了一种将FM融合进DNN的策略,通过一个核心结构特征交叉池化层,使得FM与DNN进行了完美衔接,这样就组合了FM的建模低阶特征交互能力和DNN学习高阶特征交互和非线性的能力,得到了NFM模型。由于FM可以在底层学习更多的特征交互信息,这样在DNN学习高阶交互的时候,用比较简单的结构就可以学习到,所以NFM模型不仅兼顾了低阶和高阶特征学习, 线性和非线性学习,并且训练效率和速度上也也比之前的W&D或者Deep Crossing等模型好。该模型还有一个较大的优势就是适合高维稀疏的数据场景。最后作者通过大量的实验来验证了三个问题:
1. 提出的核心结构特征交叉池化层(Bi-Interaction pooling)确实有效,且用上dropout和Batchnormalization会更加有效
2. NFM的DNN的隐藏层部分有利于学习高阶特征的交互信息,并且只需要少量的一两层即可达到很好的效果。这是因为Bi-Interaction Pooling层的特征交互信息学习的到位
3. NFM优于当前的很多模型在处理稀疏性的任务上,包括W&D, FM, Deep Crossing等
深度神经网络本身不适合与处理非常稀疏的数据, 而底层有了FM的帮忙,使得DNN模型可以用于稀疏数据的推荐场景,且表现效果一般不错。
之前一直没大明白这个特征交叉池化到底是个啥东西,但是和FNN对比后发现,貌似懂了, 这个东西是基于FM学习到各个离散特征的隐向量,然后隐向量进行两两交互(求内积),然后再求和得到最终的结果,然后接上了DNN,并且训练的时候是一块进行训练的,这是一个端到端的模型。
与FNN的区别就是,FNN并没有这个特征交叉池化层,而是离散特征通过embedding之后,得到了各个离散特征的embedding之后,直接连接了DNN,并且FNN的训练分成了两个阶段。
* 借鉴:
- 论文的改进思想, 该篇论文其实核心就在于那个特征交叉池化层上,这个结构不复杂但是作用非常强大,值得学习这个思想。
- 该论文提出了一个问题就是目前深度神经网络没法处理非常稀疏的数据, 而如果想让其更好的用于稀疏数据,比如推荐,信息检索等,就需要设计更好的神经网络结构或者模块,而不是层次上。 这个倒是一个不错的研究点。 总感觉这个改进思路和FNN差不多呀, 如果没有那个特征交叉池化层,感觉和FNN一样了。
- 该paper中讲了很多训练神经网络的关键技术,比如Dropout, BatchNormalization等,并且通过实验论证了这些技术的有效性。 该论文还有个有意思的发现或者尝试,就是将Dropout用在了特征交叉池化层上,结果发现Dropout也可以缓解线性 latent-factor 模型的过拟合。
- 该paper的大量论证实验,又是做的非常足, 且行文逻辑是先抛出了三个问题,然后通过实验验证了这三个问题的方式, 这个目前是第一次见,显得非常的清晰,可以学习一下这种策略,但前提,实验要足才行。
* 链接:[AI上推荐 之 FNN、DeepFM与NFM](https://blog.csdn.net/wuzhongqiang/article/details/109532267)
## 13.[Attentional Factorization Machines_2017](https://arxiv.org/pdf/1708.04617.pdf)
* 简介:这个是2017年浙江大学和新加坡国立大学研究员提出的一个模型, 依然来自何向南教授的团队
* 内容:这篇文章又使用了一个新的结构Attention对传统的FM进行改进, FM非常擅长学习特征之间的二阶交互, 但是存在的一个问题就是FM把所有交互的特征同等的对待, 即认为这些交互特征对于预测目标来说的重要程度一样, 这个在作者看来是FM的一个缺点所在, 所以使用了Attention结构来改进FM, 通过一个注意力网络对于每个特征交互根据对预测结果的重要程度进行了加权, 进一步增强了模型的表达,并且也增加了模型的可解释性。这个模型可以看做是NFM的延伸, 和NFM是从两个不同的方向改进了FM, 但是又可以结合起来, 因为这个模型就是在NFM的基础上, 在特征交叉层与池化层之间加入了一个注意力网络对特征交叉层的交互特征进行了加权,然后进入了池化层。 不过这次AFM这里没有在池化层后面加入DNN了。本篇文章最大的创新就是注意力网络, 使得特征交互有了一个重要性区分, 更加符合真实的业务场景。
* 借鉴:
- 思想上, 该篇文章又提出了一个结构, 设计了一个注意力网络来对不同的特征交互加权,改善了FM的特征交互平等性的限制, 所以作者这里的想法又呼应了NFM那里,希望在一些结构上进行探索,而不是单纯的增加神经网络的层次
- 模型训练上缓解过拟合,依然是dropout和L2技术,dropout用在了特征交互层, 而L2用在了注意力网络上以防止模型过拟合, 并且发现dropout用较小的神经网络进行模型的平均,会潜在的提高性能, 这个在NFM中也提到过, dropout可以看成是很多较小神经网络的平均,类似于一种bagging了, 而模型的平均效应, 往往使得dropout优于l2正则了
- 通过相关工作部分,了解了之前其他的两个模型GBFM, 通过梯度提升选择 "好的 "特征,并且只对好的特征之间的交互作用进行建模。对于所选特征之间的交互作用,GBFM用与FM相同的权重对其进行加总,本质上是一种特征选择算法。HOFM模型,使用一组分离的嵌入来模拟每个阶级的特征交互作用, 虽然比FM效果好一些,但是计算复杂度非常高
- dropout和Batch normalization或许会起冲突, 这个是作者在实验中提到的一个猜想
- 如果使用了注意力机制, 最后实验的时候要验证注意力机制到底是不是再起作用, 可视化注意力机制学习到的参数权重等是一些有效的方式, 这个也值得借鉴
- 写作手法上发现了作者在描述实验结果的时候, 先说总体现象(通过表,图等),然后再说具体的变化,最后说结论, 放一个例子,论文里面有具体的例子
- 如果实验做的比较少,而如果想让实验看起来做的比较充足的方法: 第一个就是可以把训练的一些技术放进去, 然后进行超参的调整作为一些实验,多说一些结论和对比。 比如这里他们就把正则化的两个技术都用上,然后进行调参。 如果自己改进了一些结构或提出了一些想法,一定要验证有效性, 可以进行各种消融实验,比如提出了一种方法, 那么可以针对不同的模型进行实验,验证方法的有效性,如果是提出了一种结构, 可以可视化这个结构等。然后就是和其他模型的对比实验。如果不够,多对比一些模型。
- 写作手法上, 实验之前可以先抛出验证的问题,然后再去实验, 回答上面的问题, 这些感觉都使得论文变得更加饱满。
* 链接:[AI上推荐 之 AFM与DIN模型(当推荐系统遇上了注意力机制)](https://blog.csdn.net/wuzhongqiang/article/details/109532346)
## 14. [Deep Interest Network ](https://arxiv.org/abs/1706.06978)
* 简介:这是2018年阿里在KDD上的一个模型, DIN模型是基于真实的业务场景搞的。
* 内容:DIN模型解决的痛点是深度学习模型无法表达用户多样化的兴趣。 它可以通过考虑【给定的候选广告】和【用户的历史行为】的相关性,来计算用户兴趣的表示向量。具体来说就是通过引入局部激活单元,通过软搜索历史行为的相关部分来关注相关的用户兴趣,并采用加权和来获得有关候选广告的用户兴趣的表示。与候选广告相关性较高的行为会获得较高的激活权重,并支配着用户兴趣。该表示向量在不同广告上有所不同,大大提高了模型的表达能力。 这个模型我一直在强调应用场景, 是因为并不是任何时候都适合这个模型的,很大一个前提是丰富的用户历史行为数据
* 借鉴:
* 该模型的改进思路, 完全是对于业务上的洞察, 所以这种思路
* 工程可行性,一个好的推荐工程师不仅要从模型上进行改进,还要考虑实现能力,或者应用到真实的应用场景中, 这个也是非常重要的。所以该论文为了能够将自己提出的模型应用到实际场景中,提出了两个新的模型训练方法, mini-batch aware 正则和Dice 即激活函数。
* 上面的这两种训练方法可以用于大规模的稀疏数据集中模型的训练, 这两个的原理可以参考博客
* 实验部分,使用了两个公共的数据集和阿里巴巴的一个真实数据集, 这三个数据集的特点就是真正的有丰富用户的历史行为数据
* 实验上, 作者也是做了丰富大量的实验,来验证模型的有效性, 而且还可视化了Attention和DIN学到的embedding向量,从另一个角度证明了自己提出方法的有效性, 当然,人家这篇论文是真的好, 也真正见识到了工业上大佬的实力。
* 链接:[AI上推荐 之 AFM与DIN模型(当推荐系统遇上了注意力机制)](https://blog.csdn.net/wuzhongqiang/article/details/109532346)
## 15. [Deep Interest Evolution Network](https://arxiv.org/abs/1809.03672)
* 简介:这是2019年阿里提出的模型, 是DIN模型的进化版本。
* 内容:DIN模型解决的痛点是深度学习模型无法表达用户多样化的兴趣。 但是它有一个问题就是忽略了序列信息,就是用户的历史行为之间是没有任何关联的, 而序列信息或者历史行为之间的依赖能潜在的反映用户的兴趣变化,所以针对这个问题,阿里提出了DIEN模型,这个模型的核心创新点是"兴趣进化网络", 这个网络里面引入了序列模型GRU, 通过兴趣提取层建立用户历史行为之间的关联关系, 而兴趣进化层来模拟与当前候选商品相关的兴趣演化路径, 通过这个网络,可以有效的进行用户兴趣的演化过程。里面还有两个细节上的创新,在兴趣抽取层, 提出了auxiliary loss来监督GRU的训练过程, 在兴趣进化层部分,改进了GRU的内部单元结构,采用了一个叫做AUGRU的单元,更好的把注意力得分与用户的兴趣向量进行结合。
* 借鉴:
* 该模型的改进思路, 首次把序列模型引进了推荐模型, 能够学习到序列信息
* 两个创新点, 兴趣提取层的模型训练损失感觉是个不错的想法,AUGRU也是一个很好的RNN融合注意力的思路
* 链接:[AI上推荐 之 DIEN模型(序列模型与推荐系统的花火碰撞)](https://blog.csdn.net/wuzhongqiang/article/details/109532438)
## 16. [Deep Session Interest Network](https://arxiv.org/abs/1905.06482)
* 简介:这是2019年阿里提出的模型, 是DIEN模型的进化版本。
* 内容:DIEN模型解决的痛点用户历史行为序列中的序列信息,也就是能够学习序列之间的依赖关系,模拟用户的兴趣演化,但是存在的问题是忽略了用户序列自身的特征, 作者说用户序列本质结构其实是会话,也就是根据时间间隔对会话进行的分段,每个会话里面各个商品是非常相似的,而会话与会话之间的商品可能不是很相似,DIEN却忽略了这个问题。这是作者提出DSIN的动机, 后面的思路和DIEN是差不多的,首先是学习每个会话里面各个商品之间的依赖关系,这个用的Transformer结构,叫做会话兴趣抽取层, 而后面接了一个会话兴趣交互层,用的双向的LSTM来学习会话与会话之间的关系, 然后加局部注意力机制来关注与当前商品更相关的用户会话兴趣。里面的核心就是会话兴趣抽取层和会话兴趣交互层
* 借鉴:
* 创新点就是把transformer引入到了模型当中, 并提出了一个bias 编码
* 感觉这篇模型的思路还是比较简单的
* 链接:[AI上推荐 之 DSIN模型(阿里DIEN之上的再探索)](https://blog.csdn.net/wuzhongqiang/article/details/114500619)
## 17. [xDeepFM](https://arxiv.org/abs/1803.05170)
* 简介:这是2018年中科大联合微软在KDD上提出的一个模型, 是DCN的一个升级版本。
* 内容:xDeepFM关注的重点依然是如何更好的学习特征之间的高阶交互作用,分析了之前DCN的Cross Network的不足,提出了一个新的网络CIN, 这个网络可以显性的学习特征之间的高阶交互,并且还是vector-wise级别的学习, 这个网络是xdeepFM的核心创新点。xDeepFM的模型架构依然采用的W&D的架构, CIN与DNN结合,可以同时学习高阶特征的显隐性交互。
* 借鉴:
* 创新点就是CIN网络,而这个网络的设计也是非常的巧妙,在这里面也能看到RNN和CNN的身影
* 论文的构思感觉也是非常的清晰, 从Introduction-预备知识的介绍-模型-实验-相关工作-结论,感觉非常的完整
* 实验部分做的非常充分, 依然是先提出了三个问题,然后在这个基础上实验回答,并且给定了影响xdeepFM的几个重要超参数,并进行实验调参,确定了合理的值。
* 相关工作部分从大层面梳理了之前的模型。
* 链接:[AI上推荐 之 xDeepFM模型(显隐性高阶特征交互的组合策略)](https://blog.csdn.net/wuzhongqiang/article/details/116379857)
## 18. YouTubeDNN
* 简介:2016年YouTube工程师写的工业界的一篇经典好文
* 内容: 从一个宏观的层面讲述了推荐系统架构, 介绍了召回模型和精排模型, 并且基于业务场景介绍了很多工程性的经验
* 借鉴:这篇paper里面,主要是一些经验点, 非常重要, 这个具体总结到了博客里面
* 链接: [AI上推荐 之 YouTubeDNN模型(工业界推荐系统的灯火阑珊)]([AI上推荐 之 YouTubeDNN模型(工业界推荐系统的灯火阑珊)_Miracle8070-CSDN博客](https://blog.csdn.net/wuzhongqiang/article/details/122671511?spm=1001.2014.3001.5501))
# 模型复现
大部分模型复现和详细的解释可以参考这个GitHub项目:[https://github.com/zhongqiangwu960812/AI-RecommenderSystem](https://github.com/zhongqiangwu960812/AI-RecommenderSystem)
## 1. [Item-to-Item Collaborative Filtering_2003](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/Item-to-Item%20Collaborative%20Filtering_2003.pdf)
* **简介**: 这是2003年来自亚马逊的一篇文章
* **内容**: 提出了Item-to-Item协同过滤算法, 也就是物品与物品之间的协同过滤, 通过计算物品之间的相似度对用户来进行推荐, 相比较于用户之间的协同过滤, 适合在线推荐商品, 且在线计算复杂度会低很多。 本篇论文主要是描述了一下传统的协同过滤方法的原理, 像用户的协同过滤, 聚类的模型, 搜索的模型等, 然后通过分析他们的一些不足引出了Item-to-Item算法, 并进行了原理的解释,最后和已有的算法进行了对比。
* **借鉴**: 这篇文章提出的协同过滤推荐算法正式被用于在线推荐, 是推荐系统领域比较重要的一篇论文
* **链接**: [AI上推荐 之 协同过滤](https://blog.csdn.net/wuzhongqiang/article/details/107891787)
## 2. [Factorization-Machines_2010](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/Factorization-Machines_2010.pdf)
* **简介**: 这是2010年的一篇文章
* **内容**: 为了解决二阶多项式交叉算法无法在很稀疏的数据集上表现很好的问题, 提出了因子分解机模型FM, 该模型是把二阶多项式交叉特征前面的单独系数通过隐向量内积的形式表现了出来, 综合考虑了已有的所有数据。 首先是为每个特征学习一个隐向量, 然后把隐向量的内积作为两两交叉特征前面的权重, 相比较于Poly2来说, 这种方式在稀疏数据集上表现比较好。 本论文首先是阐述了FM的原理, FM的公式推导和训练方式, 然后对比了FM和SVM(采用核的思想对特征进行交叉)。这些方式与逻辑回归的区别就是特征与特征之间增加了交互信息。
* **借鉴**: 这篇文章的FM模型也是非常重要的一个模型了, 在传统的推荐算法中也是非常重要, 这种思想可以延续到深度学习领域的隐向量embedding。
* **链接**:[AI上推荐 之 逻辑回归模型与GBDT+LR](https://blog.csdn.net/wuzhongqiang/article/details/108349729)
## 3. [Field-aware Factorization Machines_2015](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/Field-aware%20Factorization%20Machines_2015.pdf)
* **简介**: 这是2015年基于FM改进的一篇文章, 提出的模型在多项CTR大赛中夺得冠军, 并被Criteo、美团等公司深度应用
* **内容**:这个是在FM的基础上引入了特征域感知的概念, 上面的FM模型在学习隐向量的过程中, 综合考虑了所有特征域里面的隐向量, 也就是每个特征值只学习到了一个隐向量, 这样在进行两两特征交互的时候, 用的是他们的内积。 而FFM在这个基础上进行了改进, 认为不同的特征域里面的隐向量不应该相同, 所以**FFM为每个特征值学习了f个隐向量, 这里的f就是特征域的个数。 针对不同特征域里面的特征与某个特征值交叉会使用不同的隐向量进行内积作为交叉的权重**。 这里论文里面考虑的就是交互的时候, 由于交互特征属于不同的域, 统一用相同的隐向量进行计算可能不太合理, 比如(EPSN, Nike)和(EPSN, Male), 对于出版社EPSN来说, 与广告商Nike和性别的交互, 如果是FM, EPSN会是一个隐向量, 而FFM的话, 会分别针对广告商属性和性别属性学习两个隐向量, 这样交互的时候, 前面那个用广告属性的隐向量, 后者用Male的隐向量, 这样可能会合理一些。毕竟广告商和性别相差比较大, 统一学习的话效果不太好。 这篇论文的创新就是FFM, 先介绍了FM的不足, 引出FFM模型, 然后介绍了FFM模型的原理, 训练方式, 最后实验过程探索了一些超参数, 训练方式的影响, 以及速度方面, 和其他模型的比较, 不同数据集的实验等。
* **借鉴**: 这篇论文可以感觉人家的实验设计挺全的, 一读就是做了很多工作, 所以自己写论文的时候也要考虑全面性
* **原理解释**: [AI上推荐 之 FM和FFM](https://blog.csdn.net/wuzhongqiang/article/details/108719417)
## 4. [facebook-GBDT-LR_2014](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/facebook-GBDT-LR_2014.pdf)
* **简介**: 这是2014年来自Facebook的一篇文章
* **内容**: 针对FM没法进行更高阶特征交互的问题, 提出了GBDT+LR模型可以用来更高阶特征之间的交互, 并且把特征工程推向了自动化处理, 之前的那些模型, 特征工程大部分全是靠人工处理, 而该篇论文的模型提出之后, 使得模型自动的交叉组合特征, 然后进行预测工作, 节省了很多人力和人工干预。 本篇论文依然是讲了GBDT+LR模型的架构和工作原理, 然后大部分时间都是在实验, 从实践的角度进行梳理这篇文章, 探索了具体实践过程中的一些细节。
* **借鉴**: 这篇文章后面的实践部分没有细读, 详情可以参考下面这篇文章。
* **链接**:[GBDT+LR](https://blog.csdn.net/Yasin0/article/details/100737222)
* **原理解释**: [AI上推荐 之 逻辑回归模型与GBDT+LR](https://blog.csdn.net/wuzhongqiang/article/details/108349729)
## 5. [DeepCross_2016](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/DeepCross_2016.pdf)
* **简介**: 这是2016年来自微软的一篇文章
* **内容**: 这篇文章提出了DeepCrossing的网络模型, 这个模型是第一次把深度学习应用于推荐系统的工程实现, 解决了从特征工程、稀疏向量稠密化、多层神经网络进行优化目标拟合等一系列深度学习在推荐系统的应用问题,为后面的模型打下了良好的基础, DeepCrossing模型应用场景是微软搜索引擎Bing中的搜索广告推荐, 用户在输入搜索词之后, 搜索引擎除了返回相关结果, 还返回与搜索词相关的广告,Deep Crossing的优化目标就是预测对于某一广告, 用户是否会点击, 依然是点击率预测的一个问题。这个模型的具体结构可以参考下面的链接。具体实验部分没仔细看。
* **借鉴**: 这个模型涉及到的技术比较基础,在传统神经网络的基础上加入了embedding, 残差连接等思想, 且结构比较简单, 对初学者复现和学习都比较友好。
* **链接**: [DeepCross文章导读](https://mp.weixin.qq.com/s/WXnvkoRFxwFpflStAuW7kQ)
* **原理解释**: [AI上推荐 之 AutoRec与Deep Crossing模型](https://blog.csdn.net/wuzhongqiang/article/details/108948440)
## 6. [NeuralCollaborativeFiltering_2017](https://github.com/zhongqiangwu960812/ReadPapaers/blob/master/RecommendSystem/NeuralCollaborativeFiltering_2016.pdf)
* **简介**: 这是2017年来自新加坡国立大学的一篇文章
* **内容**: 这篇文章在传统的协同过滤的基础上进行了改进, 把神经网络引入进了深度学习, 提出了深度协同过滤(NeuralCF)模型,这个模型是GMF和MLP的一个组合模型, GMF就是矩阵分解的泛化模型, 这个依然是保留了MF内积的线性运算。而MLP就是在传统MF的思路基础上, **把内积运算用多层的感知机进行了替换**, 以增强非线性表达和更深层次的交叉, 学习到更多的信息。这一个线性, 一个非线性最后又组合了起来得到最终的NeuralCF模型。 这篇文章介绍了GMF模型, MLP模型, 以及它俩的融合, NeuralCF模型的计算过程, 然后就是在两个真实数据集上进行了实验。
* **借鉴**: 这个模型涉及到的技术也比较基础,思路不是很复杂, 所以也比较利于学习, 涉及的特征只有用户和物品的交互信息, 也就是用户向量和物品向量, 没有其他的特征在里面, 而处理过程,就是通过embedding得到各自的隐向量, 然后各自的隐向量进入不同的模型进行计算。 借鉴的地方就是人家的实验部分抛出了四个问题, 然后一一解决, 非常全面, 还有就是pre-training的思路。 这篇文章感觉质量还是很不错的。读起来, 要比前面的轻松。
* **链接**: [AI上推荐 之 NeuralCF与PNN模型(改变特征交叉方式)](https://blog.csdn.net/wuzhongqiang/article/details/108985457)
## 7. [Product-based Neural Networks for User Response_2016](https://arxiv.org/abs/1611.00144)
* **简介**: 这是2016年上海交大团队在ICDM会议上提出的一个模型
* **内容**: 这个模型也是为了能够更好的加入多组特征, 进行更好的特征交叉提出的一个模型, 这个模型相和Deep Crossing模型非常相似, 唯一的区别就是在于用Product layer代替了DeepCrossing中的Stacking layer,这样就避免了之前不同特征的embedding向量简单堆叠和交互,而是变得有了针对性。 这里面的的Product layer层就是非常大的亮点, 根据特征之间的交叉方式不同, 这里又分成了IPNN和OPNN两种模型。最后也是通过实验验证了提出的模型有效性。
* **借鉴**: 这篇文章当时读的时候,理解起来还是有一定困难的,借鉴的地方感觉是特征交叉的这两种思路。
* **链接**:[AI上推荐 之 NeuralCF与PNN模型(改变特征交叉方式)](https://blog.csdn.net/wuzhongqiang/article/details/108985457)
## 8. [wide&deep_2016](https://arxiv.org/abs/1606.07792)
* **简介**: 这是2016年谷歌提出的模型, 这也是组合模型的开端, 将线性模型和DNN模型很好的组合起来, 在提高泛化能力的同时,兼顾模型的记忆性
* **内容**: 这篇文章提供了一种组合模型的思路, 使得模型能够拥有泛化和记忆能力,wide部分使用了比较简单的逻辑回归, 而Deep部分使用的普通的DNN模型, 所以每个分部分并不是新模型, 这篇paper首先介绍了这个模型的架构,然后介绍了谷歌的推荐系统, 感觉后者也挺重要的。
* **借鉴**: 这种模型组合的思路需要学习一下,互补的东西组合起来会产生很大的作用。 另外感觉后面介绍wide部分接收的特征也需要学习一下, 记忆这块的特征并不是随便输入的。
* **链接**:[AI上推荐 之 Wide&Deep与Deep&Cross模型](https://blog.csdn.net/wuzhongqiang/article/details/109254498)
## 9. [Deep&Cross Network for Ad Click Predictions_2017](https://arxiv.org/abs/1708.05123)
* **简介**: 这是2017年斯坦福大学和谷歌的研究人员在ADKDD上提出的模型
* **内容**: 该模型针对W&D的wide部分进行了改进, 因为Wide部分有一个不足就是需要人工进行特征的组合筛选, 过程繁琐且需要经验, 2阶的FM模型在线性的时间复杂度中自动进行特征交互,但是这些特征交互的表现能力并不够,并且随着阶数的上升,模型复杂度会大幅度提高。于是乎,**作者用一个Cross Network替换掉了Wide部分,来自动进行特征之间的交叉,并且网络的时间和空间复杂度都是线性的。** 通过与Deep部分相结合,构成了深度交叉网络(Deep & Cross Network),简称DCN。这篇文章的亮点就是Cross网络。
* **借鉴**: 同样是这里的交叉思路, 引入了一个交叉网络进行了特征之间的交叉操作
* **链接**: [AI上推荐 之 Wide&Deep与Deep&Cross模型](https://blog.csdn.net/wuzhongqiang/article/details/109254498)
## 10. [Deep Learning over Multi-field Categorical Data_2016](https://arxiv.org/abs/1601.02376)
* **简介**: 这是2016年多伦多大学学院的研究人员提出的模型
* **内容**: CTR预测任务中,针对传统的线性模型LR不能够利用特征之间的交互信息, 而一些非线性模型,如FM,表达能力不够强的问题, 在深度学习时代,该paper提出了两种组合模型的思路,并提出了一些有效的预训练方法, 一种模型是FM+DNN的组合, 叫做FNN模型, 底层是FM, 上层是多层的神经网络, 另一个模型是SNN模型, 底层是一个全连接, 上层是DNN。 这两种模型都采用了预训练的方式,也就是模型的初始化权重是已经训练好的权重,只需要用新的数据集对模型的权重微调,这样可以加快训练速度。 FNN模型和SNN模型的不同之处就是底层的这个模型, 一个是FM, 一个是全连接, SNN的底层全连接用的是限制性的玻尔兹曼机和去噪的自动编码器两种不同的初始化方式,为了减少复杂度,还对one-hot之后, 0的那些单元进行了负采样的操作。最后进行了一系列实验,对比提出的模型和之前的LR, FM的效果,证明了提出模型的有效性。
* **借鉴**: 该paper后面的实验里面做的比较充分,不仅做了对比实验, 还做了超参数调优, 架构选择和正则化方式的相关对比实验, 这里认识到了一种菱形架构, 超越了普通的那种神经网络, 作者分析原因可能是这种特殊形状的网络对神经网络能力有一定的约束,有更好的泛化能力。 作者在对比正则策略的时候提到了dropout比L2有效的一个原因之前也没注意过, 在用每个训练用例训练时, 每个隐藏单元都按照一定的概率随机的从网络中排除, 即每个训练用例都可以看做一个新的模型, 而这些模型的平均化则是一种特殊的bagging行为, 这有利于提高DNN模型的泛化能力。 这些思想感觉都是人家的经验,需要学习一下。
* **链接**: [AI上推荐 之 FNN、DeepFM与NFM](https://blog.csdn.net/wuzhongqiang/article/details/109532267)
## 11. [ DeepFM: A Facorization-Machine based Neural Network_2017](https://arxiv.org/abs/1703.04247)
* 简介:这是2017年哈工大和华为公司联合提出的一个模型
* 内容:CTR预测任务中, 高阶和低阶特征的学习都非常的重要, 线性模型虽然简单,但是没法学习交叉特征且特征工程是个经验活,而FM考虑了低阶交叉, 深度学习模型有着天然的学习特征之间高阶交叉的能力,但是有些深度学习模型却忽略了只顾着学习泛化而忽略了记忆能力,也就是他们一般学习了特征之间的高阶交叉信息而忽略了低阶交叉的重要性。 比如PNN, FNN, 等。 D&W模型架构同时考虑了记忆和泛化,但是wide的部分需要进行特征工程, 所以为了去掉特征工程的繁琐细节,实现一个端到端的CTR预测模型,也为了同时兼顾低阶和高阶交叉特征信息的学习, 该paper,作者提出了DeepFM模型, 这个模型基于了W&D模型,组合了FM和DNN, 把FM的低阶交叉和DNN的高阶交叉学习做到了各司其职且物尽其用,最后做了很多的对比实验证明了该模型要比之前的LR, FM, PNN, FNN, W&D等模型都要好。
* 借鉴:模型的组合思路上, 通过读论文发现, 该模型可不只是单纯的用FM换掉了W&D里面的Wide部分, 而是让FM和DNN使用了相同的embedding输入向量, 这样作者说通过学习高阶和低阶交互特征一块来进行反向传播更新参数会使得模型的表现更佳。第二个就是该paper对比了之前的各种模型, 重点拿出了一小块专门说该模型和其他模型的关系,揭示其他模型的不足之处来证明提出模型的有效性。第三个就是最后大量的实验证明了提出的模型有效性, 数据集上使用了公用数据集和工业级数据集,使得更有说服力。实验上做了速度对比实验,效果实验和各种调参实验, 让人一看做的工作就非常多。最后总结的时候, 也重点强调了实验部分的结果和未来的展望工作, 一直在强调自己提出的模型有多么的牛逼。
* 链接:[AI上推荐 之 FNN、DeepFM与NFM](https://blog.csdn.net/wuzhongqiang/article/details/109532267)
## 12. [ Neural Factorization Machines for Sparse Predictive Analytics_2017](https://arxiv.org/abs/1708.05027)
* 简介:这是2017年由新加坡国立大学的何向南教授等人在SIGIR会议上提出的一个模型, 何向南教授也是NCF模型的提出者。
* 内容:这篇文章主要是针对FM的一些不足进行改进,主要包括线性模型的局限以及无法进行高阶特征交叉,所以作者认为FM无法胜任生活中各种具有复杂结构和规律性的真实数据,尽管当前有了各种FM的变体改进,但仍然局限于线性表达和二阶交互。所以作者在这里提出了一种将FM融合进DNN的策略,通过一个核心结构特征交叉池化层,使得FM与DNN进行了完美衔接,这样就组合了FM的建模低阶特征交互能力和DNN学习高阶特征交互和非线性的能力,得到了NFM模型。由于FM可以在底层学习更多的特征交互信息,这样在DNN学习高阶交互的时候,用比较简单的结构就可以学习到,所以NFM模型不仅兼顾了低阶和高阶特征学习, 线性和非线性学习,并且训练效率和速度上也也比之前的W&D或者Deep Crossing等模型好。该模型还有一个较大的优势就是适合高维稀疏的数据场景。最后作者通过大量的实验来验证了三个问题:
1. 提出的核心结构特征交叉池化层(Bi-Interaction pooling)确实有效,且用上dropout和Batchnormalization会更加有效
2. NFM的DNN的隐藏层部分有利于学习高阶特征的交互信息,并且只需要少量的一两层即可达到很好的效果。这是因为Bi-Interaction Pooling层的特征交互信息学习的到位
3. NFM优于当前的很多模型在处理稀疏性的任务上,包括W&D, FM, Deep Crossing等
深度神经网络本身不适合与处理非常稀疏的数据, 而底层有了FM的帮忙,使得DNN模型可以用于稀疏数据的推荐场景,且表现效果一般不错。
之前一直没大明白这个特征交叉池化到底是个啥东西,但是和FNN对比后发现,貌似懂了, 这个东西是基于FM学习到各个离散特征的隐向量,然后隐向量进行两两交互(求内积),然后再求和得到最终的结果,然后接上了DNN,并且训练的时候是一块进行训练的,这是一个端到端的模型。
与FNN的区别就是,FNN并没有这个特征交叉池化层,而是离散特征通过embedding之后,得到了各个离散特征的embedding之后,直接连接了DNN,并且FNN的训练分成了两个阶段。
* 借鉴:
- 论文的改进思想, 该篇论文其实核心就在于那个特征交叉池化层上,这个结构不复杂但是作用非常强大,值得学习这个思想。
- 该论文提出了一个问题就是目前深度神经网络没法处理非常稀疏的数据, 而如果想让其更好的用于稀疏数据,比如推荐,信息检索等,就需要设计更好的神经网络结构或者模块,而不是层次上。 这个倒是一个不错的研究点。 总感觉这个改进思路和FNN差不多呀, 如果没有那个特征交叉池化层,感觉和FNN一样了。
- 该paper中讲了很多训练神经网络的关键技术,比如Dropout, BatchNormalization等,并且通过实验论证了这些技术的有效性。 该论文还有个有意思的发现或者尝试,就是将Dropout用在了特征交叉池化层上,结果发现Dropout也可以缓解线性 latent-factor 模型的过拟合。
- 该paper的大量论证实验,又是做的非常足, 且行文逻辑是先抛出了三个问题,然后通过实验验证了这三个问题的方式, 这个目前是第一次见,显得非常的清晰,可以学习一下这种策略,但前提,实验要足才行。
* 链接:[AI上推荐 之 FNN、DeepFM与NFM](https://blog.csdn.net/wuzhongqiang/article/details/109532267)
## 13.[Attentional Factorization Machines_2017](https://arxiv.org/pdf/1708.04617.pdf)
* 简介:这个是2017年浙江大学和新加坡国立大学研究员提出的一个模型, 依然来自何向南教授的团队
* 内容:这篇文章又使用了一个新的结构Attention对传统的FM进行改进, FM非常擅长学习特征之间的二阶交互, 但是存在的一个问题就是FM把所有交互的特征同等的对待, 即认为这些交互特征对于预测目标来说的重要程度一样, 这个在作者看来是FM的一个缺点所在, 所以使用了Attention结构来改进FM, 通过一个注意力网络对于每个特征交互根据对预测结果的重要程度进行了加权, 进一步增强了模型的表达,并且也增加了模型的可解释性。这个模型可以看做是NFM的延伸, 和NFM是从两个不同的方向改进了FM, 但是又可以结合起来, 因为这个模型就是在NFM的基础上, 在特征交叉层与池化层之间加入了一个注意力网络对特征交叉层的交互特征进行了加权,然后进入了池化层。 不过这次AFM这里没有在池化层后面加入DNN了。本篇文章最大的创新就是注意力网络, 使得特征交互有了一个重要性区分, 更加符合真实的业务场景。
* 借鉴:
- 思想上, 该篇文章又提出了一个结构, 设计了一个注意力网络来对不同的特征交互加权,改善了FM的特征交互平等性的限制, 所以作者这里的想法又呼应了NFM那里,希望在一些结构上进行探索,而不是单纯的增加神经网络的层次
- 模型训练上缓解过拟合,依然是dropout和L2技术,dropout用在了特征交互层, 而L2用在了注意力网络上以防止模型过拟合, 并且发现dropout用较小的神经网络进行模型的平均,会潜在的提高性能, 这个在NFM中也提到过, dropout可以看成是很多较小神经网络的平均,类似于一种bagging了, 而模型的平均效应, 往往使得dropout优于l2正则了
- 通过相关工作部分,了解了之前其他的两个模型GBFM, 通过梯度提升选择 "好的 "特征,并且只对好的特征之间的交互作用进行建模。对于所选特征之间的交互作用,GBFM用与FM相同的权重对其进行加总,本质上是一种特征选择算法。HOFM模型,使用一组分离的嵌入来模拟每个阶级的特征交互作用, 虽然比FM效果好一些,但是计算复杂度非常高
- dropout和Batch normalization或许会起冲突, 这个是作者在实验中提到的一个猜想
- 如果使用了注意力机制, 最后实验的时候要验证注意力机制到底是不是再起作用, 可视化注意力机制学习到的参数权重等是一些有效的方式, 这个也值得借鉴
- 写作手法上发现了作者在描述实验结果的时候, 先说总体现象(通过表,图等),然后再说具体的变化,最后说结论, 放一个例子,论文里面有具体的例子
- 如果实验做的比较少,而如果想让实验看起来做的比较充足的方法: 第一个就是可以把训练的一些技术放进去, 然后进行超参的调整作为一些实验,多说一些结论和对比。 比如这里他们就把正则化的两个技术都用上,然后进行调参。 如果自己改进了一些结构或提出了一些想法,一定要验证有效性, 可以进行各种消融实验,比如提出了一种方法, 那么可以针对不同的模型进行实验,验证方法的有效性,如果是提出了一种结构, 可以可视化这个结构等。然后就是和其他模型的对比实验。如果不够,多对比一些模型。
- 写作手法上, 实验之前可以先抛出验证的问题,然后再去实验, 回答上面的问题, 这些感觉都使得论文变得更加饱满。
* 链接:[AI上推荐 之 AFM与DIN模型(当推荐系统遇上了注意力机制)](https://blog.csdn.net/wuzhongqiang/article/details/109532346)
## 14. [Deep Interest Network ](https://arxiv.org/abs/1706.06978)
* 简介:这是2018年阿里在KDD上的一个模型, DIN模型是基于真实的业务场景搞的。
* 内容:DIN模型解决的痛点是深度学习模型无法表达用户多样化的兴趣。 它可以通过考虑【给定的候选广告】和【用户的历史行为】的相关性,来计算用户兴趣的表示向量。具体来说就是通过引入局部激活单元,通过软搜索历史行为的相关部分来关注相关的用户兴趣,并采用加权和来获得有关候选广告的用户兴趣的表示。与候选广告相关性较高的行为会获得较高的激活权重,并支配着用户兴趣。该表示向量在不同广告上有所不同,大大提高了模型的表达能力。 这个模型我一直在强调应用场景, 是因为并不是任何时候都适合这个模型的,很大一个前提是丰富的用户历史行为数据
* 借鉴:
* 该模型的改进思路, 完全是对于业务上的洞察, 所以这种思路
* 工程可行性,一个好的推荐工程师不仅要从模型上进行改进,还要考虑实现能力,或者应用到真实的应用场景中, 这个也是非常重要的。所以该论文为了能够将自己提出的模型应用到实际场景中,提出了两个新的模型训练方法, mini-batch aware 正则和Dice 即激活函数。
* 上面的这两种训练方法可以用于大规模的稀疏数据集中模型的训练, 这两个的原理可以参考博客
* 实验部分,使用了两个公共的数据集和阿里巴巴的一个真实数据集, 这三个数据集的特点就是真正的有丰富用户的历史行为数据
* 实验上, 作者也是做了丰富大量的实验,来验证模型的有效性, 而且还可视化了Attention和DIN学到的embedding向量,从另一个角度证明了自己提出方法的有效性, 当然,人家这篇论文是真的好, 也真正见识到了工业上大佬的实力。
* 链接:[AI上推荐 之 AFM与DIN模型(当推荐系统遇上了注意力机制)](https://blog.csdn.net/wuzhongqiang/article/details/109532346)
## 15. [Deep Interest Evolution Network](https://arxiv.org/abs/1809.03672)
* 简介:这是2019年阿里提出的模型, 是DIN模型的进化版本。
* 内容:DIN模型解决的痛点是深度学习模型无法表达用户多样化的兴趣。 但是它有一个问题就是忽略了序列信息,就是用户的历史行为之间是没有任何关联的, 而序列信息或者历史行为之间的依赖能潜在的反映用户的兴趣变化,所以针对这个问题,阿里提出了DIEN模型,这个模型的核心创新点是"兴趣进化网络", 这个网络里面引入了序列模型GRU, 通过兴趣提取层建立用户历史行为之间的关联关系, 而兴趣进化层来模拟与当前候选商品相关的兴趣演化路径, 通过这个网络,可以有效的进行用户兴趣的演化过程。里面还有两个细节上的创新,在兴趣抽取层, 提出了auxiliary loss来监督GRU的训练过程, 在兴趣进化层部分,改进了GRU的内部单元结构,采用了一个叫做AUGRU的单元,更好的把注意力得分与用户的兴趣向量进行结合。
* 借鉴:
* 该模型的改进思路, 首次把序列模型引进了推荐模型, 能够学习到序列信息
* 两个创新点, 兴趣提取层的模型训练损失感觉是个不错的想法,AUGRU也是一个很好的RNN融合注意力的思路
* 链接:[AI上推荐 之 DIEN模型(序列模型与推荐系统的花火碰撞)](https://blog.csdn.net/wuzhongqiang/article/details/109532438)
## 16. [Deep Session Interest Network](https://arxiv.org/abs/1905.06482)
* 简介:这是2019年阿里提出的模型, 是DIEN模型的进化版本。
* 内容:DIEN模型解决的痛点用户历史行为序列中的序列信息,也就是能够学习序列之间的依赖关系,模拟用户的兴趣演化,但是存在的问题是忽略了用户序列自身的特征, 作者说用户序列本质结构其实是会话,也就是根据时间间隔对会话进行的分段,每个会话里面各个商品是非常相似的,而会话与会话之间的商品可能不是很相似,DIEN却忽略了这个问题。这是作者提出DSIN的动机, 后面的思路和DIEN是差不多的,首先是学习每个会话里面各个商品之间的依赖关系,这个用的Transformer结构,叫做会话兴趣抽取层, 而后面接了一个会话兴趣交互层,用的双向的LSTM来学习会话与会话之间的关系, 然后加局部注意力机制来关注与当前商品更相关的用户会话兴趣。里面的核心就是会话兴趣抽取层和会话兴趣交互层
* 借鉴:
* 创新点就是把transformer引入到了模型当中, 并提出了一个bias 编码
* 感觉这篇模型的思路还是比较简单的
* 链接:[AI上推荐 之 DSIN模型(阿里DIEN之上的再探索)](https://blog.csdn.net/wuzhongqiang/article/details/114500619)
## 17. [xDeepFM](https://arxiv.org/abs/1803.05170)
* 简介:这是2018年中科大联合微软在KDD上提出的一个模型, 是DCN的一个升级版本。
* 内容:xDeepFM关注的重点依然是如何更好的学习特征之间的高阶交互作用,分析了之前DCN的Cross Network的不足,提出了一个新的网络CIN, 这个网络可以显性的学习特征之间的高阶交互,并且还是vector-wise级别的学习, 这个网络是xdeepFM的核心创新点。xDeepFM的模型架构依然采用的W&D的架构, CIN与DNN结合,可以同时学习高阶特征的显隐性交互。
* 借鉴:
* 创新点就是CIN网络,而这个网络的设计也是非常的巧妙,在这里面也能看到RNN和CNN的身影
* 论文的构思感觉也是非常的清晰, 从Introduction-预备知识的介绍-模型-实验-相关工作-结论,感觉非常的完整
* 实验部分做的非常充分, 依然是先提出了三个问题,然后在这个基础上实验回答,并且给定了影响xdeepFM的几个重要超参数,并进行实验调参,确定了合理的值。
* 相关工作部分从大层面梳理了之前的模型。
* 链接:[AI上推荐 之 xDeepFM模型(显隐性高阶特征交互的组合策略)](https://blog.csdn.net/wuzhongqiang/article/details/116379857)
## 18. YouTubeDNN
* 简介:2016年YouTube工程师写的工业界的一篇经典好文
* 内容: 从一个宏观的层面讲述了推荐系统架构, 介绍了召回模型和精排模型, 并且基于业务场景介绍了很多工程性的经验
* 借鉴:这篇paper里面,主要是一些经验点, 非常重要, 这个具体总结到了博客里面
* 链接: [AI上推荐 之 YouTubeDNN模型(工业界推荐系统的灯火阑珊)]([AI上推荐 之 YouTubeDNN模型(工业界推荐系统的灯火阑珊)_Miracle8070-CSDN博客](https://blog.csdn.net/wuzhongqiang/article/details/122671511?spm=1001.2014.3001.5501))
# 模型复现
大部分模型复现和详细的解释可以参考这个GitHub项目:[https://github.com/zhongqiangwu960812/AI-RecommenderSystem](https://github.com/zhongqiangwu960812/AI-RecommenderSystem)
点赞
回复
X