精排:推荐系统如何给内容打分?从多目标预估到分数融合

如果把给用户推荐视频比作大公司招人,召回是系统自动从几亿份简历里粗暴的海选出1万份,粗排是部门主管花几秒扫一眼,快速筛选出1000个

看起来靠谱的现在这一千个幸存的候选视频终于来到了推荐系统大 boss 精排的面前。精排这位大老板拥有全系统最聪明的头脑,他使用着规模极其庞大的深度神经网络,消耗最昂贵的算力资源,会对每一个候选视频进行极其细致的全方位评估,真正理解你为什么会喜欢某条内容。

在理想状态下,平台推给你一条视频,当然希望你既愿意点开又愿意看完,还愿意在评论区跟人进情对线上200个回合。于是系统会分别预测多个关键指标,最经典的是点击率、完播率以及转化率,当然还有其他指标

但推荐系统最终只能有一个排序结果。这么多指标分数该怎么融合成一个统一的排序分数呢?

最直接的方法就是使用加权乘法公式。

score_iscore\_i score_i 表示第一个任务的预测值, a_ia\_i a_i 和 b_ib\_i b_i 则是对应的融合权重,就像是调音台上的推子,专门用来放大或缩小某一项指标的权重。怎么调整这些参数可以看作这款产品的价值观的体现

  • 如果你把点击率的权重推到最高,用户的满眼都会是擦边球和标题党。
  • 如果你把完播率的权重推到最高,推荐列表,就会被只有几秒钟的洗脑循环视频塞满

问题又出现了,这些权重数值到底该怎么定?

1.使用网格搜索,本质就是穷举。

如果有八个目标,每个目标有ab两个参数,工程师可以按照经验给每个参数假设十个可能的取值,一共就有10的16次方种组合,然后把所有组合一个个拿去训练和 A/B测试,最后挑出来效果最好的一组。这个方法虽然简单粗暴,但计算成本极高。

2.另一种思路,既然多个目标很难同时直接优化,那能不能找一个业务最核心的指标作为总代表?

比如把点赞、关注、转发等行为都折算成播放时长,最终只使用播放时长作为核心优化目标,这样做可以大幅降低系统复杂度。这些折算关系本质是一种近似替代,一般由工程师手动设定。

精排的核心工作从来不是简单的打出高分,而是在各项指标之间寻找微妙的平衡。

排序模型的发展

2016年谷歌在应用商店的推荐系统中提出了一个具有里程碑意义的模型 Wide and deep。它第一次系统的解决了推荐系统中的一个核心矛盾,用户既喜欢熟悉感又渴望新鲜感 。于是工程师设计出了一个像人类一样的大脑,同时拥有记忆力和推理能力的结构 。模型的左脑 Wide 是一个极其简单的线性结构,它的任务是死记硬背历史规律 。

比如系统发现你昨天点赞了电影解说,今天只要遇到电影标签的内容,左脑就会毫不犹豫的继续推给你.

他擅长利用已经被验证过的稳定模式,主打精准、安全、低风险。

但如果只有这种记忆力,用户很快就会看腻,这时候就需要右脑deep来制造惊喜。Deep是一个深层神经网络,它的任务叫泛化,也就是透过表面行为觉更深层的兴趣关联 。

比如他发现你经常观看二次元和漫展内容,于是他大胆的推测你可能也会喜欢手办相关内容,并悄悄把它塞进推荐列表。

它更像一种直觉,能够发觉连你自己 都没意识到的潜在兴趣。最后wide和deep会各自输出一个分数,再融合成最终结果,通过一个转换函数得到一个精确的预估值。

比如88%,意味着系统认为你有88%的概率会喜欢这条视频。

Wide and deep只是精排模型发展中的一个经典代表,工业界又陆续出现了很多更复杂的模型,他们开始进一步研究用户兴趣如何随时间变化,行为之间如何相互影响,以及系统如何在更复杂的上下文中理解此刻的你。

总结------精排的流程:
  1. 排序模型预估点击率、点赞率、收藏率、转发率等多种指标的分数
  2. 融合这些预估分数(比如加权和 等方式)
  3. 根据融合的分数做排序、截断

参考

相关推荐
今天早睡1 小时前
Checkpointer 和 thread_id 如何让状态跨调用延续
后端
用户423341246191 小时前
Redis 缓存穿透、击穿、雪崩,一次性讲清楚
后端
预知同行1 小时前
Coding Agent 面试到底在考什么?拆解 Prompt 组装、上下文压缩与 Tool/Skill 之争
架构
姜鱼问生1 小时前
2G 内存跑 5 个容器频频 OOM?一招 Swap 抢救你的 2核2G 小破服务器
后端
jose1 小时前
存量 Eureka 平滑接入 Nacos:内嵌 Sync 与双注册 SDK 双路线对比
后端·架构
孟健2 小时前
Claude Code 工程化实战:从保守问答到 3 个月 27 万行代码的全自动重构
架构·ai编程·claude
PingCAP2 小时前
善战者无赫赫之功:消费金融核心系统的数据库选型与升级路径
数据库·分布式·架构
lazy H2 小时前
【计算机网络】第 2 篇:一条数据如何穿过网络?彻底理解数据封装与解封装
网络·经验分享·后端·学习·计算机网络
我命由我123452 小时前
软件工程概念 - 可插拔性
java·后端·学习·java-ee·系统架构·软件工程·学习方法