推荐系统基本概念及架构说明|学习笔记

简介: 快速学习推荐系统基本概念及架构说明

开发者学堂课程【跟阿里云技术专家学习智能推荐系统 推荐系统基本概念及架构说明】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/662/detail/11074


推荐系统基本概念及架构说明


内容介绍:

一、引言

二、课程介绍

三、什么是推荐系统

四、个性化推荐业务流程

五、企业级推荐系统架构

 

一、引言

之前的课程中是对机器学习在文本推荐在视觉各方面领域做了一个比较的概述,今天一系列课程想基于推荐这样一个企业级的解决方案去做一个详细的分享,之所以选择推荐这个架构是因为当我们去探索整个机器学习的业务,我们发现在互联网应用中,特别是我们平时常用的手机APP里,前1000名的 APP 里,大约有80%的 APP 里面或多或少都有推荐营销广告这样的场景,如何构建这种企业级的架构,是系列视频要重点介绍的内容第一课会重点介绍企业推荐系统的基本概念架构,然后把课程大纲给大家做一个分享


二、课程介绍

课程1:推荐系统基本概念及架构说明

课程2:推荐系统召回算法级架构说明

课程3∶推荐系统排序算法级架构说明

课程4∶推荐系统线上服务编排

课程5∶实操10分钟实现一个简单的推荐系统

在第一课会把框架大家做一个介绍从第二开始会重点介绍推荐里面的召回算法,他是怎么样去运作的有哪些种类以及其他一些具体的使用情况,有哪些需要注意又有哪些算法效果第三会介绍排序算法包括常用的排序算法;第四是整个推荐业务的线上编排即各种算法模型怎么样在线上去变成一个服务第五课会基于整个阿里云 PAI 去做一个基于召回算法的一个简单的推荐系统的代码

 

三、什么是推荐系统

1、概念

推荐系统的诞生其实是伴随着互联网的发展,人们可以涉猎到更多的资讯,比如当用户进入到淘宝的平台,发现有更多的商品,当商品变多之后,如何将适合用户的商品去完成推送这就成了淘宝或者说这样一个系统应用需要解决一个问题所以本质上推荐系统,解决的是一个信息比对的问题怎样将用户的信息与商品的信息去做一个更好的匹配。

推荐系统可以理解为推荐算法和系统工程的一个总和,目前很多的书或者说很多网上的一些资料更多的是聚焦到算法,包括很多 paper 都会说推荐算法使用什么,但是当真正去搭建这套业务系统的时候,特别是在云上做成这套系统时,会发现系统工程面临的可能会面临更多的问题,比如说性能的问题、最后线上模型服务的PPS的延时是否达标,是否真正能在30毫秒内返回结果。比如一个数据存储的问题,数据存到哪里可以更快的反馈给模型,而平时离线数仓的数据又该怎么存储。

对于线上的数据处理问题,一个p的日志数据要怎么处理?对于实时流的数据是否需要用 Flint 去做一个实时的数据仓。

2、常见应用场景

大家平时在用各种手机 APP 的时候,其实已经对很多的推荐场景或多或少有些了解了,常见的推荐场景有两个,一个是基于搜索 Query 推荐,还有一个是基于用户和商品属性的 Feed 流推荐。

l 基于搜索 Query 推荐

例如当用户搜索口罩,搜索后展示的肯定都是跟口罩相关的东西,因为口罩的种类很多,搜索结果可能多达一万多个,哪些口罩排在前面,哪些口罩排在后面,这时就需要有推荐系统,需要根据这个用户属性,该用户喜欢的颜色或者他的价格偏好等,将搜索结果进行排序。

比如说该用户喜欢昂贵的商品,喜欢买奢侈品,肯定把昂贵的、性能好的口罩排在前面;

比如说另一个用户是一位价格比较敏感的用户,可能就要把价格稍微便宜,性价比高的口罩排在前面。综合来说,Query 要集合用户的购买偏好以及商品的属性,去做一个 match。

l 基于用户和商品属性的 Feed 流推荐

Feed 流推荐现在越来越成为很多 APP 跟用户交互的主流,例如当我们打开虎扑,打开今日头条这样的 APP 会发现首页的新闻,都是根据我们日常的偏好去推荐的。例如某个用户喜欢篮球相关的新闻,那他可能更多的会把体育相关内容推荐给该用户。

基于用户和商品的 Feed 流推荐需要机器学习推荐模型,既要学习用户也要学习商品的属性,所以今天介绍的推荐系统的整个架构就是给大家介绍在底层如何实现用户的属性与商品属性的完成匹配,此课程更多的是偏向于基于用户、商品属性的 Feed 流场景。

 

四、个性化推荐业务流程

推荐业务的简图如下:

image.png

假设有一个新闻平台,这个平台上有非常多的新闻,用户进来后有一个 ID,比如说UserID:A,这个平台上成千上万的商品或者新闻,可以把它们称为 Item,而每一个 Item 也有一个 ID,比如说 Item123依次像这样排列下去。

现在需要从这10万个 Item 中筛选出 A 喜欢的商品或新闻,并投送到第一屏上,要完成这件事究竟在底层的业务架构有哪些模块呢?

首先在一个经典的推荐召回系统里面有两个模块,第一个叫召回模块,第二个叫排序模块,召回模块把10万件商品做一个初步筛选,选出a可能喜欢的,比如说500个商品先放到一边。

这个时候再去排序,因为走完召回后,我们并不知道用户A最喜欢的是1还是喜欢2,只能知道 A 大致喜欢的内容会在这500个候选集里,在排序模块里要对这1到500件商品做一个排序,哪个是A最喜欢的,哪个对于A来说是第二喜欢的,最终可以按照A的喜爱顺序去制定投放给A的商品列表。所以在整个推荐业务中,召回模块更多的是初步筛选,确定出一个大体的范围,这样的话可以加速排序模块对于每个商品属性的排序速度。

设想一下,如果没有召回模块,直接对10万个商品和用户 A 进行排序,它的速度会非常慢。每进入一个APP就要等待几秒钟甚至等待一分钟的时间后才能反馈出推荐的内容,用户肯定忍受不了这种等待,所以说通过召回模块的初步筛选,然后再仔细排序,整体的反馈效率更高,这样的话,基本上一个专业推荐系统可以做到几十毫秒内,即当用户一进来就可以给他反馈出要推荐的内容。

对 Feed 流的内容用户刷一下屏幕,可能几十毫秒内就可以收到新的一个推荐。


五、企业级推荐系统架构

1、企业级推荐系统架构的目标:

百万+级 MAU 应用的推荐业务

2、企业级推荐系统架构的需求

亿级别样本训练

算法插件化部署

每次请求毫秒级反馈

支持资源弹性拓展

首先企业级推荐系统架构的目标客户有百万级MAU的业务需求,而要达到百万级 MAU 的应用,每一次参与模型训练时整个的样本数量可能是上亿级别需要整个平台过去一个月甚至半年的数据完成整体的建模因为在这些领域模型越大,推送结果越精准

所需数据可以三种,一个用户的行为数据,一个是商品的行为数据以及用户商品之间的交互的数据

第二要有算法插件化部署的能力,机器学习领域包括推荐领域发展特别快,每年都会衍生出一些新的算法,这些算法在整个系统中做到灵活的应用,例如当下使A之后衍生出的算法B可不可以直接剔除算法A转而去使用算法B,这就是系统的鼓棒性,对算法组件化支持的能力现在推出的阿里机器学习PAI产品就具有这样的能力

第三是服务器的性能问题,是否可以做到复杂排序的整合编排,并且可以做到好的反馈

第四是支持资源的弹性扩展,举例来说,推荐最后的模型服务可能对于一些APP来说其受众的浏览量与时间有关,下班点大家在地铁上浏览的比较多,凌晨大家的浏览量有所减少因此推荐模型底层使用资源在用户量大的时候需要更多资源,在凌晨需要更少的资源,为了平衡这个成本,就要实现底层资源的灵活扩展,便是用云上服务的一个优势,线下的服务的需要按照整个服务的峰值去购买机器

3、企业级推荐系统的整体架构

image.png

最下面是基础数据层,包括用户的画像数据(例说用户的身高体重或者购买偏好属性学历等等,都属于用户的画像数据)、物料本身的数据(物料数据就是说物品价格颜色产地等,如果是新闻其物料数据就指新闻市场,如果是短视频,物料数据就是这个视频的市场内容标签等等都属于物料本身的数据)、用户数据的行为数据(行为数据就是指用户和物料之间的交互,比如一个用户看到一个视频点赞了,或者该用户勾选了dislike,还可以是收藏,这些都是用户的行为数据)。

而像一些评论数据第三方数据等等,不一定每个平台每个产品都会有,但是基本上 User 的数据、Item 的数据以及 Behaviour 的数据,这三张表是一定要有的,当有了这三个数据之后,就会进入到数据加工存储这一层。这一层会做一些数据加工,比如说去加工特征,把用户、物料以及事件的特征加工出来

再往上一级就是基于这些特征建模,整个推荐的序列包含召回和排序两个重要的模块。在召回模块可以有多个算法去并行完成,比如A算法召回100个问题,B算法召回100个问题后续可以把它们放在一起去做一个最终的结果召回之后需要一个排序排序也有很多算法

最后经过召回和排序之后,有一个相应的策略,完成去重、测试等步骤,比如说昨天刚推荐给用户一个小米手机,然后用户购买了,再推荐小米手机肯定是不合适的,这是典型的去重系统

还有 AB test,我们经常有两个推荐模型,不上线就不知道哪一个模型对结果的效果最好所以先要一个 AB Test 的灰度发布,另外还要兼容很多用户自己的业务,比如说今天想对一个短裙做加量投送,即使排序在后面,但因为运营的需求,要把短裙放在前面推更多用户,因此需要兼顾这些策略。

最上层就是最终的推荐业务,可以推荐商品,可以推荐用户,比如说在一些社交的应用,可以把用户推荐用户,让他们互相关注,也可以推荐广告

4、企业级推荐系统的整体架构如何符合四个需求?

image.png

企业级推荐系统的整体架构符合四个需求需要用到一些云产品,最常见的做法就是基于云服务云生态去搭建这些模块的内容,在阿里整个的实现方法是这样的基于 PAI 的推荐平台在基础数据层,可以提供一些网站的离线数据,存到RDS(MySql )数据库里

实时的行为数据比如点击关注等)是可以的完成的,可以利用Kafka,然后到上一层(数据加工层Flink 完成加工,加工实时的行为数据

另外也可以用离线的数仓,比如 Max Compute 去结合 DW 完成一些实时的批量处理生成样本之后就可以发到模型训练层,在模型训练主要会用到 PAI 的一些算法,比如 PAI-Studio 里有很多召回算法也有很多排序的算法,对于召回算法,比如说向量召回,生成的结果可能有一部分要从 redis 里取出来,存到 Faiss 里,然后 PAI-Studio 生成的排序模型可能要部署到一个在线的服务环境中,把这个模型部署成一个 Api。

上面应用的时候,为了保证整个服务的弹性,推荐通过 KS 原生的方案去做,保证资源弹性

就是刚才所讲的,大部分客户推荐服务高峰期集中在下班时间或者是上班时间这段时间就要多部署一些服务,到凌晨的时候可能用户比较少,可以相对减少一些服务,这是云上资源弹性的一个特点

最终在服务编排阶段,可以先调一下召回,拿到召回结果,然后去重拿到最终的排序样本,排序的结果就会反复的用户做一个报告

 

相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
8月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
2103 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
资源调度 监控 调度
基于SCA的软件无线电系统的概念与架构
软件通信体系架构(SCA)是基于软件定义无线电(SDR)思想构建的开放式、标准化和模块化平台,旨在通过软件实现通信功能的灵活配置。SCA起源于美军为解决“信息烟囱”问题而推出的联合战术无线电系统(JTRS),其核心目标是提升多军种联合作战通信能力。 上海介方信息公司的OpenSCA操作环境严格遵循SCA4.1/SRTF标准,支持高集成、嵌入式等场景,适用于军用通信、雷达等领域。 SCA体系包括目标平台资源层(TRL)、环境抽象层(EAL)、SRTF操作环境(OE)及应用层(AL)。其中,SRTF操作环境包含操作系统、运行时环境(RTE)和核心框架(CF),提供波形管理、资源调度等功能。
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
308 3
|
自然语言处理 JavaScript Java
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS架构介绍
HarmonyOS采用分层架构设计,从下至上分为内核层、系统服务层、框架层和应用层。内核层支持多内核设计与硬件驱动;系统服务层提供核心能力和服务;框架层支持多语言开发;应用层包括系统及第三方应用,支持跨设备调度,确保一致的用户体验。
1372 81
|
供应链 监控 安全
网络安全中的零信任架构:从概念到部署
网络安全中的零信任架构:从概念到部署
1392 75
|
人工智能 前端开发 Java
DDD四层架构和MVC三层架构的个人理解和学习笔记
领域驱动设计(DDD)是一种以业务为核心的设计方法,与传统MVC架构不同,DDD将业务逻辑拆分为应用层和领域层,更关注业务领域而非数据库设计。其四层架构包括:Interface(接口层)、Application(应用层)、Domain(领域层)和Infrastructure(基础层)。各层职责分明,避免跨层调用,确保业务逻辑清晰。代码实现中,通过DTO、Entity、DO等对象的转换,结合ProtoBuf协议,完成请求与响应的处理流程。为提高复用性,实际项目中可增加Common层存放公共依赖。DDD强调从业务出发设计软件,适应复杂业务场景,是微服务架构的重要设计思想。
|
XML Java 开发者
Spring底层架构核心概念解析
理解 Spring 框架的核心概念对于开发和维护 Spring 应用程序至关重要。IOC 和 AOP 是其两个关键特性,通过依赖注入和面向切面编程实现了高效的模块化和松耦合设计。Spring 容器管理着 Beans 的生命周期和配置,而核心模块为各种应用场景提供了丰富的功能支持。通过全面掌握这些核心概念,开发者可以更加高效地利用 Spring 框架开发企业级应用。
464 18
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
979 17
|
测试技术 持续交付 微服务
深入理解微服务架构:从概念到实践
深入理解微服务架构:从概念到实践
321 20

热门文章

最新文章