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

news2024/9/21 12:47:16

一、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.coloradmin.cn/o/1994501.html

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

相关文章

【C++】string类——模拟实现

🚀个人主页:奋斗的小羊 🚀所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言💥1、string类主要函数接口💥2、string类的模拟实现💥2.1 构造和析构…

【Material-UI】FormGroup 组件:多选框分组的最佳实践详解

文章目录 一、FormGroup 组件概述1. 组件介绍2. 组件的基本结构 二、FormGroup 的关键特性1. 逻辑分组2. 状态管理3. 错误处理 三、FormGroup 的实际应用场景1. 多选项管理2. 逻辑验证3. 用户偏好设置4. 表单提交 四、注意事项1. 无障碍支持2. 样式定制 五、总结 在 Material-U…

AWVS下载安装使用教程图文教程(超详细)

《网络安全自学教程》 AWVS(Acunetix Web Vulnerability Scanner)是一款常用的Web网站漏洞扫描工具。 AWVS扫描时,对数据库有增删改的操作,部分渗透项目禁止使用,在实际环境中需要注意。 这篇文章使用 Windows Serve…

30个UI设计师应该掌握的专业术语

每个领域都有自己的专有名词和术语,掌握它们才能更好地和工作伙伴沟通。作为一名资深UI设计师,我整理了以下30个UI设计师应该掌握的专业术语,希望能帮助大家更好地理解和运用这些概念。 这些术语包含三大类:基础名词、常用UI设计…

藏品管理系统的流程

1、文物征集: - 通过购买、捐赠、交换、考古发掘等方式征集文物。 征集过程中需遵守国家法律法规和相关规定。 2、文物鉴定: - 对新发现的文物和征集的文物进行专业鉴定,确定其是否具有历史、艺术、科学价值。 3、 文物登记&…

【吊打面试官系列-Elasticsearch面试题】详细描述一下 Elasticsearch 索引文档的过程?

大家好,我是锋哥。今天分享关于 【详细描述一下 Elasticsearch 索引文档的过程?】面试题,希望对大家有帮助; 详细描述一下 Elasticsearch 索引文档的过程? 协调节点默认使用文档 ID 参与计算(也支持通过 routing)&am…

个人经典例程与研究方向总目录

🎁 私信可获得仿真数据、论文与建模的仿真定制 👇 订阅本人任意付费专栏的朋友,均可私信,免费获取一维EKF/UKF的MATLAB例程 目前的研究方向 1 导航与定位 卡尔曼滤波跟踪、二维三维轨迹计算、平面立体目标跟踪、 2 智能算法方面…

顶顶通手机助手拦截方案

现在很多品牌的手机,都自带语音助手,比如我用的是小米手机,就自带小爱助手,可以自动接听各种广告营销电话。如果来电号码被标记为广告营销,小爱助手就会自动应答,然后模拟真人进行对话。 现在自动外呼系统拨…

二次注入(sql靶场第24关+网鼎杯comment二次注入+网鼎杯-2018-Web-Unfinish)

目录 二次注入 sql靶场第24关 网鼎杯comment二次注入 网鼎杯-2018-Web-Unfinish 二次注入 sql靶场第24关 二次注入我觉得是特别有意思,首先依然是查看页面 可以看出来这一关十分的丰富,可以注册,修改和登录,那我们先试着注册…

工地云SaaS系统,通过物联网与可视化等先进技术的综合应用,搭建的智慧工地管理云平台源码

通过物联网与可视化等先进技术的综合应用,搭建智慧工地管理云平台。以绿色、安全施工管理为主线,从人员、设备、环境、监控#度管理、施工管理、工程管理等多个维度对现场要素进行信息化,实现数据实时更新、人员精确管理、风险及时预警、管理便…

六,业务功能:登录

六,业务功能:登录 文章目录 六,业务功能:登录编写 AuthController 作为登录控制器编写 EmpService 业务处理编写 target.html 登录成功页面显示启动 Tomcat 服务器,运行测试 编写 AuthController 作为登录控制器 在 d…

【区块链+社会公益】人民链数字福虎 | FISCO BCOS应用案例

人民链在 2022 年春节期间发起保护生物多样性的公益活动——“数字福虎迎新春”,通过区块链技术,探索迎新 春 新公益,助力保护“生物多样性”。 由人民在线开发的人民链客户端定位为“口袋里的大数据管 家”,通过“超级 ID”数字…

redis面试(九)锁重入和互斥

可重入 1)如果一开始这个锁是没有的,第一次来加锁,这段lua脚本会如何执行? "if (redis.call(‘exists’, KEYS[1]) 0) then " "redis.call(‘hset’, KEYS[1], ARGV[2], 1); " "redis.call(‘pexpi…

【按键精灵安卓版小精灵进程守护-崩溃自启中(原理篇·下)】安卓版按键小精灵崩溃自启插件兼容不同系统在游戏场景和非游戏场景下的自启,源码分享。

按键精灵安卓版小精灵进程守护-崩溃自启中(原理篇下) 前言一、了解几个重要的Android命令1.getevent——事件查看捕获2.sendevent——底层事件模拟 二、逻辑解析1.获取设备名称2.获取tap事件序列3.获取映射关系4.自定义底层点击 三、代码实现1.设备获取2…

windows和office微软官方免费激活教程

微软提供了windows系统和office的官方免费激活,其实不用去买什么激活码,官方提供了激活方式,完全免费。目前测试没发现什么问题,windows还支持永久激活,比一些乱七八糟的kms激活工具还省心。 github地址:Gi…

《Ubuntu22.04环境下的ROS2学习笔记0》

一、下载并配置vscode 前面的安装过程就不再多赘述了,和ROS1中一样,参考链接在这里 《Ubuntu20.04环境下的ROS进阶学习1》_ubuntu20.04安装vscode及插件-CSDN博客 二、vscode扩展功能下载 a、简体中文语言包 中文语言包下载完后软件会提醒你restart软件…

博物馆藏品管理,从手动到智能:RFID手持扫描器的高效之旅

在博物馆藏品管理的漫长历史中,我们见证了从手工记录到数字化管理的巨大转变。今天,我们要讲述的,是这一转变中的一个重要里程碑——RFID手持扫描器的引入,它标志着博物馆藏品管理从手动走向智能的高效之旅。 首先,让我…

Java常见面试题-13-FastDFS

文章目录 FastDFS 是什么?FastDFS 组成FastDFS 的流程FastDFS 如何现在组内的多个 storage server 的数据同步? FastDFS 是什么? FastDFS 是一个开源的轻量级分布式文件系统,它可以对文件进行管理,功能包括&#xff1…

Linux驱动开发—中断,中断号,中断控制器GIC,中断子系统架构详解

文章目录 1.中断的基本概念2.中断上下文中断上下文的主要特点中断上下文的限制顶半部和底半部 3.中断子系统架构中断控制器GICGIC 的层级结构 中断控制器级联基本概念级联中断控制器的工作原理 中断号概念基本概念中断号的作用中断号的分配ARM 架构和 GIC 总体架构图 4.申请一个…

荒原之梦:考研期间可以玩游戏吗?

有不少同学,特别是男同学,在考研之前,会有玩游戏的习惯,那么,对于考研的同学来说,就会产生这样一个疑问。在考研备考期间,我还可以玩游戏吗? 其实关于这个问题的答案是因人而异的&am…