WideDeep模型介绍

文章目录

  • 1. Wide&Deep模型的记忆能力和泛化能力
  • 2. Wide&Deep模型的结构
  • 3. Wide&Deep模型的进化——Deep&Cross模型
  • 4. Wide&Deep模型的影响力

Wide&Deep模型是 记忆能力泛化能力的综合,是谷歌在2016年提出的。正如其名,Wide&Deep模型是由 单层的Wide部分多层的Deep部分组成的混合模型。

  • 其中,Wide部分的主要作用是让模型具有较强的“记忆能力”(memorization);
  • Deep部分的主要作用是让模型具有“泛化能力”(generalization)。

这样的结构特点,使模型兼具了逻辑回归深度神经网络的优点——能够快速处理并记忆大量历史行为特征,并且具有强大的表达能力。

1. Wide&Deep模型的记忆能力和泛化能力

  • “记忆能力”可以被理解为模型直接学习并利用历史数据中物品或者特征的“共现频率”的能力

一般来说,协同过滤、逻辑回归等简单模型具有较强的“记忆能力”。由于这类模型的结构简单,原始数据往往可以直接影响推荐结果,产生类似于“如果点击过A,就推荐B”这类规则式的推荐,这就相当于模型直接记住了历史数据的分布特点,并利用这些记忆进行推荐。

这里以App推荐的场景为例,解释什么是模型的“记忆能力”:

假设在Google Play推荐模型的训练过程中,设置如下组合特征:AND(user_installed_app=netflix, impression_app=pandora)(简称netflix&pandora),它代表用户已经安装了netflix这款应用,而且曾在应用商店中看到过pandora这款应用。如果以“最终是否安装pandora”为数据标签(label),则可以轻而易举地统计处netflix&pandora这个特征和安装pandora这个标签之间的共现频率。假设二者的攻陷频率高达10%(全局的平均应用安装率为1%),这个特征如此志强,以至于在设计模型时,希望模型一发现有这个特征,就推荐pandora这款应用(就像个深刻的记忆点印在脑海里),这就是所谓的模型的“记忆能力”。

像逻辑回归这类简单模型,如果发现这样的“强特征”,则其相应的权重就会在模型训练过程中被调整得非常大,这样就实现了对这个特征的直接记忆。相反,对于多层神经网络来说,特征会被多层处理,不断与其他特征进行交叉,因此模型对这个特征的记忆反而没有简单模型深刻。

  • “泛化能力”可以理解为模型传递特征的相关性,以及发掘系数甚至从未出现过的稀有特征与最终标签相关性的能力

矩阵分解比协同过滤的泛化能力强,因为矩阵分解引入了隐向量这样的结构,使得数据稀少的用户或者物品也能生成隐向量,从而获得有数据支撑的推荐得分,这就是非常典型的将全局数据传递到稀疏物品上,从而提高泛化能力的例子。再比如,深度神经网络通过特征的多次自动组合,可以深度发掘数据中潜在的模式,即使是非常稀疏的特征向量输入,也能得到比较平稳的推荐概率,这就是简单模型所缺乏的“泛化能力”。

2. Wide&Deep模型的结构

Wide&Deep模型的直接动机就是将简单模型的“记忆能力”和深度神经网络的“泛化能力”融合,具体的模型结构如下:

在这里插入图片描述

Wide&Deep模型把单输入层的Wide部分与Embedding层和多隐层组成的Deep部分连接起来,一起输入最终的输出层。

  • 单层的Wide部分善于处理大量系数的id类特征;
  • Deep部分利用神经网络表达能力强的特点,进行深层的特征交叉,挖掘在特征背后的数据模式。

最终,利用逻辑回归模型,输出层将Wide部分和Deep部分组合起来,形成统一的模型。

在具体的特征工程和输入层设计中,展现了Google Play的推荐团队对业务场景的深刻理解。从下图中可以详细地了解到Wide&Deep模型到底将哪些特征作为Deep部分的输入,将哪些特征作为Wide部分的输入:

在这里插入图片描述

Deep部分的输入是全量的特征向量,包括用户年龄(Age)、已安装应用数量(#App Installs)、设备类型(Device Class)、已安装应用(User Installed App)、曝光应用(Impression App)等特征。已安装应用、曝光引用等类别型特征,需要经过Embedding层输入连接层(Concatenated Embedding),拼接成1200维的Embedding向量,再经过3层ReLU全连接层,最终输入LogLoss输出层。

Wide部分的输入仅仅是已安装应用和曝光应用两类特征,其中已安装引用代表用户的历史行为,而曝光应用代表当前的待推荐应用。选择这两类特征的原因是充分发挥Wide部分“记忆能力”强的优势。

Wide部分组合“已安装应用”和“曝光应用”两个特征的函数被称为交叉积变换(Cross Product Transformation)函数,其形式化定义如下:

在这里插入图片描述

  • Cki是一个布尔变量,当第i个特征输入第k个组合特征时,Cki的值就为1,否则为0;

  • xi是第i个特征的值。例如对于“AND(user_installed_app=netflix,impression_app=pandora)”这个特征组合来说,只有当“user_installed_app=netflix”和“impression_app=pandora”这两个特征同时为1时,其对应的交叉积变换层的结果才为1,否则为0.

在通过交叉积变换层操作完成特征组合之后,Wide部分将组合特征输入最终的LogLoss输出层,与Deep部分的输出一同参与最后的目标拟合,完成Wide与Deep部分的融合。

3. Wide&Deep模型的进化——Deep&Cross模型

Deep&Cross模型(DCN)结构图如下:

在这里插入图片描述

其主要思路是使用Cross网络替代原来的Wide部分。Deep部分的设计思路并没有本质的改变,下面主要介绍Cross部分的设计思路。

设计Cross网络的目的是增加特征之间的交互力度,使用多层交叉层(Cross layer)对输入向量进行特征交叉。假设第l层交叉层的输出向量为xl,那么l+1层的输出向量形式为:

在这里插入图片描述

交叉层的操作如图:

在这里插入图片描述

可以看出,交叉层在增加参数方面是比较“克制”的,每一层仅增加一个n维的权重向量wl(n维输入向量维度),并且在每一层均保留了输入向量,因此输出与输入之间的变化不会特别明显。由多层交叉层组成的Cross网络在Wide&Deep模型中的Wide部分的基础上进行了特征的自动化交叉,避免了更多基于业务理解的人工智能特征组合。同Wide&Deep模型一样,Deep&Cross模型的Deep部分相比Cross部分表达能力更强,使模型具备更强的非线性学习能力。

4. Wide&Deep模型的影响力

Wide&Deep模型的影响力无疑是巨大的,不仅其本身成功引用于多家一线互联网公司,而且其后续的改进创新工作也延续至今。事实上,DeepFM、NFM等模型都可以看成Wide&Deep模型的延伸。

Wide&Deep模型能够取得成功的关键在于:

(1)抓住了业务问题的本质特征,能够融合传统模型记忆能力和深度学习模型泛化能力的优势。

(2)模型的结构并不复杂,比较容易在工程上实现、训练和上线,这加速了其在业界的推广应用。

也正是从Wide&Deep模型之后,越来越多的模型结构被加入推荐系统中,深度学习模型的结构开始朝着多样化、复杂化的方向发展。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode 对模型train、detect脚本进行Debug时配置参数

我们训练yolov5代码时,一般会配置一些参数,比如模型权重文件--weights, 模型的配置文件--cfg, 以及训练的数据--data, 对应的训练脚本为: 训练train python train.py -- weights ./yolov5s.pt --cfg models\yolov5s.yaml --data ./data/coco128.yaml…

乐理-笔记

乐理笔记整理 1、前言2、认识钢琴键盘及音名3、升降号、还原号4、如何区分同一音名的不同键?5、各类音符时值的关系6、歌曲拍号7、拍号的强弱规律8、歌曲速度(BPM)9、附点音符10、三连音12、唱名与简谱数字13、自然大调(白键&…

C#关于WebService中File.Exists()处理远程路径的异常记录

目录 前言方案一打开网站对应的程序池的高级设置按下图步骤设置凭据重启网站若方案一未能解决,请继续尝试方案二👇 方案二从控制面板进入到 凭据管理器为windows凭据添加凭据点击**Windows凭据**,并点击**添加Windows凭据**键入远程路径的地址…

人工智能轨道交通行业周刊-第58期(2023.8.28-9.3)

本期关键词:成都智慧工厂、机务段、站台地标、备案大模型、AIGC报告 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道世界铁路…

elasticsearch8.9.1集群搭建

目录 1.官网文档 2.安装步骤 2.1 环境准备 2.2 添加用户 2.3 修改文件profile文件 2.4 修改elasticsearch.yml 2.5 修改 sysctl.conf 3.启动 3.1 切换到kibana 3.2 启动elasticsearch 3.3 启动kibana 3.4 验证节点情况 1.官网文档 elasticsearch文档:ht…

怎样来实现流量削峰方案

削峰从本质上来说就是更多地延缓用户请求,以及层层过滤用户的访问需求,遵从“最后落地到数据库的请求数要尽量少”的原则。 1.消息队列解决削峰 要对流量进行削峰,最容易想到的解决方案就是用消息队列来缓冲瞬时流量,把同步的直…

TDesign表单rules通过函数 实现复杂逻辑验证输入内容

Element ui 中 我们可以通过validator 绑定函数来验证一些不在表单model中的值 又或者处理一下比较复杂的判断逻辑 TDesign也有validator 但比较直观的说 没有Element那么好用 这里 我们给validator绑定了我们自己的checkAge函数 这个函数中 只有一个参数 value 而且 如果你的…

Linux Input子系统

一、基本概念 按键、鼠标、键盘、触摸屏等都属于输入(input)设备,Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。本质属于字符设备。 1. input子系统结构如下: input 子系统分为 input 驱动层、input 核心层、input 事件处理层&…

分布式集群——搭建Hadoop环境以及相关的Hadoop介绍

系列文章目录 分布式集群——jdk配置与zookeeper环境搭建 分布式集群——搭建Hadoop环境以及相关的Hadoop介绍 文章目录 前言 一 hadoop的相关概念 1.1 Hadoop概念 补充:块的存储 1.2 HDFS是什么 1.3 三种节点的功能 I、NameNode节点 II、fsimage与edits…

无涯教程-JavaScript - PERCENTILE函数

PERCENTILE函数替代Excel 2010中的PERCENTILE.INC函数。 描述 该函数返回范围中值的第k个百分位数。您可以使用此功能建立接受阈值。 语法 PERCENTILE (array,k)争论 Argument描述Required/OptionalArrayThe array or range of data that defines relative standing.Requi…

PHP8内置函数中的数学函数-PHP8知识详解

php8中提供了大量的内置函数,以便程序员直接使用常见的内置函数包括数学函数、变量函数、字符串函数、时间和日期函数等。今天介绍内置函数中的数学函数。 本文讲到了数学函数中的随机数函数rand()、舍去法取整函数floor()、向上取整函数 ceil()、对浮点数进行四舍…

SQL知识点合集(最新)

SQL执行顺序 left join on and 和 inner join on and的多条件查询区别 left join on后面的and条件判断字段必须是左表 inner join on后面的and条件判断字段可以是左表或者右表 -- 查询一个课程包含那些题 SELECT c.id,t.title,t.id from course c left JOIN topical t ON t.cou…