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模型了吗?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

树莓派+Openwrt连接校园网,打破校园网设备限制

前言 因为本校学生校园网只允许最多三个设备登录,对于同时拥有多个联网设备的我十分不友好,而且大多单片机如esp32的wifi模块是只允许一般的WPA/WPA2认证的,是不支持校园网的portal认证。所以我决定搞一个路由器。 然后我上网买了一个TP-Li…

Android Studio 新建Android13 代码提示Build Tools revision XX is corrupted无法编译解决

Android Studio 新建Android13 代码提示Build Tools revision XX is corrupted无法编译解决 文章目录 Android Studio 新建Android13 代码提示Build Tools revision XX is corrupted无法编译解决一、前言二、分析解决1、原因分析2、解决方法 三、其他1、Android13 新项目无法编…

采用matplotlib可视化kitti

配置kitti_object_vis没成功,用kitti_object_vis的一些函数加上matplotlib进行可视化 import numpy as np import matplotlib.pyplot as pltimport numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def roty(t):"&quo…

JavaWeb-登录校验

会话技术 浏览器使用的是http协议,多次请求间数据是不能共享的,例如我们要去访问用户数据的接口,但这时候用户是否已经登入了呢?是不知道的,为了解决这个问题,于是引入了会话跟踪技术。 会话:…

05—js对象

一、初识对象 JavaScript是面向对象编程(Object Oriented Programming,OOP)语言。 面对象是一种复合值:它将很多值集合在一起,可通过名字访问这些值。对象也可看做一种无序的数据集合,由若干个“键值对”…

iced 入门一

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看 📙Jav…

基于ssm的企业在线培训系统论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装企业在线培训系统软件来发挥其高效地信息处理的作用&#x…

每日一题

腐烂的苹果_牛客题霸_牛客网 思路分析:广度优先遍历,找到所有腐烂的苹果同时向四方扩散,就是第一轮把所有腐烂的苹果加入队列中,这就跟MQ的消息队列的原理差不多,第一次记录队列的长度,广度遍历一次,长度--…

第一个STM32F767IGT6核心板

一. 制作原因 起先是因为参加计算机设计大赛准备的板子,其作用是连接OV5640摄像头来识别车牌号,主要外设有摄像头,SDRAM,网口等。 二. 原理图和PCB 原理图 PCB 三. 测试 1. 测试SDRAM功能 按下按键我们可以在串口中看到内存…

【基础IO】谈谈动静态库(怒肝7000字)

文章目录 前言实验代码样例静态库生成一个静态库归档工具ar静态库的链接 动态库创建动态库加载动态库 动静态链接静态链接动态链接动静态链接的优缺点 前言 在软件开发中,库(Library)是一种方式,可以将代码打包成可重用的格式&…

【C语言】内存函数-memcpy-memmove-memset...用法及实现,沉淀自己!

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. memcpy函数使用和模拟实现 2. memmove使用和模拟实现 3. memset函数的使用 4. memcmp函数的使用 1. memcpy函数使用和模拟实现 <string.h>-------…

机器学习理论基础—神经网络算法公式学习

机器学习理论基础—神经网络公式学习 M-P神经元 M-P神经元&#xff08;一个用来模拟生物行为的数学模型&#xff09;&#xff1a;接收n个输入(通常是来自其他神经 元)&#xff0c;并给各个输入赋予权重计算加权和&#xff0c;然后和自身特有的阈值进行比较 (作减法&#xff0…

pytorch-MNIST测试实战

这里写目录标题 1. 为什么test2. 如何做test3. 什么时候做test4. 完整代码 1. 为什么test 如下图&#xff1a;上下两幅图中蓝色分别表示train的accuracy和loss&#xff0c;黄色表示test的accuracy和loss&#xff0c;如果单纯看train的accuracy和loss曲线就会认为模型已经train…

【优质书籍推荐】Vue.js+Node.js全栈开发实战

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

von Mises-Fisher Distribution (代码解析)

torch.distribution 中包含了很多概率分布的实现&#xff0c;本文首先通过均匀分布来说明 Distribution 的具体用法, 然后再解释 von Mises-Fisher 分布的实现, 其公式推导见 von Mises-Fisher Distribution. 1. torch.distribution.Distribution 以下是 Uniform 的源码: cl…

怎么使用JMeter进行性能测试?

一、简介 JMeter是Apache软件基金会下的一款开源的性能测试工具&#xff0c;完全由Java开发。它专注于对我们应用程序进行负载测试和性能测量&#xff0c;最初设计用于web应用程序&#xff0c;现在已经扩展到其他测试功能&#xff0c;比如&#xff1a;FTP、Database和LDAP等。…

Vue 3 项目构建与效率提升:vite-plugin-vue-setup-extend 插件应用指南

一、Vue3项目创建 前提是已安装Node.js&#xff08;点击跳转Node官网&#xff09; npm create vuelatest这一指令将会安装并执行 create-vue&#xff0c;它是 Vue 官方的项目脚手架工具。你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示&#xff1a; ✔ Projec…

跟着Carl大佬学leetcode之977 有序数组的平方

来点强调&#xff0c;刷题是按照代码随想录的顺序进行的&#xff0c;链接如下https://www.programmercarl.com/本系列是记录一些刷题心得和学习过程&#xff0c;就看到题目自己先上手试试&#xff0c;然后看程序员Carl大佬的解释&#xff0c;自己再敲一遍修修补补&#xff0c;练…

electron打包dist为可执行程序后记【electron-quick-start】

文章目录 目录 文章目录 前言 一、直接看效果 二、实现步骤 1.准备dist文件夹 2.NVM管理node版本 3.准备electron容器并npm run start 4.封装成可执行程序 1.手动下载electron对应版本的zip文件&#xff0c;解决打包缓慢问题 2.安装packager 3.配置打包命令执行内容…

【点云语义分割】弱监督点云语义分割自适应标签分布

Adaptive Annotation Distribution for Weakly Supervised Point Cloud Semantic Segmentation 摘要&#xff1a; 弱监督点云语义分割因其能够减轻对点云细粒度注释的严重依赖而备受关注。然而&#xff0c;在实际应用中&#xff0c;稀疏注释通常在点云中呈现出明显的非均匀分布…