这篇文章出自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. java学习笔记(1)java的基础介绍 、JDK下载、配置环境变量、运行java程序

    java工程师是开发软件的 什么是软件呢? 计算机包括两部分: 硬件: 鼠标.键盘.显示器.主机箱内部的cpu.内存条.硬盘等 软件: 软件包括:系统软件和应用软件 系统软件:直接和硬件交互的软件:w ...

  2. Pytest权威教程21-API参考-03-夹具(Fixtures)

    目录 夹具(Fixtures) @ pytest.fixture config.cache的 capsys capsysbinary capfd capfdbinary doctest_namespa ...

  3. CF1163F Indecisive Taxi Fee(线段树+图论)

    做法 这里的修改是暂时的 找到一条最短路径\(E\),需要考虑的是将最短路径上的边增大 每个点考虑与\(1/n\)的最短路径在E上前缀/后缀的位置,设\(L_i,R_i\) 考虑每条边\((u,v)\ ...

  4. Gremlin入门

    Gremlin入门 一.Gremlin简介 Gremlin是Apache ThinkerPop框架下的图遍历语言,Gremlin是一种函数式数据流语言,可以使用户使用简洁的方式表述复杂的属性图的遍历或 ...

  5. [面试]快来测测你的C++水平

    在32位编译环境下进行测试. 以下代码运行结果是什么? #include <iostream> using namespace std; class D { public: static ...

  6. Oracle审计表AUD$处理方法

    Oracle版本:11.2.0,其他版本要测试DBMS_AUDIT_MGMT能否成功 1. 查询表,然后truncate select count(*) from aud$; truncate tab ...

  7. GLTF模型查看器---优化器【转】

    https://blog.csdn.net/weixin_43081805/article/details/88743277 Clay Viewer(我只想说好用,直接可以导出gltf的二进制glb格 ...

  8. Spring-AOP @AspectJ切点函数之@annotation()

    @annotation()概述@annotation表示标注了某个注解的所有方法. 下面通过一个实例说明@annotation()的用法. AnnotationTestAspect定义了一个后置切面增 ...

  9. flutter Switch组件 On/off 用于切换一个单一状态

    import 'package:flutter/material.dart'; class SwitchDemo extends StatefulWidget { @override _SwitchD ...

  10. Flutter AspectRatio、Card 卡片组件

    Flutter AspectRatio 组件 AspectRatio 的作用是根据设置调整子元素 child 的宽高比. AspectRatio 首先会在布局限制条件允许的范围内尽可能的扩展,widg ...