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

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

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

《深度学习推荐系统》超级详细读书笔记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.rhkb.cn/news/168429.html

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

相关文章

【PSO-RFR预测】基于粒子群算法优化随机森林回归预测研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

1024程序员节特辑 | 深度解析C/C++内存管理(建议收藏!!)

1024程序员节特辑 | 深度解析C/C内存管理(建议收藏!!) 一、C/C内存分布1.1 相关例题 二、 C语言中动态内存管理方式:malloc/calloc/realloc/free2.1 相关面试题 三、C内存管理方式3.1 new/delete操作内置类型3.2 new和…

LeetCode刷题---简单组(一)

文章目录 🍒题目一 507. 完美数🍒解法一 🍒题目二 2678. 老人的数目🍒解法一 🍒题目三 520. 检测大写字母🍒解法一🍒解法二 🍒题目一 507. 完美数 对于一个 正整数,如果它…

【茫茫架构路】1. Class File字节码文件解析

本文所有内容的JDK版本为 OpenJDK 11 JDK11 Class File官方说明。 Java解析字节码文件源码参考,以下为部分字节码解析源码展示。 public ClassFile(DataInputStream in) {try {//magic: 0xCAFEBABEthis.magic ClassReader.readInt(in);System.out.println("m…

【C++】继承 ⑧ ( 继承 + 组合 模式的类对象 构造函数 和 析构函数 调用规则 )

文章目录 一、继承 组合 模式的类对象 构造函数和析构函数调用规则1、场景说明2、调用规则 二、完整代码示例分析1、代码分析2、代码示例 一、继承 组合 模式的类对象 构造函数和析构函数调用规则 1、场景说明 如果一个类 既 继承了 基类 ,又 在类中 维护了一个 其它类型 的…

Java基础(第一期):IDEA的下载和安装(步骤图) 项目结构的介绍 项目、模块、类的创建。第一个代码的实现

文章目录 IDEA1.1 IDEA概述1.2 IDEA的下载和安装1.2.1 下载1.2.2 安装 1.3 IDEA中层级结构介绍1.3.1 结构分类1.3.2 结构介绍project(项目、工程)module(模块)package(包)class(类) …

如何能够获取到本行业的能力架构图去了解自己的能力缺陷与短板,从而能清晰的去弥补差距?

如何能够获取到本行业的能力架构图去了解自己的能力缺陷与短板,从而能清晰的去弥补差距? 获取并利用能力架构图(Competency Model)来了解自己在特定行业或职位中的能力缺陷和短板,并据此弥补差距,是一个非常…

BetaFlight飞控AOCODAF435V2MPU6500固件编译

BetaFlight飞控AOCODAF435V2MPU6500固件编译 1. 源由2. 准备2.1 板子2.2 代码2.3 工具 3. 配置修改4. 编译4.1 获取代码4.2 获取配置4.3 编译固件4.4 DFU烧录4.5 版本核对 5. 总结6. 跟踪问题 1. 源由 刚拿到一块Aocoda F405V2 (MPU6500) AT32F435飞控板(替换主控芯片)。 Ao…

css伪类元素使用技巧 表达input父级聚焦css实现

:focus-within 可以让它自己被聚焦或者它的后代元素被聚焦input 中有required 加星号在这里插入图片描述

Rust 中的String与所有权机制

文章目录 一、string二、所有权2.1 所有权与作用域2.2 对所有权的操作2.2.1 转移2.2.3 拷贝2.2.3 传递 2.3 引用2.3.1 借用2.3.2 可变引用 一、string 之前学习过 Rust 只有几种基础的数据类型,但是没有常用的字符串也就是String,今天来学习一下 String…

Qt中QFile、QByteArray QDataStream和QTextStream区别及示例

在Qt中,QFile、QByteArray、QDataStream和QTextStream是常用的文件和数据处理类。 主要功能和区别 QFile: QFile是用于读写文本和二进制文件以及资源的I/O设备。可以单独使用QFile,或者更方便地与QTextStream或QDataStream一起使用。 通常在…

紫光同创FPGA实现PCIE测速试验,提供PDS工程和Linux QT上位机源码和技术支持

目录 1、前言免责声明 2、我已有的PCIE方案3、设计思路框架PCIE硬件设计PCIE IP核添加和配置驱动文件和驱动安装QT上位机和源码 4、PDS工程详解5、上板调试验证并演示6、福利:工程代码的获取 紫光同创FPGA实现PCIE测速试验,提供PDS工程和Linux QT上位机源…

机器学习(新手入门)-线性回归 #房价预测

题目:给定数据集dataSet,每一行代表一组数据记录,每组数据记录中,第一个值为房屋面积(单位:平方英尺),第二个值为房屋中的房间数,第三个值为房价(单位:千美元…

笔记39:在Pycharm中为项目添加新解释器

很久不用pycharm都生疏了 a a a 第一步:创建虚拟环境 略 a a a 第二步:将虚拟环境应用到项目中去 【File】----【Settings】----【Project:~~~】-----【Project Interpreter】----【选择合适的解释器】 ​​​​​​​ 因为我们要用新的解释…

浅析 C# Console 控制台为什么也会卡死

一:背景 1. 讲故事 在分析旅程中,总会有几例控制台的意外卡死导致的生产事故,有经验的朋友都知道,控制台卡死一般是动了 快速编辑窗口 的缘故,截图如下: 虽然知道缘由,但一直没有时间探究底层…

SpringBoot2.x简单集成Flowable

环境和版本 window10 java1.8 mysql8 flowable6 springboot 2.7.6 配置 使用IDEA创建一个SpringBoot项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.…

网络协议--IP选路

9.1 引言 选路是IP最重要的功能之一。图9-1是IP层处理过程的简单流程。需要进行选路的数据报可以由本地主机产生&#xff0c;也可以由其他主机产生。在后一种情况下&#xff0c;主机必须配置成一个路由器&#xff0c;否则通过网络接口接收到的数据报&#xff0c;如果目的地址不…

原型与原型链

一、原型&#xff1a;prototype 1.什么是原型&#xff1f; javascript常被描述为一种基于原型的语言&#xff08;每个对象都拥有一个原型对象&#xff09; 当访问一个对象的属性时&#xff0c;它不仅在该对象上寻找&#xff0c;还会寻找该对象的原型&#xff0c;以及该对象原…

Git学习笔记——超详细

Git笔记 安装git&#xff1a; apt install git 创建版本库&#xff1a; git init 添加文件到版本库&#xff1a; git add 文件 提交文件到仓库&#xff1a; git commit -m “注释” 查看仓库当前的状态信息&#xff1a; git status 查看修改内容和之前版本的区别&am…

阿里云服务器x86计算架构ECS实例规格汇总

阿里云企业级服务器基于X86架构的实例规格&#xff0c;每一个vCPU都对应一个处理器核心的超线程&#xff0c;基于ARM架构的实例规格&#xff0c;每一个vCPU都对应一个处理器的物理核心&#xff0c;具有性能稳定且资源独享的特点。阿里云服务器网aliyunfuwuqi.com分享阿里云企业…