WideDeep

这里写目录标题

  • 1. 背景
  • 2. 贡献
  • 3 模型结构
    • (1)任务定义
    • (2)The Wide Component
    • (3)The Deep Component
    • (4)联合训练Wide和Deep Model
  • 4. 参考

1. 背景

(1) 广义线性回归通常被用于推荐模型,该模型通常使用one-hot编码的二值化稀疏特征进行训练。通过使用稀疏特征上的交叉变换,能很好的实现记忆能力,解释特征对之间的共现是如何和目标标签相关的。例如AND(user_installed_app=netflix, impression_app=pandora")=1 代表一个用户安装了netflix,然后被展示pandora。可以通过添加更少粒度的特征来增加泛化性,但是通常需要手工特征工程。交叉乘积转换的不能泛化到没有出现在训练数据中的查询项特征对。比如AND (user_installed_category=video, impression_category=music)。

(2) 基于嵌入的模型,例如矩阵分解和神经网络模型,可以通过学习每个查询和项目特征的嵌入,从而可以推广到以前看不见的query-item对,但如果底层的查询项目矩阵稀疏,很难学到有效的嵌入表示。具有交叉积特征转换的线性模型可以用更少的参数记住这些“异常规则”。

因此Wide&Deep结合这两者。

2. 贡献

Wide&Deep学习框架,联合训练具有embedding的前向神经网络,和具有特征变换的线性模型,输入是稀疏输入。

3 模型结构

在这里插入图片描述

(1)任务定义

当用户访问应用商店时,会生成一个查询,其中可以包含各种用户和上下文功能。推荐系统返回一个应用程序列表(也称为曝光),用户可以在上面执行某些操作,如点击或购买。这些用户操作,连同查询和query,作为训练数据记录在日志中。

得分通常是P(y|x),即给定特征x的用户操作标签y的概率,包括用户特征(如国家、语言、人口统计)、上下文特征(如设备、一天中的小时、一周中的哪一天)和印象特征(如应用年龄、应用的历史统计)。

(2)The Wide Component

wide部分是一个广义的线性模型 y = w T x + b y=\bold{w}^{T}\bold{x}+b y=wTx+b,y是预测, x = [ x 1 , x 2 , . . . , x d ] \bold{x}=[x_1,x_2,...,x_d] x=[x1,x2,...,xd]是d个特征向量, w \bold{w} w是模型参数。特征集包含原始输入特征和转换后的特征最重要的特征是交叉积变换,可以定义为:
在这里插入图片描述

其中,cki={0,1},如果第i个特征属于属于第k个组合特征,cji=1,否则为0。对于一个二维的特征,一个交叉积变换,例如AND(gender=female, language=en)“)当且仅当组成特征(gender=female"和anguage=en”)均为1时为1,否则为0。

(3)The Deep Component

Deep是一个前馈神经网络,对类别特征,会被转换为embedding,每一层的计算如下

在这里插入图片描述

(4)联合训练Wide和Deep Model

在这里插入图片描述

1)两部分的输入

Deep部分的输入是全量的特征向量,包含用户年龄,已安装应用数量、设备类型、已安装应用、曝光应用等特征,了别特征需要Embedding后输入concat,拼接成1200维Embedding向量,再经过三层Relu全连接层,最终输入LogLoss输出层。

Wide部分的输入仅是已安装应用(用户历史行为)和曝光应用(代表当前待推荐应用)两类特征。

2)两部分如何结合

将Wide和Deep部分输出对数概率的加权作为预测,然后将其送到一个共同的逻辑损失函数中进行联合训练。

(联合训练和集成训练是有区别的。在集成中,单个模型在互不了解的情况下单独训练,并且它们的预测仅在推理时而不是在训练时组合。相比之下,联合训练通过在训练时同时考虑wide和deep两个部分以及它们之和的权重来同时优化所有参数。对模型大小也有影响:对于集成,由于训练是不相交的,每个单独的模型大小通常需要更大(例如,具有更多的特征和转换),以达到集成工作的合理精度。相比之下,对于联合训练,wide部分只需要用少量的跨产品特征变换来弥补deep部分的不足,而不需要一个全尺寸的wide模型

使用小批量随机优化,使用带有L1正则化的FTRL作为wide部分优化器,AdaGrad作为模型Deep部分的优化器。

对于逻辑回归问题,模型的预测为:
在这里插入图片描述

Y为二分类标签,1表示安装了曝光的App,否则为0,σ(·)为sigmoid函数,φ(x)为原始特征x的交叉积变换, w w i d e \bold{w}_{wide} wwide w D e e p \bold{w}_{Deep} wDeep是wide和deep部分的权重。

3)Wide采用L1 FTRL是想让Wide部分变得更加稀疏。

Wide部分采用了user Installed AppImpression App,这两个id类特征的乘积,两个id类特征向量进行组合,在维度爆炸的同时,会让原本已经非常稀疏的multihot特征向量,变得更加稀疏。正因如此,wide部分的权重数量其实是海量的。为了不把数量如此之巨的权重都搬到线上进行model serving,所以需要筛掉一些稀疏特征。

Deep部分的输入,要么是Age,#App Installs这些数值类特征,要么是已经降维并稠密化的Embedding向量,因此不存在严重稀疏性问题,因此可以用效果更好的Adagrad。

记忆和泛化对推荐系统都很重要,Wide线性模型可以使用交叉积特征变换有效记忆稀疏特征交互,而Deep深度神经网络可以通过低维嵌入推广到以前未见过的特征交互。

4. 参考

《深度学习推荐系统》
Wide & Deep Learning for Recommender Systems
见微知著,你真的搞懂Google的Wide&Deep模型了吗?

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

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

相关文章

Java数组和字符串,随机生成数组,以及英文字母,检查子串

编写一个程序,随机产生一个数组,包含100个整数元素,并进行查找。 然后对数组进行排序,估算调用课本p270页Listing 7.7所示的binarySearch代码(二分查找)所消耗的时间。 package 数组和字符串; import java…

Scanpy(2)多种可视化

本篇内容为scanpy的可视化方法,可以分为三部分: embedding的散点图;用已知marker genes的聚类识别(Identification of clusters);可视化基因的差异表达; 我们使用10x的PBMC数据集(…

基于SSM的平面设计课程在线学习平台系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的平面设计课程在线学习平台系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,…

51单片机学习笔记——LED点亮

一、独立按键控制LED元器件和原理图 根据厂家给的原理图找到独立按键模块,观察下图我们知道按钮的一个头接GND,一头接IO口。由此可知我们如果需要使用第一个按钮则需要用p31。 二、独立按键控制LED程序 程序编写需要使用到IF else语句 当如果P310时P20…

协方差和协相关(Covariance and Correlation)

本文主要是记录与这两个概念相关的概念。看中文或者英文时,尝尝容易弄混。 内容 1 covariance和correleation2 covariance matrix和correlation matrix3 cross-covariance和cross-correlation4 autocovariance和autocorrelation 对于两个随机信号X, Y 1 covarianc…

盒子模型之弹性盒模型

弹性盒模型 经常适用于手机端图标布局 display: flex;让这个盒子显示成弹性盒(很适合移动端布局) 影响:1.让里面的子元素默认横向排列 2.如果子元素是行内元素,则直接变成块元素 3.只有一个元素,margin: auto;自动居中…

uni.uploadFile上传图片后台接收不到数据

今天遇到一个很奇怪的问题,通过使用uni.uploadFile上传文件时后端接收不到文件,查过很多资料,原来是自定义了header的Content-Type问题。取消即可,另把自定义文件上传的代码贴出来。 分析:当我们加上请求头的时候 不…

一步一步写线程之九线程池任务的窃取

一、介绍 在实际的工作安排中,如果有一个比较大的工作,又可以细分的,诸如有一天一万个萝卜要洗这样的工作。假如做为一个工作的分配者,怎么处理这种需求?可能每个人都会想,先看看一个人一天洗多少萝卜&…

大数据真题讲解系列——拼多多数据分析面试题

拼多多数据分析面试题:连续3次为球队得分的球员名单 问题: 两支篮球队进行了激烈的比赛,比分交替上升。比赛结束后,你有一个两队分数的明细表(名称为“分数表”)。表中记录了球队、球员号码、球员姓名、得…

CSS基础:盒子模型详解

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃,大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 We…

Liunx挂载硬件设备

一、mount命令(用于挂载文件系统) (一)语法格式:mount 参数 源设备路径 目的路径 (二)参数 1、-t:指定挂载的文件系统 (1)iso9660:光盘或光盘…

微服务架构中的业务可监控设计

目录 监控指标的定义与收集 监控指标的定义 监控数据的收集 业务的可监控设计技术解决方案 建立统一的监控平台 实施智能告警系统 分布式追踪与可视化 自动化测试和性能基准 安全监控与防御 可视化与告警系统 可视化系统的应用 实时数据展示 历史数据分析 多维度…

【nvm最新解决方案】Node.js v16.20.2 is not yet released or available

【nvm最新解决方案】Node.js v16.20.2 is not yet released or available 解决办法:下载想安装的node压缩包,放入nvm对应目录。 2024年最新node压缩包地址:https://nodejs.org/dist/ 1、选择对应的node版本:例如,我选的…

乡政府管理系统|基于Springboot的乡政府管理系统设计与实现(源码+数据库+文档)

乡政府管理系统目录 目录 基于Springboot的乡政府管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、活动信息管理 3、新闻类型管理 4、新闻动态管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

FPGA中按键程序设计示例

本文中使用Zynq 7000系列中的xc7z035ffg676-2器件的100MHz PL侧的外部差分时钟来检测外部按键是否按下,当按键被按下时,对应的灯会被点亮。当松开按键时,对应的灯会熄灭。 1、编写代码 新建工程,选用xc7z035ffg676-2器件。 点击…

ansible执行mysql脚本

目录 概述实践环境要求ansible yml脚本命令离线包 概述 ansible执行mysql脚本 实践 官网文档 环境要求 环境需要安装以下内容: 1.mysql客户端(安装了mysql即会有)2.安装MySQL-python (Python 2.X) 详细插件安装链接 ansible yml脚本 关键代码如下: # 剧本…

vscode设置conda默认python环境,简单有效

本地conda 可能安装了各种环境,默认的vscode总是base环境,这时你想要在vscode调试python代码,使用默认的环境没有安装对应的包就会遇到报错解决这个问题的方法很简单ctrlshiftp 调出命令面板 再输入 select interpreter , 选择 python 选择解…

设计模式——2_9 模版方法(Template Method)

人们往往把任性也叫做自由,但是任性只是非理性的自由,人性的选择和自决都不是出于意志的理性,而是出于偶然的动机以及这种动机对感性外在世界的依赖 ——黑格尔 文章目录 定义图纸一个例子:从文件中获取信息分几步?Rea…

为什么用CubeMX配置STM32H7主频只能配到200,但实际配到400没报错,超过400报错,其他深色也要把前边的分频器向小调?

原因: STM32CUBEMX配置STM32H750时钟480M时失败_stm32h750 时钟配置_小李干净又卫生的博客-CSDN博客 STM32CUBEMX默认设置的是VOS1,是不能支持480M运行的,只能400 但还不清楚为什么这里没有更多选项Scale ?

BRC20铭文铭刻解析

BRC20铭文铭刻的出现对于智能制造无疑是一个重要的里程碑。随着科技的飞速发展,智能制造已经成为制造业发展的必然趋势!智能制造是指通过运用人工智能、物联网、大数据等先进技术,实现生产过程的自动化、智能化和高效化。 1. BRC20铭文的概念…