machine-learning-notes
  • 封面
  • 目录
  • 前言
  • 个人前言
  • 机器学习前言
    • 什么是机器学习和模式识别
    • 机器学习的应用
    • 机器学习的流程
    • 不同的机器学习算法对相同数据预测效果不同
    • 快速入门机器学习
    • 机器学习需要参考哪些书
    • 机器学习的学习路径
    • 深度学习的学习路径
    • 互联网机器学习特定岗位所需技能
  • 机器学习面试
  • 数学基础
  • 微积分
    • 泰勒展开
    • e的直观认识
    • 傅里叶变换
    • 希尔伯特空间
  • 线性代数
    • 范数
    • 矩阵求导
    • 特征值
    • 奇异值分解
  • 概率与信息论
    • 综述概率论基本定义
    • 概率论与贝叶斯先验
    • 正态分布
    • 贝叶斯概率
    • 概率符号说明
    • 共轭先验
    • 信息论
  • 数值计算与优化
    • 最小二乘法
    • 等式约束的拉格朗日乘子法
    • 凸优化
      • 凸集和凸函数
      • 凸优化问题
  • 梯度下降算法
    • 随机梯度下降SGD
    • 动量法Momentum
    • 牛顿动量Nesterov
    • AdaGrad
    • RMSprop
    • Adadelta
    • Adam
    • Nadam
    • AMSGrad
    • AdasMax
  • 概率图模型
    • 概率图模型概论
    • 概率图简介
  • 编程基础
  • linux
    • linux常用命令
    • shell
      • 输入输出重定向
  • python
    • python简介
    • python语法
      • 基础语法
      • 数据结构
      • 过程控制
      • 函数
      • 类和对象
      • 文件操作
      • 正则表达式
    • python库
      • numpy
      • pandas
      • scipy
      • matplotlib
      • scikit-learn
    • python应用
      • 排序算法
  • 数据结构与算法
    • 数据结构
    • 算法思想
      • 排序
        • 堆排序
        • 归并排序
        • 快速排序
      • 递归
    • 剑指offer
      • 链表
      • 二叉树
      • 数组
      • 字符串
      • 栈和队列
      • 递归
      • 动态规划
      • 其他
    • leetcode
    • 编程语言
      • c++
  • Hadoop
    • Hadoop简介
    • MapReduce
  • Hive
  • Spark
  • TensorFlow
    • TensorFlow1.0
      • TensorFlow基础
      • TensorFlow基础概念解析
      • TensorFlow机器学习基础
      • Tensorflow分布式架构
    • TensorFlow2.0
  • PyTorch
  • 机器学习
  • 机器学习概论
  • 特征工程
  • 感知机
  • k近邻
  • 朴素贝叶斯
  • 线性模型
    • 最大熵模型
    • 指数族分布与广义线性模型
    • 线性回归
      • Ridge回归(岭回归)
      • Lasso回归
    • Logistic回归-对数几率回归
  • 决策树
  • 支持向量机
    • 线性可分支持向量机与硬间隔最大化
    • 线性支持向量机与软间隔最大化
    • 非线性支持向量机与核函数
    • 序列最小最优化算法SMO
    • SVM总结
  • 集成学习
    • Bagging
      • 随机森林
    • Boosting
      • AdaBoost
      • GradientBoosting
        • GBDT
        • XGBoost
          • XGBoost理论
          • XGBoost实践
    • Stacking
  • 降维
    • PCA主成分分析
    • 流形学习
  • EM算法
  • HMM隐马尔科夫模型
  • CRF条件随机场
  • 聚类
    • k均值聚类
    • 高斯混合模型
  • 主题模型
    • LDA隐狄利克雷分布
  • 知识点
    • 损失函数
    • 负采样
  • 机器学习算法总结
  • 深度学习
  • 深度学习概论
  • ANN人工神经网络
  • 知识点
    • Batch Normalization
  • CNN卷积神经网络
  • 深度学习优化算法
  • RNN循环神经网络
  • LSTM长短期记忆网络
  • GRU门控循环单元
  • GNN图神经网络
    • GNN图神经网络综述
    • GCN图卷积网络
      • GCN图卷积网络初步理解
      • GCN图卷积网络的numpy简单实现
      • GCN图卷积网络本质理解
      • GCN图卷积网络全面理解
      • SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS ICLR2017
  • 神经网络架构搜索
    • Weight-Agnostic-Neural-Networks Google2019
  • 强化学习
  • 强化学习概论
  • 马尔科夫决策过程
  • 动态规划
  • 无模型方法一:蒙特卡洛
  • 无模型方法二:时间差分
  • 无模型方法三:多步自举
  • 函数近似和深度网络
  • 策略梯度算法
  • 深度强化学习
  • 基于模型的强化学习
  • 强化学习前景
  • 自然语言处理
  • 自然语言处理概论
  • 自然语言
  • 语言模型和中文分词
  • word2vec
    • word2vec概述
    • word2vec算法原理
    • word2vec源码分析
    • word2vec实践
  • Seq2Seq模型和Attention机制
  • Self-Attention和Transformer
  • 知识图谱
  • 推荐系统
  • 推荐系统概论
  • 基础知识
  • 进阶知识
    • 机器学习
      • Factorization Machines ICDM2010
    • embedding
      • Network Embedding
        • LINE: Large-scale Information Network Embedding
    • 深度学习
      • DeepFM: A Factorization-Machine based Neural Network for CTR Prediction 2017
      • DSSM: Learning Deep Structured Semantic Models for Web Search using Clickthrough Data CIKM2013
    • 图卷积网络
      • Graph Convolutional Neural Networks for Web-Scale Recommender Systems KDD2018
    • 强化学习
      • DRN基于深度强化学习的新闻推荐模型
  • 业界应用
    • YouTube
      • Deep Neural Networks for YouTube Recommendations RecSys2016
    • Alibaba
      • Learning Tree-based Deep Model for Recommender Systems KDD2018
      • Deep Interest Network for Click-Through Rate Prediction KDD2018
      • DSIN:Deep Session Interest Network for Click-Through Rate Prediction IJCAI2019
Powered by GitBook
On this page
  • DeepFM
  • DeepFM架构
  • DeepFM原理
  • FM部分
  • Deep部分
  • 特征的Embedding层
  • 基于双塔架构的DeepFM用于召回
  • 参考资料

Was this helpful?

  1. 进阶知识
  2. 深度学习

DeepFM: A Factorization-Machine based Neural Network for CTR Prediction 2017

Previous深度学习NextDSSM: Learning Deep Structured Semantic Models for Web Search using Clickthrough Data CIKM2013

Last updated 5 years ago

Was this helpful?

DeepFM

PDF:

类似于Wide&Deep,华为诺亚方舟实验室提出了DeepFM模型,它的特点是:

  • 不需要预训练,直接端到端训练

  • 同时学习低阶和高阶的特征交叉

  • Wide部分和Deep部分共享特征的Embedding

DeepFM架构

显然,Wide侧是FM,Deep侧就是一个多层神经网络。而且Wide侧和Deep侧共享了底层的特征Embedding。

DeepFM同时考虑了低阶(FM)和高阶(Deep)特征交叉,和单独各自作为模型相比,这样做会带来额外的收益。

Wide侧采用FM避免了特征工程,因为它能自动进行特征交叉。

DeepFM原理

设训练数据为n个(x,y)(x,y)(x,y)样本,其中,x=[xfield1,xfield2,...xfieldj,...,xfieldm]x=[x_{field_1}, x_{field_2}, ... x_{field_j}, ... , x_{field_m}]x=[xfield1​​,xfield2​​,...xfieldj​​,...,xfieldm​​],y∈0,1y\in {0, 1}y∈0,1。

CTR预测模型为y^=CTR_model(x)\hat{y}=CTR\_model(x)y^​=CTR_model(x)。

就和FM一样,对于每一个特征,都会有一个一阶权值wiw_iwi​和一个二阶特征交叉的隐向量(Embedding)ViV_iVi​,而且ViV_iVi​还会被Deep模型共享用来进行高阶特征交叉。

所有的参数,包括wiw_iwi​,ViV_iVi​,和深度网络参数(W(l), b(l))(W^{(l)},\ b^{(l)})(W(l), b(l)),会按照如下的模型进行训练:

y^=sigmoid(yFM+yDNN)\hat{y}=sigmoid(y_{FM}+y_{DNN})y^​=sigmoid(yFM​+yDNN​)

其中,yFMy_{FM}yFM​为FM部分的输出值,yDNNy_{DNN}yDNN​为Deep部分的输出值。

FM部分

模型为:

yFM=w0+∑i=1dwixi+∑j1=1d∑j2=j1+1d<Vi,Vj>xj1⋅xj2y_{FM}=w_0+\sum_{i=1}^dw_ix_i+\sum_{j_1=1}^d\sum_{j_2=j_1+1}^d<V_i,V_j>x_{j_1}\cdot x_{j_2}yFM​=w0​+i=1∑d​wi​xi​+j1​=1∑d​j2​=j1​+1∑d​<Vi​,Vj​>xj1​​⋅xj2​​

Deep部分

Deep部分就是一个简单的前馈神经网络,用于高阶特征交叉。

特征的Embedding层

FM部分和Deep部分共享了特征的Embedding层,该层具体结构如下:

特征的Embedding其实就是OneHot对应的神经网络权重,这一点和Word2Vec一样。

基于双塔架构的DeepFM用于召回

DeepFM的结构只适合用于排序,那怎么用于召回呢?

其实,我们联想到FM用于召回的方法,即分别将User和Item各自所有特征的Embedding相加,得到表征User和Item的两个向量,即

VecU=∑i=1nVecUiVecI=∑i=1nVecIi\begin{aligned} \text{Vec}_U&=\sum_{i=1}^nVec_{U_i}\\ \text{Vec}_I&=\sum_{i=1}^nVec_{I_i} \end{aligned}VecU​VecI​​=i=1∑n​VecUi​​=i=1∑n​VecIi​​​

则FM的预测值为

yFM=∑i=1nVecUi⋅∑i=1nVecIi=VecU⋅VecIy_{FM}=\sum_{i=1}^nVec_{U_i}\cdot \sum_{i=1}^nVec_{I_i}=\text{Vec}_U\cdot \text{Vec}_IyFM​=i=1∑n​VecUi​​⋅i=1∑n​VecIi​​=VecU​⋅VecI​

当然上述只取了FM原始公式中的User和Item的二阶交叉项,是原始FM的一种近似。

然后我们发现,如果把DeepFM中的FM部分改为上述形式,就可以使用双塔架构来构建用于召回的DeepFM了。

为什么要用双塔架构呢,除了这样可以使用Deep外,另一个原因是,其负采样方式特别适合召回。

具体的架构如下所示:

参考资料

===

CTR预估算法之FM, FFM, DeepFM及实践
FFM及DeepFFM模型在推荐系统的探索
翻译:DeepFM:基于因子分解 -机器的CTR预测神经网络
【通俗易懂】手把手带你实现DeepFM!
推荐系统遇上深度学习(三)--DeepFM模型理论和实践
推荐算法——从FM到XDeepFM
[带你撸论文]之Deep FM算法代码级精讲
返回顶层目录
返回上层目录
DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
DeepFM架构
DeepFM原理
FM部分
Deep部分
特征的Embedding层
基于双塔架构的DeepFM用于召回
deepfm
deepfm-architecture
deepfm-fm
deepfm-deep
deepfm-embedding
deepfm-dssm