推荐系统通过分析用户的历史行为给用户的兴趣建模, 从而主动给用户推荐给能够满足他们兴趣和需求的信息, 能够真正的“懂你” 。
- 与传统的机器学习模型相比, 深度学习模型的表达能力更强, 能够挖掘更多数据中隐藏的模式
- 深度学习模型结构非常灵活, 能够根据业务场景和数据特点, 灵活调整模型结构, 使模型与应用场景完美契合 进入深度学习时代之后, 所谓“万变不离其宗”, 依然会是这两个根本性的思路, 只不过由于深度学习模型强大的学习能力, 有的依然会专走用户和条目表征的思路,有的会专走特征交叉的思路, 还有的“脚踏两只”, 前面整理AutoRec和Deep Crossing模型我们说是在神经网络的复杂度和层数方面进行的进化,而这两个模型也是使用深度学习从用户和条目表征的角度解决推荐问题的方案, 因为它们并没有刻意去研究特征与特征之间的两两或者三三的交互(没有应对特征交叉的能力), 而是用全连接隐层把所有特征进行了统一的交叉学习, 这在很多场景下其实是不太合理的(这样可能会使的即使没有半毛钱关系的特征在这种情况下也会发生点关系,也可能会使几个很亲密的特征也很难擦出点火花),没有什么针对性, 所以使得模型的学习能力受到限制。另外, 虽然感觉Deep Crossing用了embedding, stacking, 残差等, 但是模型的结构还是不够复杂, 这两个模型更注重于研究特征交叉的方式, 当然他们也同时考虑了用户和条目表征的问题。 Neural CF模型是从传统的协同过滤方法(MF)的基础上进行的改进, 把MF里面用户向量和物品向量的点积操作换成了多层的神经网络, 使得两个向量可以做更充分的交叉, 得到更多有价值的特征组合信息, 另外一个就是神经网络的激活函数可以引入更多的非线性, 让模型的表达能力更强。MF的不足,然后引出NeuralCF模型, 介绍通用的NCF框架, 然后介绍其两个实例(GMF和MLP), 然后将他俩组合起来就是最终的模型架构, 最后为了更好地理解工作细节, 用pytorch模型进行复现,然后基于之前用的MovieLens数据集玩一个小实战。 NeuralCF模型有个不足的地方, 就是它只用到了用户向量和物品向量, 可以看成一个MF的加强版, 但是它没有考虑其他的特征信息, 这无疑是一种浪费, 所以Product-based Neural Network(PNN)模型是在加入多组特征的基础上研究的特征交叉, 这个模型和Deep Crossing模型的架构类似, 只不过把Deep Crossing的stacking层换成了Product层, 也就是不同特征的embedding向量不再是简单的堆叠, 而是两两交互, 更有针对性的获取特征之间的交叉信息。 在这里面研究了两两特征之间的内积和外积两种交叉方式, 提出了具体的两种模型IPNN和OPNN。 同样对于该模型, 也是先介绍架构原理, 介绍论文中的一些计算细节,然后就是pytorch复现这个模型基于Criteo数据集玩一个点击率预测。