深度推荐模型之DeepFM

一、FM

背景:主要解决大规模稀疏数据下的特征组合遇到的问题:1. 二阶特征参数数据呈指数增长
怎么做的:对每个特征引入大小为k的隐向量,两两特征的权重值通过计算对应特征的隐向量内积
在这里插入图片描述

而特征之间计算点积的复杂度原本为
实际应用:在推荐场景中,用户特征和物品特征可以相互组合,例如用户性别男经过onehot编码之后为[0,1],物品颜色蓝色经过onehot编码之后为[1,0],那么组合特征[用户性别=男,物品颜色=蓝]可能会很有用。此时可以用FM模型,对用户性别和物品颜色特征进行组合。

二、wide & deep

https://arxiv.org/abs/1606.07792 2016年
参考:https://blog.csdn.net/google19890102/article/details/78171283
核心思想是结合线性模型的记忆能力和DNN模型的泛化能力,从而提升整体模型性能。
wide 模型:可用线性模型如LR模型,起记忆作用,即从历史数据中发现特征之间的相关性。缺点:1.需要更多人工设计;2.可能出现过拟合;3.无法捕捉训练数据中未曾出现过的特征对。
deep模型:深度学习模型,起泛化作用,即相关性的传递,发现在历史数据中很少或者没有出现过的特征组合,寻找用户的新偏好。当user-item矩阵比较稀疏时,模型会过分泛化,即使部分user-item应该是没有关联的,但模型仍旧可以得到user-item的非零预测,导致推荐并不相关的物品,这时准确性不能得到保证。
将这两个模型结合起来可以更好地在用户的历史兴趣和探索新的兴趣点之间做到平衡。
模型结构:
在这里插入图片描述

特征处理:以文章中的场景用户app推荐为例,每一条训练数据的特征包括用户数据和曝光数据,label是用户是否下载。
wide的输入:离散特征以及离散特征之间的组合特征。
deep的输入:1. 连续特征,通过归一化到区间[0,1]后直接输入到DNN中;2.类别特征,通过词典映射成32维稠密向量,词典根据模型训练调整参数。
wide & deep联合训练,输出通过加权方式合并到一起,通过sigmoid激活函数输出。
wide部分对deep模型进行记忆能力的补充,因此小规模的交叉特征即可。

三、DeepFM

https://arxiv.org/pdf/1703.04247.pdf 2017年
在这里插入图片描述

将Deep和FM相结合。FM做特征见低阶组合,Deep部分做特征间高阶组合。
DeepFM相对于wide & deep的改进就是将wide人工建立交叉特征变为自动获取交叉特征权重,并且FM和Deep模块共享feature embedding的部分,可以更快的训练。
连续变量可以直接作为单个值输入,或者离散化作为一个向量输入。标准代码中是将它直接作为DNN的输入。

以“看点日报”优化算法为例:
输入分为如下4组:

  1. 连续型特征:这部分特征的典型代表为文章CTR,文章点赞数,评论数等。
  2. 单值离散特征,这部分将进行embedding操作,典型代表为文章分类信息,用户收入等级,学历等级等。
  3. 多值离散特征:这部分将进行加权embedding操作,典型代表为用户画像信息,假设用户有多个分类的兴趣爱好,如动漫与娱乐,在lookup table中其向量分别为v33与v3,其中动漫点击10次,娱乐点击2次,那么最终以点击加权的embedding特征为(10/12)v33+(2/12)v3
  4. 向量特征:通过PCA等手段将向量特征进行维度变换后作为embedding输入模型,典型代表为文章的TFIDF向量,用户预训练向量等。
    优化后的DeepFM主要由三部分组成,分别为
  5. FM部分:该部分接受全部的embedding特征,进行二交叉,输出结果至concat层
  6. Deep部分:该部分接受全部的embedding展开特征与连续特征,经过多层的全连接网络,输出结果至concat层
  7. Wide部分:该部分接受离散特征进行LR,将最终结果输出concat层

推荐领域中的向量召回之双塔DSSM
Deep Structured Semantic Models
LSA 潜在语义分析
分布式假设:一个单词的属性是由它所处的环境刻画的。如果两个单词在含义上比较接近,那么他们也会出现在相似的文本中,也就是说具有相似的上下文。
构建一个“单词-文档”矩阵:矩阵的每一行表示一个单词,矩阵的每一列表示一个文章,第i行第j列的值表示第i个单词在第j个段落里面出现了几次或者表示该单词的tf-idf值。
将这个矩阵基于奇艺值分解SVD:
优点:对文本特征维度降低到一个低维语义空间,减轻一词多义和一义多词问题。
缺点:无监督模型,没有利用点击信息。

DSSM 2013年

在这里插入图片描述

总体分为三层结构:输入层、表示层和匹配层。
输入层:将文本映射到低维向量空间转化成向量提供给深度学习网络。主要的技术点是Word Hashing。方法:将每个单词word表示成n-gram形式,例如将每个单词写成trigram的形式:good -> “#go”,“goo”,“ood”,“od#”。这样原本500K的vocab_size能够简化为30k的Token size。
表示层:即图中的Multi-layer nonlinear projection 和 semantic feature。
匹配层:即图中计算query和
训练方法:选择query和文档集合D,其中
应用时可以离线计算item/doc/广告的embedding,线上计算query/user的embedding,线上计算相关性。
优点:

  • 有监督,使用最大似然函数进行优化
  • 使用word-hashing方法解决大规模且稀疏的词典问题
  • 将用户的Query行为和Document映射到同一语义空间中,通过余弦相似度计算相关性。
    缺点:
  • word hash可能造成词语冲突;
  • 因为表示层用的是词袋模型BOW,不考虑词序信息,损失了上下文语序信息
  • 仅用点击来判断正负样本,没有考虑到position偏差,产生的噪声较大
    因为cos的表达是有限的,很难提取交叉特征,所以双塔还是比较适用于召回场景。
    DSSM双塔由很多种变形,例如CNN-DSSM、LSTM-DSSM,sentence BERT,其本质只在于所使用的特征抽取器的不同。

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

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

相关文章

华为二层交换机与防火墙配置上网示例

二层交换机与防火墙对接上网配置示例 组网图形 图1 二层交换机与防火墙对接上网组网图 二层交换机简介配置注意事项组网需求配置思路操作步骤配置文件相关信息 二层交换机简介 二层交换机指的是仅能够进行二层转发,不能进行三层转发的交换机。也就是说仅支持二层…

HCIA真机实验:三层交换机实现vlan之间的通信(内含配置命令)

基础实验示例: 最上面那个交换机作为三层交换机。 下面的两个交换机的配置与之前单臂路由实现vlan之间的通信的配置相同。在这个基础上开启三层交换机 在三层交换机上的配置: 1、创建vlan(底下的交换机有多少个vlan,则三层交换…

Redis数据类型及底层实现

文章目录 1.3.1 5种基本数据类型1.3.1.1 总结篇1.3.1.2 底层源码引入篇1.3.1.2.1 redis是字典数据库KV键值对到底是什么1.3.1.2.2 数据类型视角1.3.1.2.3 数据模型解析(重点)1.3.1.2.4 redisObjec1.3.1.2.5 SDS 1.3.1.3 String1.3.1.3.1 底层分析1.3.1.3…

Python环境下基于机器学习的NASA涡轮风扇发动机剩余使用寿命RUL预测

本例所用的数据集为C-MAPSS数据集,C-MAPSS数据集是美国NASA发布的涡轮风扇发动机数据集,其中包含不同工作条件和故障模式下涡轮风扇发动机多源性能的退化数据,共有 4 个子数据集,每个子集又可分为训练集、 测试集和RUL标签。其中&…

【Midjourney】内容展示风格关键词

1.几何排列(Geometric) "Geometric" 是一个与几何有关的词汇,通常用于描述与形状、结构或空间几何特征相关的事物。这个词可以涉及数学、艺术、工程、计算机图形学等多个领域。 使用该关键词后,图片中的内容会以平面图形拼接的方式展示&#…

计算机网络——虚拟局域网+交换机基本配置实验

1.实验题目 虚拟局域网交换机基本配置实验 2.实验目的 1.了解交换机的作用 2.熟悉交换机的基本配置方法 3.熟悉Packet Tracer 7.0交换机模拟软件的使用 4.掌握在交换机上划分局域网,并且使用局域网与端口连接,检测信号传输 3.实验任务 1.了解交换…

springboot项目开发,使用thymeleaf前端框架的简单案例

springboot项目开发,使用thymeleaf前端框架的简单案例!我们看一下,如何在springboot项目里面简单的构建一个thymeleaf的前端页面。来完成动态数据的渲染效果。 第一步,我们在上一小节,已经提前预下载了对应的组件了。 如图&#x…

phar反序列化漏洞

基础: Phar是一种PHP文件归档格式,它类似于ZIP或JAR文件格式,可以将多个PHP文件打包成一个单独的文件(即Phar文件)。 打包后的Phar文件可以像普通的PHP文件一样执行,可以包含PHP代码、文本文件、图像等各…

什么叫高斯分布?

高斯分布,也称为正态分布,是统计学中最常见的概率分布之一。它具有钟形曲线的形态,对称分布在均值周围,且由均值和标准差两个参数完全描述。 高斯分布的概率密度函数(Probability Density Function, PDF)可…

【C++修炼秘籍】Stack和Queue

【C修炼秘籍】STL-Stack和Queue ☀️心有所向,日复一日,必有精进 ☀️专栏《C修炼秘籍》 ☀️作者:早凉 ☀️如果有错误,烦请指正,如有疑问可私信联系; 目录 【C修炼秘籍】STL-Stack和Queue 前言 一、st…

dnSpy调试工具二次开发2-输出日志到控制台

本文在上一篇文章的基础上继续操作: dnSpy调试工具二次开发1-新增菜单-CSDN博客 经过阅读dnSpy的源码,发现dnSpy使用到的依赖注入用了MEF框架,所以在源码中可以看到接口服务类的上面都打上了Export的特性或在构造方法上面打上ImportingConst…

尚无忧球馆助教系统源码,助教小程序源码,助教源码,陪练系统源码

特色功能: 不同助教服务类型选择 助教申请,接单,陪练师入住,赚取外快 线下场馆入住 设置自己服务 城市代理 分销商入住 优惠券 技术栈:前端uniapp后端thinkphp 独立全开源

翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一

随着 OpenAI 在多模态方面的最新进展,想象一下将这种能力与视觉理解相结合。 现在,您可以在 Streamlit 应用程序中使用 GPT-4 和 Vision,以: 从草图和静态图像构建 Streamlit 应用程序。帮助你优化应用的用户体验,包…

NoSQL基本内容

第一章 NoSQL 1.1 什么是NoSQL NoSQL(Not Only SQL)即不仅仅是SQL,泛指非关系型的数据库,它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,…

vulnhub靶场之Five86-2

一.环境搭建 1.靶场描述 Five86-2 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing. The ultimate goal of this challenge is to get root and to read the one and only flag. Linux skills and fa…

2024年阿里云幻兽帕鲁Palworld游戏服务器优惠价格表

自建幻兽帕鲁服务器租用价格表,2024阿里云推出专属幻兽帕鲁Palworld游戏优惠服务器,配置分为4核16G和4核32G服务器,4核16G配置32.25元/1个月、10M带宽66.30元/1个月、4核32G配置113.24元/1个月,4核32G配置3个月339.72元。ECS云服务…

Java项目实战--瑞吉外卖DAY03

目录 P22新增员工_编写全局异常处理器 P23新增员工_完善全局异常处理器并测试 p24新增员工_小结 P27员工分页查询_代码开发1 P28员工分页查询_代码开发2 P22新增员工_编写全局异常处理器 在COMMON新增全局异常捕获的类,其实就是代理我们这些controlle。通过aop把…

【C语言】深入理解指针(3)数组名与函数传参

正文开始——数组与指针是紧密联系的 (一)数组名的理解 (1)数组名是数组首元素的地址 int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *parr &arr[0]; 上述代码通过&arr[0] 的方式得到了数组第一个元素的地址,…

基于DataKit迁移MySQL到openGauss

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

RTP工具改进(五)--使用qt

前篇 第四篇 RTP工具改进(四) - rtmp协议推送 前面使用的工具一直为mfc,今天将使用qt 来做界面,使用qt 来进行程序和协议的编写,qt部分目前还不包括rtp ps流和rtmp,暂时只有rtp 直接传输,关于rtmp协议和ps流协议&…