Deep&Wide、DeepFm的原理

关键词:记忆、泛化、交叉特征、因子分解机FM、推荐系统、联合模型、精排

一般这2个模型用于推荐系统中,推荐系统分为两种: CF-Based(协同过滤)、Content-Based(基于内容的推荐)。协同过滤(collaborative filtering)就是指基于用户的推荐,用户A和B比较相似,那么A喜欢的B也可能喜欢,基于内容推荐是指物品item1和item2比较相似,那么喜欢item1的用户多半也喜欢item2。

Deep&Wide:浅层、深层模型的联合:

Deep&Wide、DeepFm的原理_第1张图片

Deep:负责模型的泛化能力,即推荐效果的扩展性,使用Factorization Machines或Deep Neural Network,对特征进行embedding处理,这样对未出现过的query-item feature pairs也能有较好的效果。通过对低纬度的dense embedding进行组合可以学习到更深层次的隐藏特征。但缺点是有点over-generalize(过度泛化)。推荐系统中表现为:会给用户推荐不是那么相关的物品,尤其是user-item矩阵比较稀疏并且是high-rank(高秩矩阵)。

Wide:负责模型的记忆能力,即准确性,一般是线性模型,处理一些非常稀疏的矩阵(用户的一些小众偏好,一般处理成one-hot),使用cross-product transformations对特征进行处理,即人工处理的交叉特征。

cross-product transformations:交叉转换,是在输入样本X中的特征gender=female和特征language=en同时为1,新的组合特征AND(gender=female, language=en)才为1。所以只要把两个特征的值相乘就可以了。

线性模型无法学习到训练集中未出现的组合特征,FM或DNN通过学习embedding vector虽然可以学习到训练集中未出现的组合特征,但是会过度泛化,所以二者联合训练,可以解决以上问题。

FM:因子分解机(Factorization Machines,FM),可以通过点积和隐向量的形式学习交叉特

征。由于复杂度的约束,FM通常只有二阶交叉特征。

二阶交叉特征的多项式模型为:

Deep&Wide、DeepFm的原理_第2张图片

其中W2是交叉特征的参数,假设有n个特征,则交叉特征的参数有\frac{n(n+1)}{2},当特征维度较高时,训练时可能很多交叉特征都没有对应的样本进行学习,从而学不到参数。为了降低参数的维度,

Deep&Wide、DeepFm的原理_第3张图片

这样的话可以将参数个数减少到 kn,可以设置较少的k值(一般设置在100以内,k<

Deep&Wide、DeepFm的原理_第4张图片

FFM(Field Factorization Machine)是在FM的基础上引入了“场(Field)”的概念而形成的新模型。在FM中计算特征 与其他特征的交叉影响时,使用的都是同一个隐向量Vi。而FFM将特征按照事先的规则分为多个场(Field),特征属于某个特定的场。每个特征将被映射为多个隐向量 ,每个隐向量对应一个场。当两个特征 ,组合时,用对方对应的场对应的隐向量做内积:

FFM 由于引入了场,使得每两组特征交叉的隐向量都是独立的,可以取得更好的组合效果, FM 可以看做只有一个场的 FFM。

DeepFm

DeepFM模型是一种可以从原始特征中抽取到各种复杂度特征的端到端模型,没有人工特征工程的困扰。跟W&D很类似,只是Wide端不是LR,而是FM,具有自主学习交叉特征的能力,不需要人工处理(人工处理存在一定的缺点,需要经验,不能自动),且FM、DNN共享特征,保证模型特征的准确与一致。大量实验证明,DeepFM模型的AUC和Logloss都优于目前的最好效果。效率上,DeepFM和目前最优的效果的深度模型相当。

Deep&Wide、DeepFm的原理_第5张图片

可以看到,整个模型大体分为两部分:FM(左边)和DNN(右边)。模型大概的流程如下:

  1. 首先利用FM进行embedding得到Dense Embeddings的输出。
  2. 将Dense Embeddings的结果作为左边FM模块和右边DNN模块的输入。通过一定方式组合后,模型左边FM模块的输出完全模拟出了FM的效果,而右边的DNN模块则学到了比FM模块更加高阶的特征交叉。
  3. 最后将DNN和FM的结果组合后激活输出。

参考资料:

  1. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
  2. Deep Learning based Recommender System-A Survey and New Perspectives
  3. FM:原创 | 想做推荐算法?先把FM模型搞懂再说
  4. https://github.com/talentlei/PaperList/blob/master/README.md
  5. https://blog.csdn.net/sinat_37574187/article/details/120132480

你可能感兴趣的:(机器学习原理,神经网络)