[搜广推] 王树森推荐算法——概要

基本概念

小红书的推荐系统

发现页

  • 展示推荐系统分发给你的内容,由用户创作,推荐系统展示给其他用户
  • 推荐系统根据用户历史数据(点赞评论收藏)把用户可能感兴趣的笔记推荐给用户

曝光 impression

  • 系统把一篇笔记展示给用户叫曝光
  • 如果用户点击并停留几秒,则说明用户感兴趣,这称之为有效点击

推荐系统的依据:有效点击、滑动到底、 点赞、评论、收藏、转发

转化流程:

  • 曝光和点击:绝大多数产品都有(youtube,b站,小红书......),但抖音没有(一次只展示一个视频)

短期消费指标

指标反应用户对推荐是否满意

  • 点击率 :点击率越高说明推荐越精准,向用户展示了感兴趣的内容
    点击率 = 点击次数 / 曝光次数 点击率 = 点击次数 / 曝光次数 点击率=点击次数/曝光次数
  • 点赞率
    点赞率 = 点赞次数 / 点击次数 点赞率 = 点赞次数 / 点击次数 点赞率=点赞次数/点击次数
  • 收藏率
    收藏率 = 收藏次数 / 点击次数 收藏率 = 收藏次数 / 点击次数 收藏率=收藏次数/点击次数
  • 转发率
    转发率 = 转发次数 / 点击次数 转发率 = 转发次数 / 点击次数 转发率=转发次数/点击次数
  • 阅读完成率
    其中 f (笔记长度)是一个与笔记长度有关的归一化函数
    阅读完成率 = 滑动到底次数 / 点击次数 x f ( 笔记长度 ) 阅读完成率 = 滑动到底次数 / 点击次数 x f (笔记长度) 阅读完成率=滑动到底次数/点击次数xf(笔记长度)

注意

但是不能只追求短期消费指标(竭泽而渔),也要发一些新鲜的东西(多样性)。

多样性有助于提高用户粘性

北极星指标

最重要的指标,是衡量推荐系统好坏的根本标准

  • 用户规模 :和推荐系统的好坏强相关。推荐系统越好,用户越活跃,DAU和MAU越高
    • 日活用户数(DAU):每天登录小红书的用户数(一个人在一天内登录一次及以上,DAU+1)
    • 月活用户数(MAU):每月登录小红书的用户数(一个人在一个月内登录一次及以上,MAU+1)
  • 消费 :推荐系统越好,用户越上瘾,使用小红书的时长和阅读数量越高
    • 人均使用推荐的时长
    • 人均阅读笔记的数量
  • 发布 :希望推荐系统激励更多人发布作品,扩大内容池
    • 发布渗透率
    • 人均发布量

注意

当北极星指标和短期消费指标冲突时,以北极星指标为主

实验流程

算法工程师改进模型特征策略系统,提升指标

离线实验:

  • 不占用线上流量,不对用户和系统产生负面影响
  • 结果有参考价值,但没有线上实验可靠

线上实验:

  • 北极星指标只能通过线上实验获得
  • 小流量AB测试:把用户随机分为实验组和对照组,用评价指标衡量新策略是否有效,如果有效则全流量上线

链路

推荐系统目标:从物品数据库中选出几十个物品展示给用户

召回

召回从笔记数据库中快速取回一些笔记。每条召回通道取回几十到几百篇笔记,共几千篇。然后进行融合,做去重和过滤

过滤排除用户不喜欢的作者、话题和笔记

推荐系统有很多条召回通道,例如:协同过滤、双塔模型、关注的作者等。

排序

用机器学习模型预估用户对笔记的兴趣,保留分数最高的笔记。

**不能直接用大规模神经网络,因为代价很大。**因此分步骤进行。

  • 粗排

    • 用简单的小规模神经网络给几千篇笔记快速打分,选出分数最高的几百篇,做排序和截断
    • 保证进入精排的笔记具有多样性
  • 精排

    • 用大规模神经网络给几百篇笔记逐一打分
    • 精排模型更大,特征更多,分数更可靠,但计算量较大
    • 打完分后不需要排序和截断,笔记和分数进入重排(因为精排后的结果可能存在不足)

模型

  • 粗排和精排的模型非常相似,唯一区别是精排模型更大

  • 模型输入包括用户特征、物品特征和统计特征

  • 输出各种评价指标的预估值,然后融合成最终的排序分数

  • 重排
    • 随机抽样(DPP、MMR)
      • 抽样依据:精排分数大小和多样性
    • 用规则打散相似笔记
    • 插入广告和运营内容,根据生态调整排序
    • 重排的结果是最终向用户展示的

A/B测试

目的

  • 考察新的策略对线上指标的影响
  • 为新策略选择最优参数

随机分桶

做AB测试需要对用户进行随机分桶。如果用户数量足够大,则评价指标应该相等

如何分桶 :用哈希函数把用户ID映射成某个区间内的整数,然后把这些整数均匀随机分成b个桶。

实验组用了新策略,对照组用的是旧策略

实验组每个桶设置的实验参数不一样,用来选取最优参数

计算每个桶的业务指标(DAU、人均使用推荐的时长、点击率)

如果某个实验组指标显著优于对照组,则说明对应的策略有效,值得推全。推全是把流量扩大到100%,即所有用户都使用这个策略。

分层实验

目的:解决流量不够用的问题

  • 公司中有很多部门和团队,每个团队要做不同的AB测试。不分层的话无法解决需求

解决方法
分层实验:平行分成多个层:召回、粗排、精排、重排、用户界面、广告...(例如 GNN 召回通道属于召回层。)每个层分成n个桶。

  • 同层互斥:避免一个用户同时被两个实验影响
    • GNN 实验占了召回层的4个桶,其他召回实验只能用剩余的6个桶。
  • 不同层正交:
    • 每一层独立随机对用户做分桶,每一层都可以独立用100%的用户做实验。
    • 用户界面层的策略和召回层的策略可能作用在同一个用户身上,因为不同层实验之间效果不易增强或抵消

每一层之间的用户是随机独立划分的,即召回的2号桶和粗排的2号桶交集很小

为什么不全用正交?

  • 同类的策略天然互斥,对于一个用户,只能用其中一种。(如精排模型的两种结构)
  • 两条不互斥的同类策略效果会相互增强(1+1>2)或相互抵消(1+1<2)。互斥可以避免同类策略相互干扰。
  • 而不同类型的策略(例如添加召回通道、优化粗排模型)通常不会相互干扰(1+1=2),可以作为正交的两层

Holdout机制

目的:计算整个推荐系统业务指标的收益

每个实验(召回、粗排、精排、重排)独立汇报对业务指标的提升,但公司需要考察一个部门(比如推荐系统)在一段时间内对业务指标总体的提升。

于是取10%的用户作为holdout桶,推荐系统使用剩余90%的用户做实验,两者互斥。10% holdout 桶 vs 90% 实验桶的 diff(需要归一化)为整个部门的业务指标收益。

每个考核周期结束之后,清除holdout桶,让推全实验从90%用户扩大到100%用户。重新随机划分用户,得到holdout桶和实验桶,开始下一轮考核周期。

新的 holdout 桶与实验桶各种业务指标的 diff接近0。随着召回、粗排、精排、重排实验上线和推全,diff会再次逐渐扩大。

实验推全

如果业务指标显著正向,则可以推全实验

推全的时候把之前的桶关掉,新开一层

反转实验

目的:新的策略既要尽快推全,又要长期观测实验指标

  • 有的指标(点击、交互)立刻收到新策略影响,有的指标(留存)有滞后性,需要长期观测
  • 实验观测到显著收益后尽快推全新策略。目的是腾出桶供其他实验使用,或需要基于新策略做后续的开发

解决方法

用反转实验解决上述矛盾,既可以尽快推全,也可以长期观测实验指标

在推全的新层中开一个旧策略的桶,长期观测实验指标。

相关推荐
weixin_4045512425 分钟前
HUGGINGFACE NLP- MAIN NLP TASKS
人工智能·自然语言处理·nlp·huggingface·tasks
china—hbaby31 分钟前
人工智能在自动驾驶领域的技术与应用
人工智能·机器学习·自动驾驶
可即33 分钟前
自动驾驶域控制器简介
人工智能·自动驾驶·智能电视
搏博1 小时前
在优化算法中常见哪些数学函数(根据数学性质分类)
人工智能·算法
曦云沐1 小时前
深入解析:选择最适合你的Whisper语音识别模型
人工智能·whisper·语音识别
AI视觉网奇1 小时前
UniDepth 学习笔记
人工智能
GPT祖弘1 小时前
【AI热点】小型语言模型(SLM)的崛起:如何在AI时代中找到你的“左膀右臂”?
人工智能·语言模型·自然语言处理
Fuweizn1 小时前
技术解决方案|复合机器人在cnc行业的上下料
人工智能·智能机器人·复合机器人
野蛮的大西瓜1 小时前
自动外呼机器人如何处理复杂的客户问题?
开发语言·人工智能·自然语言处理·机器人·开源
YRr YRr1 小时前
解决 OpenCV 与 FFmpeg 版本不兼容导致的编译错误
人工智能·opencv·ffmpeg