《深度学习推荐系统》王喆 笔记

news2024/11/19 23:35:20

这个笔记,是我记录的阅读该书,对我比较有用的一些点。不算是能完全覆盖全书知识点的笔记。

能完全覆盖全书知识点,比较详尽的笔记,可以参考如下。

《深度学习推荐系统》超级详细读书笔记icon-default.png?t=N7T8https://www.zhihu.com/tardis/bd/art/444018628

推荐系统模型——前深度学习时代

传统推荐系统算法对比
传统推荐算法优势劣势
简单协同过滤算法

算法简单

不需要领域知识

能发掘新的兴趣点

数据稀疏

冷启动问题

头部效应明显

矩阵分解算法

缓解数据稀疏问题

泛化能力加强

损失其它相关用户物品和上下文信息

缺乏解释性

逻辑回归模型

模型简单,易于实现

学习各个特征权重,具有可解释性

表达能力较差

没有进行特征组合和特征筛选

因子分解机模型

解决稀疏数据交叉特征组合问题

模型表达能力增强

模型参数多,训练困难

容易过拟合

无法学习三阶及以上特征

梯度提升树+逻辑回归组合模型(GBDT+LR 组合模型)

自动化特征组合端到端训练

减少手工特征组合

泛化能力差

容易过拟合

强烈推荐延伸阅读资料1

深度学习在推荐学习系统的应用,相关模型简介

相比AutoRec模型过于简单的网络结构带来的一些表达能力不强的问题,Deep Crossing模型完整地解决了从特征工程、稀疏向量稠密化、多层神经网络进行优化目标拟合等一系列深度学习在推荐系统中的应用问题,为后续的研究打下了良好的基础。

因为在阅读本书的过程中,在机器学习的实践方面,刚好遇到了特征稀疏的问题,所以对这里的【稀疏向量稠密化】这个方面比较感兴趣。

在下面的Deep Crossing模型介绍中,其对【稀疏向量稠密化】做了具体的说明,“Embedding 层的作用是将稀疏的类别型特征转换成稠密的Embedding向量

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Deep Crossing模型的网络结构为完成端到端的训练,Deep Crossing模型要在其内部网络中解决如下问题。

(1)离散类特征编码后过于稀疏,不利于直接输入神经网络进行训练,如何解决稀疏特征向量稠密化的问题。

(2)如何解决特征自动交叉组合的问题。

(3)如何在输出层中达成问题设定的优化目标。

Deep Crossing模型分别设置了不同的神经网络层来解决上述问题。如图3-6所示,其网络结构主要包括4层——Embedding层、Stacking层、Multiple Residual Units层和Scoring层。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wide&Deep模型

3.6 Wide&Deep模型——记忆能力和泛化能力的综合

Wide&Deep模型的主要思路正如其名,是由单层的Wide部分和多层的Deep部分组成的混合模型。其中,Wide部分的主要作用是让模型具有较强的“记忆能力”(memorization);Deep部分的主要作用是让模型具有“泛化能力”(generalization),正是这样的结构特点,使模型兼具了逻辑回归和深度神经网络的优点——能够快速处理并记忆大量历史行为特征,并且具有强大的表达能力

3.6.1 模型的记忆能力与泛化能力

Wide&Deep模型的设计初衷和其最大的价值在于同时具备较强的“记忆能力”和“泛化能力”。“记忆能力”是一个新的概念,“泛化能力”虽在之前的章节中屡有提及,但从没有给出详细的解释,本节就对这两个概念进行详细的解释。“记忆能力”可以被理解为模型直接学习并利用历史数据中物品或者特征的“共现频率”的能力。一般来说,协同过滤、逻辑回归等简单模型有较强的“记忆能力”。由于这类模型的结构简单,原始数据往往可以直接影响推荐结果,产生类似于“如果点击过A,就推荐B”这类规则式的推荐,这就相当于模型直接记住了历史数据的分布特点,并利用这些记忆进行推荐。

因为Wide&Deep是由谷歌应用商店(Google Play)推荐团队提出的,所以这里以App推荐的场景为例,解释什么是模型的“记忆能力”。

假设在Google Play 推荐模型的训练过程中,设置如下组合特征:AND (user_installed_app=netflix,impression_app=pandora)(简称netflix&pandora),它代表用户已经安装了netflix这款应用,而且曾在应用商店中看到过pandora这款应用。如果以“最终是否安装pandora”为数据标签(label),则可以轻而易举地统计出netflix&pandora这个特征和安装pandora这个标签之间的共现频率。假设二者的共现频率高达10%(全局的平均应用安装率为1%),这个特征如此之强,以至于在设计模型时,希望模型一发现有这个特征,就推荐pandora这款应用(就像一个深刻的记忆点一样印在脑海里),这就是所谓的模型的“记忆能力”。

像逻辑回归这类简单模型,如果发现这样的“强特征”,则其相应的权重就会在模型训练过程中被调整得非常大,这样就实现了对这个特征的直接记忆。相反,对于多层神经网络来说,特征会被多层处理,不与其他特征进行交叉,因此模型对这个强特征的记忆反而没有简单模型深刻。

泛化能力”可以被理解为模型传递特征的相关性,以及发掘稀疏甚至从未出现过的稀有特征与最终标签相关性的能力。矩阵分解比协同过滤的泛化能力强,因为矩阵分解引入了隐向量这样的结构,使得数据稀少的用户或者物品也能生成隐向量,从而获得有数据支撑的推荐得分,这就是非常典型的将全局数据传递到稀疏物品上,从而提高泛化能力的例子。再比如,深度神经网络通过特征的多次自动组合,可以深度发掘数据中潜在的模式,即使是非常稀疏的特征向量输入,也能得到较稳定平滑的推荐概率,这就是简单模型所缺乏的“泛化能力”。

在通过交叉积变换层操作完成特征组合之后,Wide 部分将组合特征输入最终的LogLoss输出层,与Deep部分的输出一同参与最后的目标拟合,完成Wide与Deep部分的融合

深度学习,在推荐系统中的应用,总结:

沿着特征工程自动化的思路,深度学习模型从PNN 一路走来,经过了Wide&Deep、Deep&Cross、FNN、DeepFM、NFM等模型,进行了大量的、基于不同特征互操作思路的尝试。但特征工程的思路走到这里几乎已经穷尽了可能的尝试,模型进一步提升的空间非常小,这也是这类模型的局限性所在。从这之后,越来越多的深度学习推荐模型开始探索更多“结构”上的尝试,诸如注意力机制、序列模型、强化学习等在其他领域大放异彩的模型结构也逐渐进入推荐系统领域,并且在推荐模型的效果提升上成果显著。

Embedding技术在推荐系统中的应用(第4章 )

4.1.3 Embedding技术对于深度学习推荐系统的重要性

回到深度学习推荐系统上,为什么说Embedding 技术对于深度学习如此重要,甚至可以说是深度学习的“基础核心操作”呢?原因主要有以下三个:

(1)推荐场景中大量使用one-hot编码对类别、id 型特征进行编码,导致样本特征向量极度稀疏,而深度学习的结构特点使其不利于稀疏特征向量的处理,因此几乎所有深度学习推荐模型都会由Embedding层负责将高维稀疏特征向量转换成稠密低维特征向量。因此,掌握各类Embedding技术是构建深度学习推荐模型的基础性操作。

(2)Embedding本身就是极其重要的特征向量。相比MF等传统方法产生的特征向量,Embedding的表达能力更强,特别是Graph Embedding技术被提出后,Embedding几乎可以引入任何信息进行编码,使其本身就包含大量有价值的信息。在此基础上,Embedding向量往往会与其他推荐系统特征连接后一同输入后续深度学习网络进行训练。

(3)Embedding对物品、用户相似度的计算是常用的推荐系统召回层技术。在局部敏感哈希(Locality-Sensitive Hashing)等快速最近邻搜索技术应用于推荐系统后,Embedding 更适用于对海量备选物品进行快速“初筛”,过滤出几百到几千量级的物品交由深度学习网络进行“精排”。

所以说,Embedding技术在深度学习推荐系统中占有极其重要的位置,熟悉并掌握各类流行的Embedding 方法是构建一个成功的深度学习推荐系统的有力武器。

Embedding相关技术总结

推荐系统应用——特征工程、召回、冷启动

探索与利用

《淮南子》中有一句话非常有名:“先王之法,不涸泽而渔,不焚林而猎。”否定的是做事只顾眼前利益,不做长远打算的做法。那么在推荐系统中,有没有所谓的眼前利益和长远打算呢?当然是有的。所有的用户和物品历史数据就像是一个鱼塘,如果推荐系统只顾着捞鱼,不往里面补充新的鱼苗,那么总有一天鱼塘中鱼的资源会逐渐枯竭,以至最终无鱼可捞。

这里的“捞鱼”行为指的就是推荐系统一味使用历史数据,根据用户历史进行推荐,不注重发掘用户新的兴趣、新的优质物品。那么,“投放鱼苗”的行为自然就是推荐系统主动试探用户新的兴趣点,主动推荐新的物品,发掘有潜力的优质物品。

给用户推荐的机会是有限的,推荐用户喜欢的内容和探索用户的新兴趣这两件事都会占用宝贵的推荐机会,在推荐系统中应该如何权衡这两件事呢?这就是“探索与利用”试图解决的问题

解决“探索与利用”问题目前主要有三大类方法。

(1)传统的探索与利用方法:这类方法将问题简化成多臂老虎机问题。主要的算法有ε-Greedy(ε贪婪)、Thompson Sampling(汤普森采样)和UCB。该类解决方法着重解决新物品的探索和利用,方法中并不考虑用户、上下文等因素,因此是非个性化的探索与利用方法。

(2)个性化的探索与利用方法:该类方法有效地结合了个性化推荐特点和探索与利用的思想,在考虑用户、上下文等因素的基础上进行探索与利用的权衡,因此被称为个性化探索与利用方法。

(3)基于模型的探索与利用方法:该类方法将探索与利用的思想融入推荐模型之中,将深度学习模型和探索与利用的思想有效结合,是近年来的热点方向

深度学习推荐系统——前沿行业内的工程实践(Facebook、Youtube)

CTR预估、Criteo数据集

推荐系统-工程师能力

推荐延伸阅读材料:

1、智能推荐系统研究综述①

http://c-s-a.org.cn/csa/article/pdf/8403

2、特征交叉与特征融合综述

http://www.360doc.com/content/22/0621/10/35712332_1036842363.shtml

3、深度学习推荐系统(五)Deep&Crossing模型及其在Criteo数据集上的应用

深度学习推荐系统(五)Deep&Crossing模型及其在Criteo数据集上的应用-CSDN博客

4、推荐系统-飞浆深度学习实战 清华大学出版社

http://www.tup.tsinghua.edu.cn/upload/books/yz/094994-01.pdf

5、基于PaddleRec复现经典CTR预估算法

仅需24小时,带你基于PaddleRec复现经典CTR预估算法

6、Click-Through Rate Prediction on Criteo

Criteo Benchmark (Click-Through Rate Prediction) | Papers With Code

7、Torch-Rechub学习分享、Torch-Rechub学习分享1

Torch-Rechub学习分享 - 简书

Torch-Rechub学习分享2 - 简书 (jianshu.com)

8、推荐系统研究进展与应用 - 武汉大学学报

武汉大学学报(理学版) (whu.edu.cn)

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

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

相关文章

网安周报|OpenSSF 推出恶意软件包存储库

1.OpenSSF 推出恶意软件包存储库 为了应对恶意开源软件包日益增长的威胁,开源安全基金会 ( OpenSSF ) 推出了一项名为“恶意软件包存储库”的新计划。该存储库可能会成为打击恶意代码的主要参与者,旨在增强开源软件生态系统的安全性和完整性。该存储库已…

前端开发中遇到的复杂数据求和问题

在js中常用的数学计算库就是Math,但是Math库中没有能够进行求和的方法 那我们有两种解决办法 1.可以使用另外一种库:BigDecimal.js…或者可以去寻找更合适的库进行操作 2.使用reduce函数 首先我们的数据结构大概是这样子,detials里边的数据可…

软件工程与计算总结(二十三)软件工程职业基础

本系列最后一更,《软计》系列总结的大结局!本栏目告一段落,之后会结合真题和练习题再发布新的总结~ 往期链接: 《软件工程与计算》总结 一.软件工程职业 1.行业的发展 20世纪50年代:计算机还是研究型机器&#xff…

STM32基于HAL库RT-Thread Demo测试

STM32基于HAL库RT-Thread Demo测试 🎈源码地址:https://github.com/RT-Thread/rt-thread/tree/master📌基于STM32CUBEMX中间件安装《基于 CubeMX 移植 RT-Thread Nano》📍环境搭建《使用 Env 创建 RT-Thread 项目工程》&#x1f5…

【QT开发(10)】QT 进程

运行一个进程 使用类 QProcess,允许将一个进程堪称一个顺序IO设备。 在Qt中,QProcess类是用于启动外部进程的类。它可以启动任何可执行文件,包括命令行工具和图形用户界面(GUI)应用程序。 启动一个线程分4步 1、在…

探索图像分割技术:使用 OpenCV 的分水岭算法

贾斯卡兰巴蒂亚 一、说明 图像分割是计算机视觉的一个基本方面,多年来经历了巨大的转变。这将是一系列三篇博客文章,深入研究三种不同的图像分割技术 - 1使用OpenCV的经典分水岭算法,2使用PyTorch实现的基于深度学习的UNet模型,3 …

httpd服务

文章目录 httpd服务1.安装httpd服务2.开启服务,设置服务开机自启立马生效,并查看服务状态3.查看监听端口4.关闭防火墙,设置防火墙开机不自启立马生效;关闭selinux5.写一个index.html文件,在真机浏览器访问测试效果6.查…

【活体检测】“深度学习驱动的人脸反欺诈检测系统:性能提升与多模型支持“

微调小视科技开源静默活体检测模型加载方式,性能提升8倍 I. 引言 在当今数字化时代,人脸反欺诈检测在各种应用中发挥着重要作用,从人脸识别到金融欺诈检测。为了满足不断增长的需求,深度学习技术已成为关键工具,但性…

openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制

文章目录 openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制 openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制 数据库对象创建后,进行对象创建的用户就是该对象的所有者。openGauss安装后的默认情况下&#xff0c…

PowerShell 实现email发送消息

前言 通过Windows powershel​​​​​​​l脚本实现邮件发送 前提条件 开启wmi,配置网卡,参考 脚本说明解释 配置SMTP服务器信息 $smtpServer = "smtp.qiye.163.com"$smtpPort = "25"$username = "XXXX@YOU_email"$password = "YOU_…

改造xxl-job适配nacos注册中心

xxl-job并没有对nacos、zookeeper这一类注册中心进行适配,所以需要进行改造。 改造目标 1.对调度器,需要能注册到nacos上,并且执行器管理里的 机器地址 能使用 lb://serviceName 这种地址 2.对执行器,需要能注册到nacos上&…

激活MacBook的时候有个“文件保险箱磁盘加密“的选项,要不要开启

背景 在激活MacBook的时候,如果填了Apple ID,就会有 “文件保险箱磁盘加密” 的选项,到底是开还是不开呢? 注意,如果激活时跳过Apple ID,则没这选项,可以后续在 “设置->安全性和隐私->文…

天鹰340亿(AquilaChat2-34B-16K)本地部署的解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

用WordCloud绘制词云

文章目录 初步认识基本参数掩模参数 初步认识 wordcloud是词云绘图模块,封装了WordCloud词云类,是词云的基本载体。在新建一个词云之后,通过generate装载用以生成词云的字符串,最后用to_file把词云图保存到文件中,例如…

TechSmith Camtasia Studio 23.3.2.49471 Crack

全新的Camtasia 2023.2 Camtasia Studio是专业的屏幕录像和视频编辑的软件套装。软件提供了强大的屏幕录像(Camtasia Recorder)、视频的剪辑和编辑(Camtasia Studio)、视频菜单制作(Camtasia MenuMaker)、视…

基于沙猫群优化的BP神经网络(分类应用) - 附代码

基于沙猫群优化的BP神经网络(分类应用) - 附代码 文章目录 基于沙猫群优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.沙猫群优化BP神经网络3.1 BP神经网络参数设置3.2 沙猫群算法应用 4.测试结果&#x…

Linux常用命令——cmp命令

在线Linux命令查询工具 cmp 比较两个文件是否有差异 补充说明 cmp命令用来比较两个文件是否有差异。当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有差异,预设会标示出第一个不通之处的字符和列数编号。若不指定任何文件名称或是…

TIA博途中通过SCATTER指令实现将字节BYTE拆分成单个位的具体方法示例

TIA博途中通过SCATTER指令实现将字节BYTE拆分成单个位的具体方法示例 例如: 我们想判断某个字节中各个位的状态是1还是0 ,如何实现呢? 这里介绍通过SCATTER指令拆分字节的方法,仅供大家参考。 首先,我们先了解以下SCATTER指令的基本功能和使用方法: 如下图所示,在基本指…

无纸化办公小程序数据交互、wxs的使用

前言 很多同志们再写小程序的过程中,不知道该怎么发起HTTP请求到后端,在Web环境中发起HTTPS请求是很常见的,但是微信小程序是腾讯内部的产品,不能直接打开一个外部的链接。例如,在微信小程序中不能直接打开www.taobao…

冒泡排序、插入排序、选择排序和快速排序的原理

下面是对冒泡排序、插入排序、选择排序和快速排序的原理的简要解释: 冒泡排序(Bubble Sort):冒泡排序是一种简单的排序算法。它通过多次迭代比较相邻的元素,并交换它们的位置,使得较大(或较小&…