WideDeep模型介绍

news2025/1/19 23:17:29

文章目录

  • 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.coloradmin.cn/o/966982.html

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

相关文章

java运行程序流程

java运行程序流程 检查JDK环境 java -version 新建Java文件(源文件)Hello.java 打开记事本,输入 public class Hello {public static void main(String[] args) {System.out.println("Hello");} } 保存文件,把文件后缀…

C++极简内存泄露检测工具(34行代码实现)

工具特点 1 极度简单:34行代码实现,线程安全 2 入寝式检测:需要给现有重点怀疑的类添加一行入寝代码 3 只针对类类型:动态数组需要使用更为复杂的技术,不在检测能力范围之内。考虑到大部分C代码都以类实现代码&…

Python零基础超详细教程:字典(Dictionary)相关介绍使用

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! Python字典是另一种可变容器模型, 且可存储任意类型对象,如字符串、数字、元组等其他容器模型。 python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、创建字典 字典由键和对应值…

高数刷题笔记

任取一米奚落>0,存在德尔塔...&#xff0c;0<|x-x0|<德尔塔 不同点是这个不是|x-x0|趋近与哪一个小范围&#xff0c;而是x趋近与大范围 极限的本质就是逼近&#xff0c;二者都是在确定要逼近到什么程度&#xff01;&#xff01;&#xff01; 放缩 我们要凑出|x-x0|的…

python技术面试题合集(二)

python技术面试题 1、简述django FBV和CBV FBV是基于函数编程&#xff0c;CBV是基于类编程&#xff0c;本质上也是FBV编程&#xff0c;在Djanog中使用CBV&#xff0c;则需要继承View类&#xff0c;在路由中指定as_view函数&#xff0c;返回的还是一个函数 在DRF中的使用的就是…

docker笔记3 Docker常规安装

1.安装tomcat docker hub上面查找tomcat镜像 docker search tomcat 从docker hub上拉取tomcat镜像到本地 docker pull tomcat docker images查看是否有拉取到的tomcat 使用tomcat镜像创建容器实例(也叫运行镜像) docker run -it -p 8080:8080 tomcat -p 小写&#xff0c;主…

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书杭州师范大学图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书杭州师范大学图书馆

MySQL访问和配置

目录 1.使用MySQL自带的客户端工具访问 2.使用DOS访问(命令行窗口WinR → cmd) 3.连接工具&#xff08;SQLyog或其它&#xff09; MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 1.使用MySQL自…

AMEYA360代理 | 佰维eMMC、LPDDR存储芯片赋能电视终端流畅体验

5G、AI、VR、AR等技术的发展&#xff0c;助推智能电视、机顶盒等电视终端成为智能家居领域不可忽视的重要设备。随着4K超高清(UHD)技术、虚拟现实技术(VR)和增强现实技术(AR)的普及&#xff0c;并向8K超高清技术不断渗透&#xff0c;电视终端将可以为消费者提供更清晰的视觉体验…

解决DCNv2不能使用高版本pytorch编译的问题

可变形卷积网络GitHub - CharlesShang/DCNv2: Deformable Convolutional Networks v2 with Pytorch代码已经出来好几年了&#xff0c;虽然声称"Now the master branch is for pytorch 1.x"&#xff0c;实际上由于pytorch自1.11版开始发生了很大变化&#xff0c;原来基…

时序预测 | MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测

时序预测 | MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测 目录 时序预测 | MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测&#xff1b; 2.运行环…

精益创业的规划框架:愿景,战略,产品

精益创业的规划框架&#xff1a;愿景&#xff0c;战略&#xff0c;产品【安志强趣讲276期】 趣讲大白话&#xff1a;愿景管战略&#xff0c;战略管产品 **************************** 愿景&#xff1a;创业企业有个清晰的方向 愿景怎么来的&#xff1f;发现社会问题&#xff0c…

electron笔记无边框窗口、DLL调用、DLL函数返回指针

无边框 const win new BrowserWindow({width: 1290,height: 736,minHeight: 736,minWidth: 1040,maxHeight: 736,maxWidth: 1290,frame: false, // 无边框webPreferences: {// preload: process.env.WEBPACK_DEV_SERVER_URL ? __dirname /preload.js : app://./preload.js,…

leetcode172. 阶乘后的零(java)

阶乘后的零 题目描述巧妙的解法代码演示 上期经典 题目描述 难度 - 中等 172. 阶乘后的零 给定一个整数 n &#xff0c;返回 n! 结果中尾随零的数量。 提示 n! n * (n - 1) * (n - 2) * … * 3 * 2 * 1 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;0 解释&#…

【算法刷题-栈与队列篇】

目录 1.leetcode-232. 用栈实现队列2.leetcode-225. 用队列实现栈3.leetcode-20. 有效的括号&#xff08;1&#xff09;代码1&#xff08;2&#xff09;代码2 4.leetcode-1047. 删除字符串中的所有相邻重复项5.leetcode-150. 逆波兰表达式求值6.leetcode-239. 滑动窗口最大值7.…

C盘清理 “ProgramData\Microsoft\Search“ 文件夹过大

修改索引存放位置 进入控制面板->查找方式改成大图标&#xff0c; 选择索引选项 进入高级 填写新的索引位置 删除C盘索引信息 删除C:\ProgramData\Microsoft\Search\Data\Applications 下面的文件夹 如果报索引正在使用&#xff0c;参照第一步替换索引位置。关闭索引

【conan】c++包管理工具,conan教程

文章目录 介绍Build a simple CMake project using ConanUsing build tools as Conan packagesBuilding for multiple configurations:Release, Debug, Static and Shared 修改Conan profile&#xff0c;达到自己的编译目的Understanding the flexibility of using conanfile.p…

内网穿透神器-frp的概念,搭建和使用,方便访问内网服务

FRP概念 FRP是什么(借助官网的描述)&#xff1f; frp 是一个专注于内网穿透的高性能的反向代理应用&#xff0c;支持 TCP、UDP、HTTP、HTTPS 等多种协议&#xff0c;且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 为什么是用FR…

【斗破】魔兽山脉回归,彩鳞牵手手萧炎老公,小医仙大战美杜莎

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析【斗破苍穹年番】 斗破苍穹年番动画更新了&#xff0c;云岚宗正式解散&#xff0c;云韵道别&#xff0c;携手纳兰嫣然闯荡中州&#xff0c;而萧炎联合海老&#xff0c;也创立了加玛帝国第一势力炎盟&#xff0c;有了保护萧…

DRM全解析 —— ADD_FB(2)

接前一篇文章&#xff1a;DRM全解析 —— ADD_FB&#xff08;1&#xff09; 本文参考以下博文&#xff1a; DRM驱动&#xff08;四&#xff09;之ADD_FB 特此致谢&#xff01; 上一回围绕libdrm与DRM在Linux内核中的接口&#xff1a; DRM_IOCTL_DEF(DRM_IOCTL_MODE_ADDFB, d…