组相联映射详细讲解_Sunny.Xia的深度学习(一)DeepFM附代码实战讲解

本专栏的文章会在本知乎专栏和Sunny.Xia的csdn博客同步更新,如有雷同,不用怀疑,肯定是未经作者允许就转载的。

最近在学习深度学习,打算边学习边进行一个整理,就开了深度学习的专栏。该专栏相关的文章会在本博客和知乎专栏进行同步更新,第一篇就从DeepFM开始写起吧。

一、FM是什么?

在学习ML的时候,肯定会遇到过逻辑回归。逻辑回归作为一个基础模型,基本可以拿来即用,方便简单。然而其缺陷也很明显,表达能力不强、无法进行特征交叉。后续提出的POLY2模型,对所有特征进行了两两交叉组合。然而其也存在较大的缺陷。对稀疏的数据,模型性能就不是很好;而且由于两两交叉,权重的参数由n直接上升到了n^2,增加了训练数据量。

为了解决POLY2这类模型的缺陷,FM被提了出来。FM(Factorization Machine)模型主要是为了解决在数据稀疏的情况下,特征组合的问题。在广告算法领域,较长用的就是用其进行CTR预估。已知用户特征、广告特征、上下文特征的情况下,去预测用户点击该广告的概率。

(以上内容参考自《深度学习推荐系统》——王喆 著)

FM的模型表达式如下:

0308f993af9623650ffc7048628c9de4.png
FM模型表达式

FM的公式求解,可以参考该链接:DeepFM从推导到实现。讲的很详细,过程就不再赘述。网上大部分DeepFM代码,其FM二阶计算部分,都是根据求解后的公式来实现的。这里先贴一张FM公式推导图,后面分析代码的时候会提到。

56617b1ae3eda5b2d0d3a5c1fe67c2da.png
FM二阶公式推导

二、Wide&Deep

在讲解DeepFM前,我们先了解Wide&Deep。

90c164e4043e47b78a0bfd76f2525a0f.png
wide and deep网络结构

从结构图就可以很明显的看到,wide&deep分为两部分:左边是单输入层的线性模型,即wide部分;右边是由embedding层和多隐层组成的深度模型,即deep部分。最终这两部分一起作为输出层的输入。

三、DeepFM

6b7d05bd5974fc17f28a5c10f45d4b18.png
DeepFM网络结构

DeepFM在Wide&Deep模型的基础上,用FM替代了原来的wide部分,如上图所示。FM与deep部分共享相同的embedding层,其主要对不同特征域的embedding层实现两两交叉。这里不得不说FM部分的巧妙,将embedding向量当做原FM中的特征隐向量,后续会在代码讲解中详细介绍这一部分。

DeepFM部分就不再赘述,详细的可以戳推荐系统遇上深度学习(三)--DeepFM模型理论和实践。下面重点介绍代码部分。

四、实战演练

本文代码地址:https://github.com/ruozhichen/deep_learning (

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值