四种推荐算法——Embedding+MLP、WideDeep、DeepFM、NeuralCF

一、Embedding+MLP模型

Embedding+MLP 主要是由 Embedding 部分和 MLP 部分这两部分组成,使用 Embedding 层是为了将类别型特征转换成 Embedding 向量,MLP 部分是通过多层神经网络拟合优化目标。——用于广告推荐。

  1. Feature层即输入特征层,是模型的input部分,如上图的Feature#1是向上连接到embedding层,而Feature #2是直接连到stacking层。——前者代表类别型特征经过one-hot编码后生成的特征向量——过于稀疏,不适合直接输入网络中进行学习(所以先接入embedding层转为稠密向量);而后者数值型特征
  2. Stacking 中文名是堆叠层,也叫连接(Concatenate)层作用是把不同的 Embedding 特征和数值型特征拼接在一起,形成新的包含全部特征的特征向量。
  3. MLP 层的作用是让特征向量不同维度之间做充分的交叉,让模型抓取到更多的非线性特征和组合特征的信息,使深度学习模型在表达能力上较传统机器学习模型大为增强。
  4. Scoring 层,它也被称为输出层,为了拟合优化目标。对于CTR 预估这类二分类问题,Scoring 层往往使用的是逻辑回归模型,输出层使用 sigmoid 函数作为激活函数,输出一个介于 0 和 1 之间的概率值;而对于图像分类等多分类问题,Scoring 层往往采用 softmax 模型,使用 softmax 函数作为激活函数,输出每个类别的概率值。

深度学习模型DeepCrossing——一个经典的Embedding+MLP模型结构——微软提出。属于Embedding+MLP模型的进阶,在 Embedding + MLP 的基础上增加了交叉层,以更好地模拟特征之间的高阶交互

二、Wide&Deep模型——线性模型(Wide)和深度神经网络(Deep)

推荐算法面临一个和搜索排序系统一个类似的挑战——记忆性和泛化性的权衡。

记忆能力:可以被理解为模型直接学习并利用历史数据中物品或者特征的“共现频率”的能力。可以简单地理解成对商品或者是特征之间成对出现的一种学习,由于用户的历史行为特征是非常强的特征,特征之间的直接线性关联,对于特征间的简单关系很有效。

泛化能力:可以被理解为模型传递特征的相关性,以及发掘稀疏甚至从未出现过的稀有特征与最终标签相关性的能力。对于泛化能力来说,它的主要来源是特征之间的相关性以及传递,捕捉复杂特征组合中的隐形关系、非线性关系。利用特征之间的传递性,就可以探索一些历史数据当中很少出现的特征组合,获得很强的泛化能力。

GooglePlay提出的Wide&Deep是比较经典的一个深度学习模型,它使模型既具有想象力又具有记忆力——线性模型(Wide)使模型既具有记忆力和深度神经网络(Deep)使模型既具有泛化性。

                                                 Wide&Deep架构示意图

Wide&Deep模型的工作流程

  1. 特征工程:首先对原始数据进行预处理和特征工程,生成一系列可用于模型训练的特征。
  2. Wide 部分:将一部分特征直接输入到线性模型中,用于捕捉直接的线性关系——通常采用的是逻辑回归或线性回归模型,仅考虑每个特征对目标变量的直接贡献,而不考虑特征之间的交互。每个特征的权重都是独立计算的,不涉及与其他特征的相互作用——可以手动设置简单的二阶特征交叉
  3. Deep 部分:将另一部分特征输入到深层神经网络中,用于学习特征之间的非线性关系。(本项目中输入全部特征)
  4. 联合训练:Wide 和 Deep 两部分的输出会被合并起来,通常是在最后一层通过加权求和的方式进行融合。
  5. 输出层:最后的输出层会根据Wide和Deep部分的融合结果生成最终的预测值。

举个简单的例子:电影推荐系统——预测用户是否会喜欢一部电影。

Wide 部分

特征包括:用户的年龄、性别、电影类型、导演等。

这些特征之间可能有直接的关系,比如年轻观众可能更喜欢动作片。

使用Wide部分(例如逻辑回归)来捕捉这些直接关系。

Deep 部分

特征包括:用户的观看历史、评分历史等。

这些特征之间的关系更为复杂,例如用户观看历史中的模式可能是非线性的。

使用Deep部分(例如多层神经网络)来学习这些复杂的模式。

如何工作

输入:用户特征和电影特征作为输入。

Wide 部分:直接使用特征进行线性预测。

Deep 部分:使用神经网络学习特征间的非线性关系。

合并:Wide和Deep的预测结果在最后一层合并。

输出:预测用户是否会喜欢这部电影。

结果

预测:结合了记忆性(Wide部分)和泛化性(Deep部分),可以更准确地预测用户喜好。

优势:能够处理简单和复杂的关系,提高推荐系统的准确性。

三、DeepFM模型

DeepFM是由哈工大和华为公司联合提出的深度学习模型。DeepFM模型包含因子分解机 (FM) 和深度神经网络 (DNN)。

  1. FM 部分:处理了一阶特征(每个特征的独立贡献)和二阶特征交互(特征之间的相互作用)——相对于Wide&Deep中的Wide部分多出二阶特征交互的部分——可以自动捕捉所有的可能的特征二阶交互。——DeepFMFM替换原来的Wide部分,加强了浅层网络部分特征组合的能力。
  2. Deep 部分:通过 MLP 处理高阶特征交互,这里的高阶交互指的是通过神经网络自动学习得到的复杂特征组合。
  3. 合并输出:将 FM 部分的一阶和二阶特征交互与 Deep 部分的高阶特征交互结果合并,得到最终的预测。

                           DeepFM架构示意图

DeepFM VS Wide&Deep

假设我们有一个推荐系统,需要预测用户是否会点击某个广告。我们的特征包括用户的年龄、性别、所在城市、广告类型等。

DeepFM 的FM部分会考虑年龄与所在城市的交互效应。例如,年龄较大的用户在某些城市可能更倾向于点击某种类型的广告。

Wide & Deep 的Wide部分仅考虑年龄、性别、所在城市等特征各自对点击率的贡献,而不考虑它们之间的交互。

  • DeepFM 通过FM部分捕捉特征间二阶交互效应,更好处理复杂的数据关系。
  • Wide & Deep 的Wide关注每个特征一阶效应,快速学习每个特征的重要性。

这两种模型各有优势,数据集非常稀疏且需要捕捉复杂的特征交互,那么DeepFM可能更适合;数据集包含丰富的特征,并希望通过显式特征工程来捕捉特征间的交互,那么Wide & Deep可能更适合。

四、NeuralCF(神经网络协同过滤)

NeuralCF 结合了传统矩阵分解的优点(记忆性)和深度学习的能力(泛化能力),通过MLP代替内积操作来提高推荐准确性——新加坡国立学者提出。

                          NeuralCF的模型结构图 (出自论文Neural Collaborative Filtering)

最经典的是输入用户和物品id,转化成One-hot编码后经过简单的Embedding后生成稠密向量,然后将用户塔和物品塔拼接一起,送进MLP层中充分交叉,获取更高阶的特征,然后输出。

双塔模型——NeuralCF 的扩展

双塔模型是在经典 NeuralCF 基础上的扩展,其中增加了更多的特征信息,并且在每个塔内进行了更充分的特征交叉。这种扩展能够使模型更好地理解用户和物品之间的复杂关系,提高推荐的准确性。

  • 多特征输入:不仅限于用户ID和物品ID,还包括其他相关的特征信息。
  • 特征交叉:每个塔内的 MLP 能够处理更多特征的交叉,增强模型的学习能力。
  • 独立建模:用户和物品分别在独立的塔中建模,最后通过某种方式(如点积)进行交互。

交互方式(用户Embedding-物品Embedding):

  • 如果数据集较小或者特征比较简单,捕捉线性相似度,使用点积可能会更有效率,同时避免过拟合的风险。
  • 如果数据集较大或者特征之间存在复杂的非线性关系,使用 MLP 进行交互可以更好地捕捉这些关系,尽管这可能会增加计算复杂度。

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

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

相关文章

【MySQL】全面剖析索引失效、回表查询与索引下推

1.索引失效的情况 以tb_user表举例,id为主键索引、name和phone字段上建立了一个普通索引,name和phone均为varchar类型。 索引列运算 当在 WHERE 子句或 JOIN 子句中对列使用函数或表达式时,索引会失效。 执行以下语句,可以发现执…

STM32-门电路-储存器-寄存器-STM32f1-MCU-GPIO-总线-keil5-点led

1、门电路 门电路组成简单加法器: 二进制对电路的影响: 0和1代表无和有; 以下图例,演示与门:左1右1输出1; 电平标准:使用不同的电压表示数字0和1; 高电平:1&#xff1…

AI在医学领域:残差扩散模型预测特发性肺纤维化 (IPF)

关键词: IPF 进展预测、残差扩散模型、临床信息 特发性肺纤维化(Idiopathic Pulmonary Fibrosis,IPF)是一种严重且不可逆的肺部疾病,它会导致肺部组织出现瘢痕和增厚,从而引起呼吸困难。。及时对IPF进行治…

电子围栏报警系统的创新应用

在科技日新月异的今天,安全防护技术正以前所未有的速度发展,其中,电子围栏报警系统作为智能安防领域的佼佼者,正逐步成为各行各业守护安全的主要选择方案。这一创新技术的应用,不仅极大地提升了安全防护的效率和精准度…

24/8/7 算法笔记 支持向量机回归问题天猫双十一

import numpy as np from sklearn.svm import SVR import matplotlib.pyplot as plt X np.linspace(0,2*np.pi,50).reshape(-1,1) y np.sin(X) plt.scatter(X,y) 建模 线性核函数 svr SVR(kernel linear) svr.fit(X,y.ravel())#变成一维y_ svr.predict(X) plt.scatter(…

阿里云播放器 web端 问题解决总结

1:ios设备长按视频,会出现系统的放大镜效果: 可以只监听touchstart事件即可 var playerContainer document.getElementById(this.playerId); playerContainer.addEventListener(touchstart, preventZoom, { passive: false }); playerConta…

unity 创建项目报错feature has expired (H0041),sentinel key not found (H0007)

两个报错同一种处理方式。 1、删除以下路径所有文件:C:\ProgramData\SafeNet Sentinel(注意:ProgramData为隐藏文件) 2、打开Cmd(WinR键,输入cmd回车),进入Unity安装所在盘符&#…

为啥https比http慢

Https有ssl的握手 HTTP没有 HTTPS TCP 和HTTP 的TCP 时间差不是很大 HTTPS请求中,ssl所占的时间比例是请求时间总和93.37%, HTTPS请求中,ssl的请求会是tcp请求的14倍,而HTTP中没有这个问题 建议:对安全要求不是很高的,不要使用https请求 图例

自定义DIY线上预约小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 随着移动互联网的快速发展,人们越来越习惯于通过手机进行各种活动的预约。传统的预约方式往往存在着信息不透明、沟通不畅、效率低下等问题,无法满足用户日益增长的需求。同时,对于企业和商家来说,建立一个专属的线上预…

Isaac Lab 安装 (ubuntu22.04环境)

Windows下的安装见这篇博客: Isaac Lab 安装与初体验 (windows环境)-CSDN博客 ubuntu22.04下的安装与windows下十分类似,还是参考官方的,Installation using Isaac Sim Binaries Installation using Isaac Sim Bina…

Linux驱动开发—ioctl命令构成,设备驱动基础使用ioctl详解

文章目录 1.什么是ioctl?示例 2.ioctl 与 write,read 有什么区别?复杂的设备控制多种数据类型和操作简化应用层代码区分数据和控制 3.ioctl命令的构成宏定义的组成部分具体的宏定义举个栗子 4.ioctl命令的分解宏定义举个栗子 5.ioctl 设备使用应用程序构…

【游戏引擎之路】登神长阶(九)——《3D游戏编程大师技巧》:我想成为游戏之神!

5月20日-6月4日:攻克2D物理引擎。 6月4日-6月13日:攻克《3D数学基础》。 6月13日-6月20日:攻克《3D图形教程》。 6月21日-6月22日:攻克《Raycasting游戏教程》。 6月23日-7月1日:攻克《Windows游戏编程大师技巧》。 7月…

数据库篇--八股文学习第十六天| MySQL的执行引擎有哪些?;MySQL为什么使用B+树来作索引;说一下索引失效的场景?

1、MySQL的执行引擎有哪些? 答: MySQL的执行引擎主要负责查询的执行和数据的存储, 其执行引擎主要有MyISAM、InnoDB、Memery 等。 InnoDB引擎提供了对事务ACID的支持,还提供了行级锁和外键的约束,是目前MySQL的默认存储引擎&…

Codeforces Round 963 (Div. 2)

A题:Question Marks 题目: Tim正在做一个由 4n 个问题组成的测试,每个问题都有 4 个选项:“A”、“B”、“C”和“D”。对于每个选项,有 n 个正确答案对应于该选项,这意味着有 n 个问题的答案为“A”。 n…

个人知识库与RAG的技术

构建个人知识库时,采用RAG结合LangChain的方法极为有效。RAG,即检索增强生成技术,是一种前沿的自然语言处理手段,它融合了信息检索的精确匹配与语言模型的高效文本生成,为处理自然语言相关任务提供了一种既灵活又准确的…

未来已来:人工智能如何重塑Facebook的用户体验?

在数字化时代的浪潮中,人工智能(AI)正成为推动技术进步和用户体验优化的核心力量。Facebook(现Meta Platforms)作为全球领先的社交媒体平台,正在充分利用人工智能技术,以重塑用户体验&#xff0…

Spring Boot 3.0 热部署

idea开发环境下的spring boot 3.0热部署启用非常简单,并没有网上教程讲的需要对idea做一些设置。 只需引入依赖: developmentOnly org.springframework.boot:spring-boot-devtools其他不需要做任何设置。 服务启动中,改了代码或配置后&…

振动分析-18-基于振动分析进行故障诊断的思路和步骤

参考树立正确的振动诊断思路 参考振动分析相关知识的储备及振动分析仪的局限性 参考如何进行振动分析诊断(译文) 1 正确的故障诊断意识 我们通常在学习班听到的是大学教授以及专家讲解的故障诊断的基础理论,对于刚接触这个专业的人来说,微分方程和复杂的矩阵却有点让人忘…

JeecgBoot低代码平台简单记录

BasicModal弹窗 Usage 由于弹窗内代码一般作为单文件组件存在,也推荐这样做,所以示例都为单文件组件形式 注意v-bind"$attrs"记得写,用于将弹窗组件的attribute传入BasicModal组件 attribute:是属性的意思,…

Spring全家桶(三):Spring AOP

Spring AOP面向切面编程 1.面向切面编程思维(AOP) 1.1.面向切面编程思想AOP AOP:Aspect Oriented Programming面向切面编程 AOP可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。O…