【深度学习推荐系统 理论篇】一、Wide Deep Learning for Recommender Systems

news2024/9/21 20:52:21

前言

在搜广推业务做了3年工程,最近终于有空整理下,完整的梳理下自己的知识架构(预计分为理论篇/工程篇)

Wide & Deep论文链接:https://arxiv.org/abs/1606.07792

另外王喆老师《深度学习推荐系统》中,"3.6 Wide&Deep模型——记忆能力和泛化能力的综合”一节中对 Wide & Deep模型有比较详细解释(结合书中对模型的发展的迭代,可以对深度学习有更深层次的了解)

阅读本文后,希望读者可以:

1. 了解Wide & Deep 应用的场景及解决的问题
2. 了解Wide & Deep 具体实现
3. 了解Recommender Systems大致的流程
4. 省去找更多参考资料的时间(搜索资料的过程中,翻到高质量的几篇均附在了参考资料中)

一、论文问题场景

推荐系统(Recommender Systems)本质上给不同的用户提供不同推荐信息(如广告/商品/人物等,论文的场景是GooglePlay中的App推荐),即所谓的“千人千面”(面对不同的用户给出不同的展示信息)。

要做这点,推荐系统 需要有两个输入:用户信息 +App信息,然后将用户信息和App信息进行“一定规则的计算”,将最匹配的app展示给用户。

上述流程中,“一定规则的计算” 是 最复杂/核心的部分(从算法角度讲,要准确高效;从工程的角度讲,要低延时资源占用少,这里仅从算法角度讨论)

我们期待 这个算法能同时拥有以下两种能力:

  • Memorization(记忆) can be loosely defined as learning the frequent co-occurrence of items or features and exploiting the correlation
    available in the historical data.
  • Generalization,(泛化) on the other hand, is based on transitivity of correlation and explores new feature combinations that have never or
    rarely occurred in the past.

简而言之,Memorization 可以提供与用户信息强关联的推荐(如推荐 曾浏览过的某一类别App),Generalization 可以提供给用户更多样性的推荐

二、论文解决方法

在这里插入图片描述
针对Google Play 推荐App的场景,提出了“Wide & Deep” 结构,同时拥有 “Memorization” 和 “Generalization” 两种能力

2.1 Wide部分

Wide部分 是上图中右侧的”Cross Product Transformation(特征交叉)“(文中仅提及了这个交叉特征,应该还有结合其他的特征)
在这里插入图片描述
上面是“Cross Product Transformation”的公式,论文以AND逻辑举了个特征交叉的例子: “AND(gender =female, language=en)”,其中gender和language分别是特征,<gender, language>作为逻辑的输入,仅当值是<female,en>时,输出才为1,其他特征取值均为0)。

个人理解特征交叉,是由于Categorical 特征本身过于稀疏,单一特征表达能力差,需要使用特征交叉的方式进一步提取特征信息(论文中仅举了一个AND例子,在实际的业务场景中,具体交叉行为可以根据特征的业务信息自行实现

2.2 Deep部分

Deep部分使用DNN(上图中是左边简单的3层MLP),这里关注几点:

  • wide侧用于Cross Product Transformation 的特征是人工选择
  • Categorical Features 先转成了 Embedding向量,再Concat到一起 输入到DNN
  • wide & deep 部分的所有特征,都作为了DNN(Deep部分)的输入

2.3 训练

  • Wide部分接了个LR模型,采用了L1 FTRL 算法
  • Deep部分采用AdaGrad优化器

正向传播时,Wide & Deep部分 的输出结果 线性融合 -> sigmod -> probability of click -> Logistic Loss

计算loss函数时,样本的label信息

  • label=1,用户点击了app
  • label=0,用户没有点击app

三、论文结论

论文除了提出Wide & Deep结构,有意思的一点是还展示了工程实现信息,将整个”Recommender System“ 的Pipeline给了出来
在这里插入图片描述

上面的图包含了两个信息:

  1. 一次Query流程中,包含了 召回/排序 两个阶段;候选集大小的变化:All Items -> O(100)-> O(10)
  2. 模型训练流程:User Actions -> Log -> (样本信息) -> Model Training

当然实际的推荐系统链路要复杂的多(如Query流程 还有海选/粗排/精排等阶段,样本数据流链路也相当复杂),不过刚入门的同学看到这个图可以对推荐pipeline有个大概的映像,并以此可以类推到其他场景,如电商商品/广告/社交关系的推荐。

四、参考资料

4.1 部分名词

论文在给出的网络结构中,提到了”Continue Feature“和”Categorical Feature“,
Categorical Feature :离散变量,常用Hash编码(其他常用编码方式参考类别型(categorical feature)变量的处理),一般先转成Embedding后再进入网络
Continue Feature:连续变量, 一般直接作为DNN网络结构的输入

4.2 资料收集

由于Wide & Deep论文过于经典,不少人已经撰文写了相关的内容,学习的时候多有参考,这里一起列下:

  1. 经典精读-Wide & Deep for Google 2016
  2. 石塔西:看Google如何实现Wide & Deep模型(1)
  3. 见微知著,你真的搞懂Google的Wide&Deep模型了吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/675358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装 Nginx 服务

一.安装 Nginx 服务 1.关闭防火墙 开机自启起 安全机制 systemctl stop firewalld systemctl disable firewalld setenforce 0 2、安装依赖包 yum -y install pcre-devel zlib-devel gcc gcc-c make 3、创建运行用户 useradd -M -s /sbin/nologin nginx 4、编译安装 cd …

总结908

学习目标&#xff1a; 月目标&#xff1a;6月&#xff08;线性代数强化9讲&#xff0c;背诵15篇短文&#xff0c;考研核心词过三遍&#xff09; 周目标&#xff1a;线性代数强化3讲&#xff0c;英语背3篇文章并回诵&#xff0c;检测 每日必复习&#xff08;5分钟&#xff09;…

永磁同步直线电机学习笔记——直线电机的数学模型

永磁直线电机数学模型的建立&#xff0c;是进行后续控制仿真和实验的前提。为了实现永磁同步直线电机的矢量控制&#xff0c;需要把永磁同步直线电机假想成永磁同步旋转电机&#xff0c;借鉴旋转电机的电流分析方式&#xff0c;实现dq轴电流控制的解耦&#xff0c;并且把永磁同…

为什么常见电路板GND与外壳GND之间接一个电阻一个电容

集电极开路是指集电极电路中出现了断路的情况&#xff0c;导致电路无法正常工作。在集电极开路的情况下&#xff0c;电路中的电流无法通过集电极流过&#xff0c;导致电路无法正常放大信号或者控制其他器件的工作。 集电极开路的原因有很多&#xff0c;可能是器件本身的故障、…

C++进阶—继承(下)菱形(虚拟)继承分析虚拟继承存储对象模型

目录 0. 前言 1. 普通多继承下&#xff0c;基类和派生类复制转换底层细节(切片) 2. 多继承下的复杂菱形继承 3. 菱形虚拟继承(虚基类)重点 3.1 菱形非虚拟继承对象存储模型 3.2 菱形虚拟继承对象存储模型 3.3 虚拟继承对象存储模型 3.4 多对象继承关系分析其虚基类&…

Redis原理 - 内存策略

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis 本身是一个典型的 key-value 内存存储数据库&#xff0c;因此所有的 key、value 都保存在之前学习过的 Dict 结构中。不过在其 database 结构体中&#xff0c;有两个 Dict &#xff1a;一个用来记录 key-value&#xf…

【计算机网络详解】——软件定义网络SDN(学习笔记)

目录 &#x1f552; 1. 概念&#x1f552; 2. OpenFlow 协议 &#x1f552; 1. 概念 软件定义网络&#xff08;Software Defined Network&#xff0c;SDN&#xff09;的概念最早由斯坦福大学的Nick McKeown教授于2009年提出。SDN最初只是学术界讨论的一种新型网络体系结构。SD…

基于JAVA实现的简易学生信息管理系统(附源码)

一、前言 最近在学习JAVA&#xff0c;这几天跟着网上的视频学完基础知识之后&#xff0c;做了一个学生信息管理系统&#xff0c;写的比较普通&#xff0c;没太大亮点&#xff0c;希望可以给初学者一些参考经验&#xff0c;另外&#xff0c;如有不恰当的地方还请各位指正&am…

论文解读:End-to-End Object Detection with Transformers

发表时间&#xff1a;2020 论文地址&#xff1a;https://arxiv.org/pdf/2005.12872.pdf 项目地址&#xff1a;https://github.com/facebookresearch/detr 提出了一种将对象检测视为集合预测问题的新方法。我们的方法简化了检测流程&#xff0c;有效地消除了许多手工设计的组件…

解决跨域问题的两种方案

说明&#xff1a;跨域是指&#xff0c;在A向B发送请求时&#xff0c;如果A和B的协议、端口号和域名有一个不相同。跨域问题是指&#xff0c;浏览器出于安全&#xff0c;会阻止跨域的异步请求&#xff08;如Ajax&#xff09;&#xff0c;而在分布式的开发环境下&#xff0c;跨域…

ChatGPT在媒体与娱乐领域的沉浸式场景:虚拟主持人和创意助手的新应用探索

第一章&#xff1a;引言 在当今数字化时代&#xff0c;人工智能技术在媒体与娱乐领域的应用日益广泛。ChatGPT作为一种先进的自然语言处理模型&#xff0c;具备强大的对话生成能力和创造力&#xff0c;为媒体与娱乐产业带来了新的创意和可能性。本文将探讨ChatGPT在媒体与娱乐…

学了那么长时间的编程,C语言的各种操作符都搞不懂?点开这里有详细的介绍—>

目录 前言 一、原码、反码、补码的基础概念 1.原码 2.反码 3.补码 二、原码、反码、补码的计算方法 1.原码 2.反码 3.补码 三、算术操作符 四、移位操作符 1. 左移操作符 移位规则&#xff1a; 2. 右移操作符 移位规则&#xff1a; &#xff08;1&#xff09; …

MySQL 中Relay Log打满磁盘问题的排查方案

MySQL 中Relay Log打满磁盘问题的排查方案 引言&#xff1a; MySQL Relay Log&#xff08;中继日志&#xff09;是MySQL复制过程中的一个重要组件&#xff0c;它用于将主数据库的二进制日志事件传递给从数据库。然而&#xff0c;当中继日志不断增长并最终占满磁盘空间时&…

【openGauss数据库审计项配置审计日志维护】--略有小成

【openGauss数据库审计项配置&审计日志维护】--略有小成 &#x1f53b; 一、openGauss数据库审计&#x1f530; 1.1 关于openGauss审计功能&#x1f530; 1.2 openGauss审计功能开启&#x1f530; 1.3 配置具体的审计项 &#x1f53b; 二、查看审计结果&#x1f53b; 三、维…

day13_类中成员之一:构造器

由来 我们发现我们new完对象时&#xff0c;所有成员变量都是默认值&#xff0c;如果我们需要赋别的值&#xff0c;需要挨个为它们再赋值&#xff0c;太麻烦了。我们能不能在new对象时&#xff0c;直接为当前对象的某个或所有成员变量直接赋值呢。可以&#xff0c;Java给我们提…

详解c++---map和set的封装

目录标题 前言红黑树的基本代码map和set的封装红黑树迭代器红黑树迭代器- -begin和end函数代码测试const迭代器方括号的实现 前言 通过之前的学习我们知道set容器中存储的数据是k&#xff0c;map容器中存储的数据是k和v&#xff0c;但是这两个容器底层都是通过红黑树来进行实现…

blfs:为lfs虚拟机增加桌面01

vmware中克隆一份lfs&#xff0c;扩大硬盘分区再操作。 1、硬盘拓展容量&#xff0c;分区挂载到/home&#xff08;已有的大小在后面编译桌面系统会捉襟见肘&#xff09; 使用fdisk进行分区 fdisk /dev/sda 执行p w分区并保存 mkfs -v -t ext4 /dev/sda4 转ext4格式 让/…

uniapp中使用mixins(混入)

mixins 选项接收一个混入对象的数组。这些混入对象可以像正常的实例对象一样包含实例选项&#xff0c;这些选项将会被合并到最终的选项中&#xff0c;使用的是和 Vue.extend() 一样的选项合并逻辑。也就是说&#xff0c;如果你的混入包含一个 created 钩子&#xff0c;而创建组…

如何使用ffmpeg将BDMV(m2ts)转换成MKV、MP4等其他格式的文件

BDMV 是蓝光碟使用的格式。这种格式没有办法使用播放软件播放&#xff0c;必须要用硬盘播放器&#xff0c;也就是专门的设备。但是最经典的 ffmpeg 可以将其转换成其他格式&#xff0c;并且保持相同的码率和清晰度&#xff0c;这样就可以很方便的查看了。 本文使用 macOS 进行…

加速度计的原理与应用

什么是加速度计 加速度计是一种传感器&#xff0c;可以测量物体所受加速的大小和方向。 加速度计的工作原理 传统加速度计利用质量和弹簧的相互作用来感应加速度&#xff0c;当物体收到加速度时&#xff0c;弹簧会发生变形&#xff0c;通过衡量这种变形来测量加速度的大小。 …