http://www.fabwrite.com/deepfm

文章DeepFM: A Factorization-Machine based Neural Network for CTR Prediction介绍了一种深度学习模型,以实现点击率预估。用 tensorflow 试着写了 DeepFM,见https://github.com/zgw21cn/DeepFM

1. FNN、PNN、wide&deep等此前几种深度模型

见下图。 (1) FNN,见图左边。用 FM 预训练embedding layer,然后DNN训练。作者认为有两点局限:embedding layer 的参数会受到 FM 的影响;预训练计算量大,效率问题。同时 FNN仅能捕捉高阶特征,相比之下,DeepFM 无需预训练,且能捕捉高阶和低阶特征。

(2) PNN,见图中间。为了捕捉高阶特征间的组合作用,PNN在 embedding layer 和首层 hidden layer 间引入了 product layer。根据 product 类型的不同,有多种类型的 product layer。product 类型有内积、外积、内积和外积的混合。

PNN的局限在于,外积由于是近似计算会丢失信息而比内积不可靠;内积更可靠,但是仍会计算量大。类似于 FNN,PNN忽略了低阶特征。

(3) Wide&Deep,见图右边。Google 提出的 Wide&Deep可以同时刻画低阶和高阶特征,但是在wide 部分仍需要做人工特征工程。

对比表格如下。

2. DeepFM

(1) DeepFM 类似于Wide&Deep模型的结构,由 FM 和 DNN 两部分组成。FM描述低阶特征,而 DNN 描述高阶特征。不同于 Wide&Deep,DeepFM 无需特征工程。

(2) 不同于 Wide&Deep,DeepFM 共享相同的输入和 embedding 向量,训练更高效。Wide&Deep 模型中的 Wide 需要人工设计交互特征。

结构如下图。

设DeepFM 的输入为{x,y}{x,y},这里xx包括category 特征及 continuous 特征。category 特征已经过 one-hot 编码,所以xx 是高阶且稀疏的。

DeepFM 包括 FM和 DNN两部分,最终输出也由这两部分联合训练。 math \hat{y}=sigmoid(y_{FM}+y_{DNN})

(1) FM 部分

FM 部分的输出如下。

yFM=⟨w,x⟩+d∑j1=1d∑j2=j1+1⟨Vi,Vj⟩xj1⋅xj2yFM=⟨w,x⟩+∑j1=1d∑j2=j1+1d⟨Vi,Vj⟩xj1⋅xj2

(2) DNN 部分

DNN 部分主要是为了刻画高维特征。由于 CTR预估的输入是高维稀疏、category 和 continuous 混合的向量,在输入给第一层隐藏层前,需要增加一个 embedding层,以将上述向量压缩为低维、稠密的实向量。

这里 的DNN模型有两个特点:(1) 不同长度的输入向量,其在隐藏层的长度是相同的。(2) FM 中的隐藏向量VV,现在作为将 one-hot 编码后的输入向量到embedding层的权重。

如下图。

这里假设a(0)=(e1,e2,...em)a(0)=(e1,e2,...em)表示 embedding层的输出,那么a(0)a(0) 作为下一层 DNN隐藏层的输入,其前馈过程如下。 math a^{(l+1)}= \sigma (W^{(l)}a^{(l)}+b^{(l)})

用 tensorflow实现DeepFM的更多相关文章

  1. DeepFM——tensorflow代码改编

    本人代码库: https://github.com/beathahahaha/tensorflow-DeepFM-master-original DeepFM原作者代码库: https://githu ...

  2. DeepFM算法解析及Python实现

    1. DeepFM算法的提出 由于DeepFM算法有效的结合了因子分解机与神经网络在特征学习中的优点:同时提取到低阶组合特征与高阶组合特征,所以越来越被广泛使用. 在DeepFM中,FM算法负责对一阶 ...

  3. 基于TensorFlow Serving的深度学习在线预估

    一.前言 随着深度学习在图像.语言.广告点击率预估等各个领域不断发展,很多团队开始探索深度学习技术在业务层面的实践与应用.而在广告CTR预估方面,新模型也是层出不穷: Wide and Deep[1] ...

  4. tfserving 调用deepfm 并预测 java 【参考】

    https://blog.csdn.net/luoyexuge/article/details/79941565?utm_source=blogxgwz8 首先是libsvm格式数据生成java代码, ...

  5. deepfm代码参考

    https://github.com/lambdaji/tf_repos/blob/master/deep_ctr/Model_pipeline/DeepFM.py https://www.cnblo ...

  6. 推荐算法之: DeepFM及使用DeepCTR测试

    算法介绍 左边deep network,右边FM,所以叫deepFM 包含两个部分: Part1: FM(Factorization machines),因子分解机部分 在传统的一阶线性回归之上,加了 ...

  7. deepFM(原理和pytorch理解)

    参考(推荐):https://blog.csdn.net/w55100/article/details/90295932 要点: 其中的计算优化值得注意 K代表隐向量维数 n可以代表离散值one-ho ...

  8. Tensorflow 官方版教程中文版

    2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,同日,极客学院组织在线TensorFlow中文文档翻译.一个月后,30章文档全部翻译校对完成,上线并提供电子书下载,该 ...

  9. tensorflow学习笔记二:入门基础

    TensorFlow用张量这种数据结构来表示所有的数据.用一阶张量来表示向量,如:v = [1.2, 2.3, 3.5] ,如二阶张量表示矩阵,如:m = [[1, 2, 3], [4, 5, 6], ...

随机推荐

  1. 2n的 位数

    len=())+,(2n−1同样适用)

  2. LeetCode 234. 回文链表

    class Solution { public: bool isPalindrome(ListNode* head) { deque<int> d1, d2; ListNode* p = ...

  3. MLR:利用多元线性回归法,从大量数据中提取五个因变量来预测一个自变量—Jason niu

    from numpy import genfromtxt from sklearn import linear_model datapath=r"Delivery_Dummy.csv&quo ...

  4. 在VS2017(VC15)上配置opencv4.0.1环境

    在VS2017(VC15)上配置opencv4.0.1环境   转 https://blog.csdn.net/GoldenBullet/article/details/86016921 作为萌新最初 ...

  5. HDU 4370 0 or 1 (01规划)【Dijkstra】||【spfa】

    <题目链接> 题目大意: 一个n*n的01矩阵,满足以下条件 1.X12+X13+...X1n=12.X1n+X2n+...Xn-1n=13.for each i (1<i<n ...

  6. 在web项目中搭建一个spring mvc + spring + mybatis的环境

    介绍:本文中示范搭建一个ssm环境的框架:使用流程就是客户端通过http请求访问指定的接口,然后由服务器接受到请求处理完成后将结果返回. 本项目请求流程细节介绍:由客户端请求到指定的接口,这个接口是个 ...

  7. DevOps: CLM, RLM, RPM, RPD, BSA, BAA, BMA - WOW!

    1. BMC Release Lifecycle Management (RLM) is our suite targeted at managing and automating applicati ...

  8. RCNN系列超详细解析

    一.基于Region Proposal(候选区域)的深度学习目标检测算法 Region Proposal(候选区域),就是预先找出图中目标可能出现的位置,通过利用图像中的纹理.边缘.颜色等信息,保证在 ...

  9. [CF1131F] Asya And Kittens

    Description: 给定n个点的序列,一开始有n个块,每次将两个块合并,并告诉你这两个块中的一对元素,求一种可能的原序列 Hint: \(n \le 1.5*10^5\) Solution: 实 ...

  10. linux公社

    linux公社网址:http://www.linuxidc.com/ 资料下载地址:http://linux.linuxidc.com/