推荐算法架构 :召回(1)

2024-04-28 10:59
文章标签 算法 推荐 架构 召回

本文主要是介绍推荐算法架构 :召回(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

召回模块面对几百上千万的推荐池物料规模,候选集十分庞大。由于后续有排序模块作为保障,故不需要十分准确,但必须保证不要遗漏和低延迟。目前主要通过多路召回来实现,一方面各路可以并行计算,另一方面取长补短。召回通路主要有非个性化和个性化两大类。

1 推荐算法整体架构

1.1 推荐算法意义

随着互联网近十年来的大力发展,用户规模和内容规模均呈现迅猛发展。用户侧日活过亿早已不是什么新鲜事,内容侧由于 UGC 生产方式的普及,拥有几十亿内容库的平台也屡见不鲜。如何让海量用户在海量内容中找到自己喜欢的,以及如何让海量内容被海量用户精准消费,一直以来都是每个公司十分核心的问题。在这个背景下,搜索系统和推荐系统应运而生。搜索系统主要解决用户寻找感兴趣的内容,偏主动型消费。推荐系统则主要解决内容推送给合适用户,偏被动型消费。二者一边牵引用户,一边牵引内容,是实现用户与内容匹配的中间媒介。推荐系统在每个公司都是十分核心的地位,其意义主要有

  1. 用户侧,为用户及时精准的推送感兴趣的个性化内容,并不断发现和培养用户的潜在兴趣,满足用户消费需求,提升用户体验,从而提升用户活跃度和留存。
  2. 内容侧,作为流量分发平台,对生产者(如 UGC 作者、电商卖家等)有正向反馈刺激能力,通过扶持有潜力的中小生产者,可以促进整体内容生态的繁荣发展
  3. 平台侧,推荐系统对内容分发的流量和效率都至关重要。通过提升用户体验,可提升用户留存,从而提升日活。通过提升用户转化和流量效率,可提升电商平台订单量和内容平台用户人均时长等核心指标。通过提升用户消费深度,可提升平台整体流量,为商业化目标(如广告)打下基础,提升 ARPU(每用户平均收入)等核心指标。推荐系统与公司很多核心指标息息相关,有极大的牵引和推动作用,意义十分重要。

1.2 推荐算法基本模块

当前基于算力和存储的考虑,还没办法实现整体端到端的推荐。一般来说推荐系统分为以下几个主要模块:

  1. 推荐池:一般会基于一些规则,从整体物料库(可能会有几十亿甚至百亿规模)中选择一些 item 进入推荐池,再通过汰换规则定期进行更新。比如电商平台可以基于近 30 天成交量、商品在所属类目价格档位等构建推荐池,短视频平台可以基于发布时间、近 7 天播放量等构建推荐池。推荐池一般定期离线构建好就可以了。
  2. 召回:从推荐池中选取几千上万的 item,送给后续的排序模块。由于召回面对的候选集十分大,且一般需要在线输出,故召回模块必须轻量快速低延迟。由于后续还有排序模块作为保障,召回不需要十分准确,但不可遗漏(特别是搜索系统中的召回模块)。目前基本上采用多路召回解决范式,分为非个性化召回和个性化召回。个性化召回又有 content-based、behavior-based、feature-based 等多种方式。
  3. 粗排:获取召回模块结果,从中选择上千 item 送给精排模块。粗排可以理解为精排前的一轮过滤机制,减轻精排模块的压力。粗排介于召回和精排之间,要同时兼顾精准性和低延迟。一般模型也不能过于复杂
  4. 精排:获取粗排模块的结果,对候选集进行打分和排序。精排需要在最大时延允许的情况下,保证打分的精准性,是整个系统中至关重要的一个模块,也是最复杂,研究最多的一个模块。精排系统构建一般需要涉及样本、特征、模型三部分。
  5. 重排:获取精排的排序结果,基于运营策略、多样性、context 上下文等,重新进行一个微调。比如三八节对美妆类目商品提权,类目打散、同图打散、同卖家打散等保证用户体验措施。重排中规则比较多,但目前也有不少基于模型来提升重排效果的方案。
  6. 混排:多个业务线都想在 Feeds 流中获取曝光,则需要对它们的结果进行混排。比如推荐流中插入广告、视频流中插入图文和 banner 等。可以基于规则策略(如广告定坑)和强化学习来实现。

推荐系统包含模块很多,论文也是层出不穷,相对来说还是十分复杂的。我们掌握推荐系统算法最重要的还是要梳理清楚整个算法架构和大图,知道每个模块是怎么做的,有哪些局限性和待解决问题,可以通过什么手段优化等。并通过算法架构大图将各个模块联系起来,融会贯通。从而不至于深陷某个细节,不能自拔。看论文的时候也应该先了解它是为了解决什么问题,之前已经有哪些解决方案,再去了解它怎么解决的,以及相比其他方案有什么改进和优化点。本文主要讲解推荐算法架构大图,帮助读者掌握全局,起到提纲挈领作用。

2 召回

2.1 多路召回

召回模块面对几百上千万的推荐池物料规模,候选集十分庞大。由于后续有排序模块作为保障,故不需要十分准确,但必须保证不要遗漏和低延迟。目前主要通过多路召回来实现,一方面各路可以并行计算,另一方面取长补短。召回通路主要有非个性化和个性化两大类。

2.1.1 非个性化召回

非个性化召回与用户无关,可以离线构建好,主要有

  1. 热门召回:比如近 7 天播放 vv 比较高的短视频,可以结合 CTR 和时间衰减做平滑,并过滤掉人均时长偏低的疑似骗点击 item。还可以选择用户点赞多、好评多的 item 等。这部分主要基于规则实现即可。由于热门 item 容易导致马太效应,如果热门召回占整体通路比例过大,可以考虑做一定打压。
  2. 高效率召回:比如高 CTR、高完播率、高人均时长的短视频,这类 item 效率较高,但可能上架不久,历史播放 vv 不多,好评也需要时间积累,有可能不在热门召回内。
  3. 运营策略召回:例如运营构建的各个类目的榜单、片单,最新上架 item 等。

2.1.2 个性化召回

个性化召回与用户相关,千人千面,根据构建方式主要有

  1. content-based:基于内容,可以通过用户标签,比如新注册时填写的喜欢的导演、演员、类目等信息,也可以通过用户历史行为作为 trigger,来选取与之内容相似的 item。主要有:
    1. 标签召回:比如演员、导演、item 标签 tag、类目等。
    2. 知识图谱
    3. 多模态:比如标题语义相似的 item,首图相似的 item,视频理解相似的 item 等

一般先离线构建好倒排索引,在线使用时通过用户标签或者历史行为 item 作为 trigger,取出对应候选即可。基于内容来构建倒排索引,不需要 item 有丰富的行为,对冷启 item 比较友好。

  1. behavior-based:基于行为,主要是 userCF 和 itemCF 两种,都是通过行为来找相似,需要 user 或者 item 有比较丰富的行为。userCF 先找到与 user 行为相似的 user,选取他们行为序列中的 item 作为候选。itemCF 则找到每个 item 被行为相似的其他 item,构建倒排索引。构建方式主要有 CF 和 MF 两大类,MF 又称 model-based CF,就不具体展开了。
  2. feature-based:基于特征,比如 user 的年龄、性别、机型、地理位置、行为序列等,item 的上架时间、视频时长、历史统计信息等。基于特征的召回构建方式,信息利用比较充分,效果一般也比较好,对冷启也比较友好,是最近几年来的研究重点。又主要分为
    1. 线性模型:比如 FM、FFM 等,就不具体展开了
    2. 深度模型:比如基于 DNN 的 DSSM 双塔、youtubeDNN(又叫 deepMatch)。基于用户序列的 Mind。基于 GNN 的 graphSAGE 等。

线上使用时,可以有两种方式:

    1. 向量检索:通过生成的 user embedding,采用近邻搜索,寻找与之相似的 item embedding,从而找到具体 item。检索方式有哈希分桶、HNSW 等多种方法
    2. i2i 倒排索引:通过 item embedding,找到与本 item 相似的其他 item,离线构建 i2i 索引。线上使用时,通过用户历史行为中的 item 作为 trigger,从倒排索引中找到候选集
  1. social-network:通过好友点赞、关注关系、通信录关系等,找到社交链上的其他人,然后通过他们来召回 item。原则就是好友喜欢的 item,大概率也会喜欢,物以类聚人以群分嘛。

2.2 召回优化

多路召回的各通路主要就是这些,那召回中主要有哪些问题呢,个人认为主要有

  1. 负样本构建问题:召回是样本的艺术,排序是特征的艺术,这句话说的很对。召回正样本可以选择曝光点击的样本,但负样本怎么选呢?选择曝光未点击的样本吗,肯定不行
    1. 曝光未点击样本,能从已有召回、粗排、精排模块中竞争出来,说明其 item 质量和相关性都还是不错的,作为召回负样本肯定不合适
    2. SSB 问题,召回面向的全体推荐池,但能得到曝光的 item 只是其中很小的子集,这样构建负样本会导致十分严重的 SSB(sample selection bias)问题,使得模型严重偏离实际

基于这个问题,我们可以在推荐池中随机选择 item 作为负样本,但又会有一个问题,随机选择的 item,相对于正样本来说,一般很容易区分,所以需要有 hard negative sample 来刺激和提升召回模型效果。构建 hard negative sample,是目前召回研究中比较多的一个方向,主要有:

    1. 借助精排模型:比如选取精排打分处于中间位置的 item,如排名 100~500 左右的 item,它们不是很靠前,可以看做负样本,也不是吊车尾,与正样本有一定相关性,区分起来有一定难度。
    2. 业务规则:比如选择同类目、同价格档位等规则的 item,可以参考 Airbnb 论文的做法。
    3. 主动学习:召回结果进行人工审核,bad case 作为负样本

一般会将 hard negative 与 easy negative,按照一定比例,比如 1: 100,同时作为召回负样本。

  1. SSB 问题:召回面向的是全体推荐池,item 数量巨大,故需要做一定的负采样,有比较大的 SSB 样本选择偏差问题。故需要让选择出来的负样本,尽可能的能代表全体推荐池,从而提升模型泛化能力。主要问题仍然是负采样,特别是 hard negative sample 的问题。
  2. 目标不一致问题:目前的召回目标仍然是找相似,不论是基于内容的,还是基于行为和特征的。但精排和最终实际业务指标仍然看的是转化,相似不代表就能得到很好的转化,比如极端情况,全部召回与用户最近播放相似的短视频,显然最终整体的转化是不高的。
  3. 竞争问题:各召回通路最终会做 merge 去重,各通道之间重复度过高则没有意义,特别是新增召回通路,需要对历史通路有较好的补充增益作用,各召回通路之间存在一定的重叠和竞争问题。同时,召回通路的候选 item,不一定能在精排中竞争透出,特别是历史召回少的 item,由于其曝光样本很少,精排中打分不高,所以不一定能透出。召回和精排的相爱相杀,还需要通过全链路优化来缓解。

这篇关于推荐算法架构 :召回(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943062

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费