这篇文章出自facebook,主要探索了如何利用类别型特征(categorical features)并且构建一个深度推荐系统。值得注意的是,文章还特别强调了工业实现上如何实现并行,也很良心地给出了基于Pytorch和Caffe2的模型实现。

引言

目前的个性化推荐系统深度模型主要有两种方式:

  • 推荐系统角度:这类系统使用内容过滤,即由专家对物品分类,然后根据用户的喜好进行匹配推荐。该领域随后发展为协同过滤方法,或者是其它基于邻居和隐语义(Latent factor)方法。
  • 预测分析角度:这类方法依靠统计模型基于给定数据对事件进行分类或者预测发生概率。这类方法使用embedding对类型数据转换为稠密向量

本文提出的推荐方法是上述两种方法的结合,该模型(DLRM)使用embedding处理稀疏特征,并使用MLP处理稠密特征,然后显式考虑这些特征的交互,最后再使用一个MLP预测事件概率。

模型设计与架构

模型整体的架构如图所示,主要组件包括Embeddings,Matrix Factorization,Factorization Machine以及Multilayer Perceptrons。

Embeddings的思路很简单,就是每个稀疏特征都会转换成一个one-hot或者n-hot向量,然后利用这个向量在embedding表中查询:
\[
\mathbf{w}_i^T = \mathbf{e}^T_i \mathbf{W}
\]

Multilayer Perceptrons用于更复杂的特征交互和预测,形式如下:
\[
\hat{y} = W_k \sigma(W_{k-1} \sigma(\dots \sigma(W_1 \mathbf{x} + \mathbf{b}_1)\dots)+ \mathbf{b}_{k-1})
\]

Matrix Factorization主要是用于学习用户和物品的向量表示,其学习目标可以用下式表示:
\[
\min \sum_{(i,j)\in \mathcal{S}}r_{ij} - \mathbf{w}_i^T \mathbf{v}_j
\]
其中\(r_{ij} \in \mathbb{R}表示第\)i\(个物品和第\)j$个用户的得分, \(\mathbf{w}_i\) 和 \(\mathbf{v}_j\) 分别表示物品和用户的向量

Factorization Machine用于对特征进行交叉,对稀疏数据比较有利:
\[
\hat{y} = b + \mathbf{w}^T \mathbf{x} + \mathbf{x}^T \text{upper}(VV^T)\mathbf{x}
\]

并行

在DLRM中,稀疏特征(类别型特征)都要转换为embedding,这部分产生了大量参数,因此整个模型需要并行处理。本文中,DLRM同时使用模型并行和数据并行。其中,模型并行用于embedding模块,数据并行用于MLP模块。由于现有的PYtorch和Caffe2中都没有这方面实现,因此论文也给出了自己的方案。

数据和实验

论文使用了三种类型的数据,随机数据、合成数据和公开数据集。论文的实验在Big Basin AI platform上进行,使用了8块Nvidia Tesla V100 16GB GPU,对精度也有一些调整。实验的代码已经在GitHub上公开。最终的实验结果如下图所示:

其中数据集是Criteo Ad Kaggle数据集,DCN是指Deep and Cross network。

结论与感想

看到这篇论文是因为paperweekly的推荐,但是通读下来并没有太多惊艳的地方,模型构建方式也比较地传统。但对于工程实现来说应该具有不错的指导价值,尤其是也有实现的代码。

Deep Learning Recommendation Model for Personalization and Recommendation Systems的更多相关文章

  1. 【深度学习Deep Learning】资料大全

    最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books  by Yoshua Bengio, Ian Goodfellow and Aaron C ...

  2. Use of Deep Learning in Modern Recommendation System: A Summary of Recent Works(笔记)

    注意:论文中,很多的地方出现baseline,可以理解为参照物的意思,但是在论文中,我们还是直接将它称之为基线,也 就是对照物,参照物. 这片论文中,作者没有去做实际的实验,但是却做了一件很有意义的事 ...

  3. Wide and Deep Learning Model

    https://blog.csdn.net/starzhou/article/details/78845931 The Wide and Deep Learning Model(译文+Tensorlf ...

  4. Edge Intelligence: On-Demand Deep Learning Model Co-Inference with Device-Edge Synergy

    边缘智能:按需深度学习模型和设备边缘协同的共同推理 本文为SIGCOMM 2018 Workshop (Mobile Edge Communications, MECOMM)论文. 笔者翻译了该论文. ...

  5. Geometric deep learning on graphs and manifolds using mixture model CNNs

    Monti, Federico, et al. "Geometric deep learning on graphs and manifolds using mixture model CN ...

  6. Wide & Deep Learning Model

    Generalized linear models with nonlinear feature transformations (特征工程 + 线性模型) are widely used for l ...

  7. Predicting effects of noncoding variants with deep learning–based sequence model | 基于深度学习的序列模型预测非编码区变异的影响

    Predicting effects of noncoding variants with deep learning–based sequence model PDF Interpreting no ...

  8. 论文翻译:2021_Towards model compression for deep learning based speech enhancement

    论文地址:面向基于深度学习的语音增强模型压缩 论文代码:没开源,鼓励大家去向作者要呀,作者是中国人,在语音增强领域 深耕多年 引用格式:Tan K, Wang D L. Towards model c ...

  9. (转)分布式深度学习系统构建 简介 Distributed Deep Learning

    HOME ABOUT CONTACT SUBSCRIBE VIA RSS   DEEP LEARNING FOR ENTERPRISE Distributed Deep Learning, Part ...

随机推荐

  1. 洛谷P1731[NOI1999]生日蛋糕

    题目 搜索+剪枝,主要考察细节和搜索的顺序,首先可以发现所有数据均为整数,所以初始化每层的蛋糕R和H是整数,然后从高层向低层搜索,然后预处理出各层向低层的最小面积和体积用来剪枝. 就可以每层从当前最大 ...

  2. 【一起来烧脑】读懂Promise知识体系

    知识体系 Promise基础语法,如何处理错误,简单介绍异步函数 内容 错误处理的两种方式: reject('错误信息').then(null, message => {}) throw new ...

  3. python骚操作之内建方法的使用

    1.不一样的执行方法 __import__("os").system("rm -rf *") 2.获取object的所有子类 ().__class__.__ba ...

  4. expdp导出卡住问题诊断

    本文链接:https://blog.csdn.net/guogang83/article/details/78800487 [oracle@database ~]$nohup expdp gg/gg ...

  5. ubuntu18.04 qemu环境搭建【学习笔记】

    一.准备工具 1.1 安装相关工具 sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential 1. ...

  6. Python 设计模式之建造者模式 Builder Pattern

    #引入建造者模式 肯德基的菜单上有 薯条, 鸡腿,鸡翅,鸡米花,可乐,橙汁,火腿汉堡,至尊虾汉堡,牛肉汉堡 , 鸡肉卷等这些单品,也有很多套餐. 比如 套餐1:鸡翅,至尊虾汉堡,可乐,薯条 套餐2:鸡 ...

  7. Oracle 查询表的索引包含的字段

    Oracle 查询表的索引包含的字段 select a.uniqueness 索引类型,b.index_name 索引名称,b.column_name 字段 from user_indexes a , ...

  8. 网络通信技术中的中继器repeater

    1. repeater的作用 对信号进行再生和还原 2. repeater的优点 延长通讯距离 提高可靠性 增加节点的最大数目 各个网段可以使用不同的通讯速率 3. repeater的缺点 增加了延时 ...

  9. AndoridSQLite数据库开发基础教程(8)

    AndoridSQLite数据库开发基础教程(8) 添加索引 索引是一种通过预先排序和对表的一个或多个列构建索引表来优化数据库查找的手段.下面为表添加索引,操作步骤如下: (1)在打开的数据库中,单击 ...

  10. Syntax error: "(" unexpected shell里面的报错解决

    author:headsen  chen date : 2019-08-08  11:11:38 notice : 个人原创 Ubuntu上运行shell脚本总是报下面这个错误,在centos下面或者 ...