入"坑"推荐系统,从Google这篇课程开始

Google机器学习速成课程:从入门到实战的完整指南 机器学习作为人工智能的核心技术,通过算法让计算机从数据中学习规律。其核心原理包括模型训练、特征工程和性能评估等环节,在推荐系统、图像识别等领域有广泛应用。Google的机器学习速成课程(MLCC)采用可视化教学和工业级实战案例,特别适合初学者快速掌握梯度下降、神经网络等关键概念。课程涵盖从线性回归到大语言模型的全套内容,并融入AutoML、TFX等前沿工具,帮助学习者避开常见陷阱,建立正确的工程思维。通过Kaggle实战和Colab GPU加速,能有效实现从理论到生产的平滑过渡。 阅读详情

推荐系统内容实在太丰富了,以至于刚开始学的人都无从下手,当年时晴无意中翻到谷歌这篇教程,然后就开启了入"坑"推荐系统的神奇旅程,极力推荐给大家,大家也可以推荐给想学推荐系统的童鞋们。该课程标明预估学完要用4个小时,那这篇的重点就是带大家15分钟内学完。(本篇内容较为基础,大牛们略过)

大规模推荐系统

YouTube是怎么知道你要看的下个视频是啥的呢?Google应用商店又是如何选择哪款app展示给你的呢?为什么要有推荐系统呢?谷歌应用商店有上百万app,YouTube有上亿视频,然后app和视频数每天还会增加,我们不可能指望给一个搜索框,让用户自己搜视频或者app,有些用户可能根本不知道自己想看什么或者下载什么,值得注意的是,谷歌应用商店40%的app安装都是来自于推荐系统,YouTube 60%视频观看时间都是来自于推荐系统。

相关术语:

Items(documents)

推荐系统推荐的实体,对于YouTube就是视频,对于Google应用商店就是app。

 

Query(context)

推荐系统用query的信息进行推荐,query信息包括用户信息(用户id,用户交互特征)和上下文信息(时间,设备)。

 

Embedding

离散值到向量空间的隐射,大部分的推荐系统都是基于学到的item和query的向量表达来做推荐的。

推荐系统概述

推荐系统主要由3个部分组成,候选集生成(召回),粗排,精排。

召回可以天马行空,从各个角度召回不同items集合取并集,最后召回的items数量是远远小于所有items数量的。因为召回数目已经被限定了,所以可以使用更加精确的模型对items进行排序。精排要考虑的内容比较多,要除了排序还要考虑多样性,新鲜度,公平性。

候选集生成

两个常用的方法就是基于内容推荐和协同过滤。基于内容推荐就是用items的相似度,推荐用户喜欢什么。比如用户A喜欢看可爱的猫相关视频,那就可以给他推可爱的动物相关视频。协同过滤是同时考虑queries和items的相似度进行推荐,比如用户A和用户B相似,推荐系统可以推荐某个视频给用户A因为用户B喜欢看这个视频。

 

因为我们已经把queries和items映射到了向量空间,并且需要获得相似度,这就牵涉到了相似度计算公式。目前推荐系统常用的相似度计算公式如下:

Cosine

Dot product

Euclidean distance

需要注意的是,如果向量被归一化,这3种度量方式就等效了,因为:

使用不同的度量公式,最终推荐结果区别也是很大的,比如下图1个query向量和3个item向量

如果采用不同的度量方式,排序如下:

所以应该选择什么样的度量方式呢?从公式,我们可以知道,dot product对embedding的长度比较敏感,如果embedding长度越长,则该item更容易被推荐。如果一个items在训练级出现的频率较高,并行用dot来度量,那么热门的items的embedding相比较冷门items就会很大,所以dot学到了items的流行度,如果你不想让流行度主导推荐结果,可以对相似度做缩放,如下所示:

值得注意的是,一些冷门item由于在训练过程中出现较少,很容易受随机初始化的影响,如果你初始化一个长度很大的值,那这个冷门item更容易被错误推荐,所以我们需要用适当的初始化方法,并使用正则化。

两种常用推荐方法

基于内容的协同过滤,如下图所示,需要专家人工挖掘出大量特征,如果user和item有这个特征,就标为1,如下图所示。然后就可以dot计算相似度,我们可以知道,如果一个user和一个item在某一个特征都是1,那最终dot就会累计1,如下图女孩和第一个app 都有Education和Science R Us特征,所以它们点积为2,所以图中app推荐第一个app给她。

优点:模型不需要知道其他用户的任何数据,这样可扩展性比较高。

缺点: 模型只能理解用户特定的兴趣,且完全不利于冷启动。

 

协同过滤同时使用了users和items的相似度,基于用户之间相似兴趣做推荐,不像基于内容需要人工特征,users和items的embedding可以自主学习。用电影推荐系统举例,训练数据是一个反馈矩阵,每行表示一个user,每列表示一个电影。每个反馈有两种情况,一种是显式的,即user对item有打分的,一种种隐式的,需要系统推断该打分。为了简化,我们假设打分就两种,0表示不感兴趣,1表示感兴趣。基于这份数据,推荐系统会推荐两种情况的电影。1是用户以往看过的电影相似的电影;2是相似用户喜欢的电影。

 

假设user和item的embedding是1维的,对于user而言,向量接近1表示他喜欢成人电影,向量接近-1表示他喜欢儿童电影,对于电影而言,越接近1表示是成人电影,越接近-1是儿童电影,每个user和item的向量如下图:

然后我们按dot计算相似度,dot越接近1表示越感兴趣,然后我们看下这4个人真实看电影的情况。

我们看下上图中最后两个人,如果按照dot推荐前两部电影,推荐是准确的,但是对于上面两个人,就完全错了。所以1维向量有泛化能力,但是泛化能力很弱。

 

于是我们增加特征,变成2维向量,增加了一个特征表示是大片还是艺术片,如下图:

 

同样,我们用dot方式,计算user和item的分数表示用户对电影的偏好。如下图中的问号,就是0.1 * 1 + 1 * -1 = -0.9,表示该用户对该电影没兴趣。这里是直接指定user和item的embedding的,实际是自动学习到的,接下来就说到矩阵分解。

 

给定一个反馈矩阵Rm*n,m是user数量,n是item数量,要学到user向量Um*d,和item向量Vn*d,最后使得UV约等于Ai,j即可,如下图:

我们希望UV约等于Ai,j,所以这里需要制定目标还是,最简单的就是计算UV与Ai,j有值部分之间的mse了,如下式:

但是这种方式,只计算了有值部分的误差,我们知道Ai,j是非常稀疏的,因此用上述公式优化可能导致模型泛化能力较弱,所以又有了各种优化目标:

如果把未观测的都填成0,也是有问题的,这样UV就会解决0矩阵,导致模型泛化能力弱。所以给未观测的损失,给一个权重w0,调整这个w0对最终模型泛化能力影响比较大。

解决上述优化问题大致有两种,一种是SGD(随机梯度下降)。另一种是WALS,随机初始化embedding后,先固定U,求V,再固定V求U,如此反复,这种方式一定会收敛,因为每一步loss一定会降低。

SGD vs WALS

SGD:

1、非常灵活,可以用其他目标函数

2、可以并行

3、收敛慢

4、很难处理未观测的部分(需要负采样)

WALS:

1、只能用平方误差

2、可以并行

3、比SGD收敛快

4、处理未观测数据较快

矩阵分解相比较基于内容推荐,不需要领域知识,推荐更具探索性,只需要一个反馈矩阵即可训练推荐模型,操作简单。缺陷也比较明显,有明显的冷启动问题,同时也很难加入其它特征提高模型泛化性。当然,矩阵分解可以通过某种方式解决上述问题,比如冷启动,可以通过WALS更新最新的user和item向量,而不需要重train模型,再简单些,直接把相同类目item的embedding平均后作为新的item的embedding。

 

后续还有实战部分,放在下一篇介绍。

参考资料

https://developers.google.com/machine-learning/recommendation/overview


觉得还不错就给我一个小小的鼓励吧!


推荐系统与应用 七月在线4月机器学习算法班课程笔记——No.9 前言  推荐系统——我早就很感兴趣的一个方向,可以说是机器学习在各个公司广泛应用的一个内容,从求职招聘就可以感觉到。另外,我们也经常在使用推荐系统,比如以推荐为特色的今日头条(你关心的,才是头条),还有淘宝的商品推荐等。曾经试图在网络上了解推荐系统,但都是零散的内容,不是太系统。这次算是有条理的学习了,get到了之前好奇的问题,自然要好好整理。 阅读详情

相关推荐

【Google Paper】对比学习用于解决推荐系统长尾问题

主要分享 《self-supervised learning for large-scale item recommendations》如何采用对比学习解决推荐长尾问题

sybil_wu的博客 1314

一文看懂推荐系统:谷歌YouTubeDNN(Deep Neural Networks for YouTube Recommendations),这适合召回,专门搞user embedding的,配合

youtubeNet已经很古老了,适合召回,反正就是搞清楚usr embedding的过程呗,配合item embedding,就可以做双塔模型召回了,另外,独特的场景,考虑独特的特征,很重要,视频推荐,图文推荐,美食推荐,各有不同的场景的...

weixin_46838716的博客 9700

元数据管理:DataHub和OpenMetadata对比分析

DataHub和OpenMetadata都试图解决数据编目,搜索,发现,治理和质量方面的相同问题。这两种工具都是出于为需要支持大量数据源、团队和用例的大型组织解决这些问题而诞生的。尽管这些工具在发布历史和成熟度方面略有不同,但它们的功能存在显着重叠。

weixin_38030820的博客 6635

Google AI专家为你分享 YouTube 推荐系统算法

转自微信公众号:GDG 分享嘉宾 崔翱翔 谷歌上海资深工程师 现任职于谷歌机器视觉处理团队,主要参与机器视觉模型的部署和模型的量化,支持 CloudVision, Google Photos, Google Lens, Gmail 等产品的图像处理。复旦大学数学系博士,对机器视觉、人工智能有浓厚兴趣。   我今天要分享的是应用在 Google Play 和 YouTube 两个 Goo...

简言 6206

告别Modern Standby烦恼:在Windows 11中手动启用S3睡眠模式的完整指南

本文详细介绍了如何在Windows 11中手动启用S3睡眠模式,解决Modern Standby(S0模式)导致的笔记本睡眠后耗电问题。通过注册表修改、电源选项调整、BIOS设置等步骤,帮助用户恢复传统深度睡眠功能,显著提升电池续航表现。

weixin_30271335的博客 559

麦克风声源定位原理_声源定位—如何定位到噪声根源?

前言TPA(传递路径分析)专题系列已经开篇。其遵循方法论:源(Source)——路径(Path)——响应(Receiver)有人说TPA好,它可以识别出路径处甚至源的载荷特征,可以量化各个路径的贡献量。有人说声源定位好,不管东西南北中,“源”自其中。但是,声源定位识别出来色彩丰富的一个结果,这结果被您拿来应付工作了,还是真正帮您解决了问题?声源定位定位到了噪声的根源了么?对于一些声源现,...

weixin_39943678的博客 3974

Google官方开源的推荐系统工具库介绍(含视频教程)

说明:文章内容仅供学习使用,如有侵权请联系删除 编辑:搜索与推荐Wiki 参考: 1.谷歌开源推荐系统库(TensorFlow Recommenders) 2.中文视频 | TF Recommenders 系列视频教程 TensorFlow Recommenders TensorFlow推荐器是一个使用TensorFlow构建推荐系统模型的库。它有助于构建推荐系统的全部工作流程:数据准备、模型制定、训练、评估和部署。它构建在Keras上,目标是让学习者有一个平缓的学习曲线,同时仍然给你构建复杂模型的灵活

Thinkgamer博客 2068

激光定位算法竞技场:hdl_localization与Cartographer/AMCL的横向技术解剖

本文深入对比了hdl_localization、Cartographer和AMCL三种激光定位算法的技术原理与性能表现。通过UKF-NDT融合、图优化和粒子滤波等核心技术,分析了各算法在结构化环境、动态环境和大尺度场景下的适应性。实验数据表明,Cartographer在全局一致性上表现最优,而AMCL在动态环境中更具鲁棒性。文章还提供了算法选型指南和参数调优技巧,为工程实践提供参考。

weixin_29062865的博客 367

【创新实训】推荐系统召回学习

Reference 个性化推荐系统_召回 推荐系统简明教程-召回 推荐系统的召回策略 架构 1.离线方式:离线的model file算出推荐结果,这些推荐结果可以是用户喜欢哪些item,也可以是item之间的相似度文件,然后写入KV存储,在线的server recall部分直接调用这个结果,拿到ID之后访问detail server得到详情,再往rank部分传递。 2.半在线模式:将model file算出来的item embedding也存入KV,然后tf-server调用在线model 生成 user

_Mogician的博客 372

八股文(Unity篇)

在Unity中,协程是通过迭代器实现的,即将协程函数的返回值类型定义为IEnumerator,然后使用yield语句暂停协程的执行,并在需要恢复执行时通过MoveNext()方法继续执行。Unity中的协程是一种能够在主函数中暂停和恢复执行的功能,它使用了C#的迭代器。Resources方式:Resources方式:使用Resources.Load方法加载Resources文件夹下的资源,这种方式的好处是简单易用,无需手动打包资源,但是会导致应用包变得较大,加载速度较慢,不适合较大的资源文件。

m0_50816320的博客 1万+

利用ArcGIS快速生成等高线边界,完成地形图拼图

地形图边界一般在CAD中手动绘制,然而,一幅边缘复杂的地形图边界的绘制需要花费大量时间和精力,为了减少重复性工作,提高效率,用ArcGIS软件可以自动生成实测地形图的边界

yl14774636230的博客 9070

谷歌:使用大模型构建端到端的对话式推荐系统

最近,大型语言模型(LLM)表现出了前所未有的自然对话能力,并将世界知识和常识推理融入语言理解中,释放了这种范式的潜力。然而,在对话式推荐系统 (CRS) 中有效利用大模型带来新的技术挑战,包括正确理解和控制复杂的对话以及从外部信息源检索。本文提供了一个使用大模型来构建端到端大规模对话推荐系统的路线图。具体的,其提出了用户偏好理解、对话管理和可解释推荐的新实现,并将其作为LLM驱动的集成架构的一部分。为提高个性化,本文描述了大模型如何使用可解释的自然语言配置文件,并使用它们来调整会话级上下文。

2401_85375186的博客 1594

合规批量下载美国上市公司年报数据的一些经验和总结

本文总结了使用Python脚本批量下载和处理美国上市公司SEC报告的技术经验。通过CIK代码查询SEC EDGAR系统,生成特定日期和报告类型的URL,并使用Selenium和Requests库下载报告内容。流程包括数据获取、文件下载、Excel处理和多线程优化,确保高效处理几百条数据。关键技术挑战包括SEC访问限制、动态网页内容和数据完整性,解决方案包括设置合规的User-Agent、使用Selenium模拟浏览器行为以及错误日志记录。最佳实践包括模块化设计、多线程优化和严格遵守SEC合规性。该自动化流程

jyfool的博客 1640

入坑推荐系统,从Google这篇开始

推荐系统内容实在太丰富了,以至于刚开始学的人都无从下手,当年时晴无意中翻到谷歌这篇教程,然后就开启了入"坑"推荐系统的神奇旅程,极力推荐给大家,大家也可以推荐给想学推荐系统的童鞋们。该课程标明预估学完要用4个小时,那这篇的重点就是带大家15分钟内学完。(本篇内容较为基础,大牛们略过)大规模推荐系统YouTube是怎么知道你要看的下个视频是啥的呢?Google应用商店又是如何选择哪款app展示给你的...

炼丹笔记 506

Cesium 实战 28 - 三维视频融合(视频投影)

Cesium 实战 27 - 三维视频融合(视频投影)。

非科班Java出身GISer的博客 3371

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

基于Google Reader发展起来的个性化推荐系统之三大问题

中科院的xlvector(即项亮,他所在的团队The Ensemble在7月份获得Netflix大奖赛公开测试排名第一,但在9月22日Netflix宣布BPC获胜,原因据说只是因为项亮他们提交结果晚了20分钟)最近发布了一个小工具GRSuggest,有点像之前Kuber在FeedzShare所做过的“个性化阅读”,都属于“基于某个Google Reader用户的Shared Items中的

benpaobagzb的博客 775

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Google提出用对比学习解决推荐系统长尾问题

关注 ▲对白▲ 和百万AI爱好者,一起向上生长这是对白的第 87 期分享作者 l 知乎@吴家丫头1990    出品 l 对白的算法屋大家好,我是对白。本文主要分享一下Google今年提出的《Self-supervised Learning for Large-scale Item Recommendations》如何采用对比学习解决推荐长尾问题 。一、 定义长尾效应:20%的热门item占据了80%的曝光量,剩下80%的小众、

5031

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

国内最强算法推荐系统,字节第二,它排第一!

如果说阿里技术架构最亮眼的部分是中台,那字节全系产品的最强竞争力,毫无疑问,一定是推荐系统。刚打开抖音,喜欢的内容已经在播放了;刚打开淘宝,想买的商品都展示在眼前了。字节、阿里的推荐系统,...

chengjun_java的专栏 3157

DeepMind改进的Google Play Store推荐系统要点解析

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”作者:Michelle Gong, Anton Zhernov编译:ronghuaiyang导读DeepMind和Google ...

AI公园 834

35岁,搞过超高并发架构,依然没看懂字节的推荐系统!

如果说阿里技术架构最亮眼的部分是中台,那字节全系产品的最强竞争力,毫无疑问,一定是推荐系统。刚打开抖音,喜欢的内容已经在播放了;刚打开淘宝,想买的商品都展示在眼前了。字节、阿里的推荐系统,...

中生代技术 1303

国内最强推荐系统架构,字节第二,它排第一!

如果说阿里技术架构最亮眼的部分是中台,那字节全系产品的最强竞争力,毫无疑问,一定是推荐系统。刚打开抖音,喜欢的内容已经在播放了;刚打开淘宝,想买的商品都展示在眼前了。字节、阿里的推荐系统,...

中生代技术 2616

Google Research图神经网络:GCN与GAT在推荐系统中的应用

你是否曾好奇,当你在电商平台浏览商品时,那些"猜你喜欢"的推荐是如何精准命中你的需求?在信息爆炸的时代,传统推荐算法面临着数据稀疏性和冷启动的双重挑战。Google Research团队提出的图神经网络(Graph Neural Network, GNN)技术,特别是图卷积网络(Graph Convolutional Network, GCN)和图注意力网络(Graph Attention Net...

gitblog_00590的博客 916

国内最强算法推荐系统,百度第二,它排第一!

如果说阿里技术架构最亮眼的部分是中台,那字节全系产品的最强竞争力,毫无疑问,一定是推荐系统。刚打开抖音,喜欢的内容已经在播放了;刚打开淘宝,想买的商品都展示在眼前了。字节、阿里的推荐系统,...

我爱计算机视觉 1466

推荐系统变天了!Google和腾讯同时出手,LLM的两大技术路线首次正面硬刚!

大型语言模型(LLM)在推荐系统中的应用正处于爆发期。当前研究主要面临两大挑战:一是如何在不引入高昂训练成本的前提下有效融合协同信号;二是在进行微调(Fine-tuning)时如何解决嵌入坍塌(Embedding Collapse)与灾难性遗忘(Catastrophic Forgetting)问题。

Androiddddd的博客 892

CIKM 2021 | Google出品:将对比学习用于解决推荐系统长尾问题

©作者 |Sybil Wu单位 |明略科技集团研究方向 |NLP、推荐算法本文主要分享一下 Google 发表于 CIKM 2021 的文章如何采用对比学习解决推荐长尾问题。论文标题...

Paper weekly 816

「从零入门推荐系统」13:推荐系统排序算法之wide & deep、YouTube深度学习排序...

作者|gongyouliu编辑 |gongyouliu我们在上一章讲解了常用的3种基础排序算法,本章我们接着讲解2种经典的深度学习排序算法,即Google的wide & deep和YouTube的深度学习排序。这2个算法是国外大厂在真实业务场景中得到验证的、有真实业务价值的方法,并且也被中国广大互联网公司应用于自己的业务中,是得到业界一致认可的算法。虽然这2个算法是在大约2016年左...

大数据与人工智能 1228
上一篇: PyTorch || 优化神经网络训练的17种方法
下一篇: 一个CV算法工程师的小反思
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值