小红书推荐系统

交叉特征

Factorized Machine (FM)

线性模型

在这里插入图片描述
只用到特征加权和,没有用到特征交叉

二阶交叉特征

在这里插入图片描述
d很大的时候模型参数太多,也容易overfitting
在这里插入图片描述
用矩阵V和VT的点乘代替Uij 矩阵,减少参数数量,变为 d*k (V矩阵大小,k超参)

Factorized Machine总结

  1. FM是线性模型的替代物,线性回归、逻辑回归都可以用FM
  2. FM使用二阶交叉特征,表达能力比线性更强
  3. 矩阵自相乘代替二阶交叉权重数量,从O(dd) 将为O(dk)
  4. 目前推荐系统中不太常用

深度交叉网络(DCN)

交叉层(Cross Layer)

在这里插入图片描述

  • Hadamard Product:向量逐元素相乘
  • 交叉层只有全连接层有参数
  • 类似与resnet的残差多了个x0的乘入
  • 下面是具体公式:
    在这里插入图片描述

交叉网络(Cross Network)

在这里插入图片描述
几个交叉层的连接,x0在每一层输入

深度交叉网络(Deep & Cross Network)

在这里插入图片描述

  • DCN比全连接网络更好,工业界普通接受
  • DCN可以用于召回、排序
  • 双塔的用户/物品塔都可以是DCN
  • 多目标排序中sharebotten 和 mmoe中的专家网络都可以是DCN

LHUC网络结构(PPNet)

工业界有效,但只用于精排
LHUC来自于语音识别
快手将LHUC用于推荐精排,称为PPNet

语音识别中的LHUC

在这里插入图片描述

  • sigmoid * 2输出0-2的特征,乘上语音信号,对语音信号有特征选择作用,放大某些特征,缩小某些特征,实现个性化
  • 下面是用于排序模型的结构:
    在这里插入图片描述

SENet & Bilinear 交叉

SENet

  • 网络结构:
    • m个特征输入,代表m个离散特征
    • AvgPool 操作,得到mx1,每个元素对应一个离散特征
    • 全连接+relu 压缩,得到m/r X 1
    • 再用全连接+sigmod恢复到mx1,值域0-1
    • 逐行乘输入得到输出

SENet

  • SENet对离散特征做field-wise加权
  • field:一个离散特征算一个field,得到一个权重

Field特征间交叉

  1. 普通的特征交叉:
    在这里插入图片描述
    这两种交叉都需要特征维度一致
  2. Bilinear特征交叉
    不需要特征维度一致
    在这里插入图片描述
    在这里插入图片描述
    很多特征之间交叉意义不大,而且计算复杂,需要人工指定一些特征进行特征交叉

FiBiNet(结合senet 和 Bilinead交叉)

在这里插入图片描述

用户行为序列

用户行为序列建模

用户行为序列:用户最近交互过的n个物品,LastN
召回的双塔,粗排的三塔,精排模型都可以用lastN
对指标有比较大的收益
在这里插入图片描述

  • LastN:用户最近的n次交互(点击、点赞等)的物品id
  • 对LastN物品ID做emb,得到n个向量
  • 对n个向量取平均(常用做法),作为用户的一种特征(用户统计特征),也可以做atten,效果更好,但是运算量更大
  • 适用于召回双塔、粗排三塔、精排模型

小红书实践在这里插入图片描述

除了物品id,还会对更多的物品特征建模

DIN模型(注意力机制)

DIN用加权平均代替平均,即注意力机制
权重:候选物品(排序模型输入的候选物品)与用户LastN物品的相似度

在这里插入图片描述
DIN流程:
- 对于某候选物品。计算它和LastN物品相似度
- 相似度为权重,求LastN物品向量加权和,得到一个向量
- 向量作为一种用户特征,输入排序模型
- 本质是注意力机制

对比简单平均 和 注意力机制

  • 简单平均和注意力机制都适用于精排模型
  • 简单平均适用于双塔(召回)、三塔模型(粗排)
    • 简单平均只需要LastN,属于用户本身特征
  • 注意力不适用双塔、三塔
    • 注意力需要用到LastN+候选物品

SIM模型(长序列模型)

DIN模型缺点:

  • 注意力层计算量正比与n(用户行为序列长度)
  • 只能记录最近几百个物品
  • 关注短期兴趣,遗忘长期兴趣

改进DIN: 快速排除掉与候选物品无关得到LastN物品

SIM模型优点:

  • 保留用户长期行为记录,n大小为几千
  • 对于每个候选物品,在用户LastN记录中快速查找,得到k个物品
  • LastN变为TopK,计算量减小

SIM模型流程:

  1. 查找:
    • 方法一:Hard Search
      • 根据候选物品的类目,保留LastN物品中类目相同的
      • 简单,快速,无需训练
    • 方法二:Soft Search
      • 物品做哦emb,变为向量
      • 候选物品向量为query,做k最近邻查找,保留LastN中最接近的k个
      • 效果显著更好,实现更复杂
  2. 注意力机制:
    在这里插入图片描述
  • 注意力层和DIN一致
  • LastN变为TopK
  • 使用时间信息 (因为SIM序列长,记录长期行为,时间越远,重要性越低)
    • 用户和某个LastN物品交互时刻距今为 t
    • 对t做离散化,再emb,得到向量d
    • 向量d和物品特征x 做cat,表征一个LastN物品

重排

物品相似度

相似度度量

  • 基于物品属性标签

    • 类目、品牌、关键词等,需要手动调参得到最终相似度
      在这里插入图片描述
  • 基于物品向量表征

    • 用召回的双塔模型学到的物品向量(效果不好)
      • 双塔的热门现象严重,处理不好冷门和新物品
    • 基于内容(图文)的向量表征(效果好)
      在这里插入图片描述
      • Clip是公认最有效的预训练方法
      • 思想:对于图片-文本二元组,预测图文是否匹配
      • 无需标注
      • 在一个batch的二元组中有m对正样本,有m(m-1)个负样本

推荐系统链路中多样性的位置

在这里插入图片描述
精排的后处理一般就是重排

MMR 多样性算法(Maximal Marginal Relevance)

多样性需求

  • 精排给n个候选物品打分,融合之后的分数reward
  • i,j物品之间相似度为sim(i, j)
  • 从n个物品中选出k个,既有高精排分数,也有多样性

MMR 多样性算法

从未选中物品李选出mmr分数最高的放到选中集合
在这里插入图片描述
选中物品集合S越大会越难在R中找物品

  • 因为sim取值为1,S很大是,mmr分数总约为1,mmr算法失效
  • 解决方案:设置滑动窗口W(比如最近选中的10个物品),用W代替MMR公式中的S
    • 因为相近物品多样性要求高,远的物品多样性要求低
    • 一般业界都会用

重排的业务规则(业务规则约束的多样性算法,做策略)

  • 最多连续出现k篇某种笔记
  • 某k篇笔记最多出现1篇某种笔记
  • 前t篇笔记最多出现k篇某种笔记

业务规则优先级大于多样性算法

在满足规则的前提下最大化MMR

  • 每一轮先用规则排除未选集合R钟的部分物品得到子集R`
  • MMR计算公式用子集R`

DPP 多样性算法

业界公认的最好多样性算法

DPP的数学基础

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
行列式值最大化,超平行体体积越大,多样性越好

DPP算法

在这里插入图片描述
在这里插入图片描述

求解DPP

  1. 暴力算法
    在这里插入图片描述
    主要时间复杂在A行列式的计算
    总时间复杂度:O( n 2 ∗ d + n ∗ k 4 n^2*d+n*k^4 n2d+nk4)

  2. Hulu 快速算法
    在这里插入图片描述
    在这里插入图片描述

DPP扩展

  • 用滑动窗口,行列式用滑动窗口W集合计算
  • 规则约束,在规则过滤的集合R`中贪心找下一个物品

物品冷启动

物品冷启动指的是如何对新发布的物品做分发
UGC物品冷启动(用户上传的物品)

新笔记冷启动

  • 新笔记缺少和用户交互,导致推荐难度大、效果差
  • 扶持新发布、低曝光的物品,能增强作者发布意愿

优化冷启的目标:

  • 精准推荐:克服冷启苦难,把新物品推荐给用户,不引起反感
  • 激励发布:流量向低曝光物品倾斜,激励作者发布
  • 挖掘高潜:通过初期小流量试探,找到高质量笔记,流量倾斜

冷启动优化点:

  • 优化全链路(包括召回和排序)
  • 流量调控(流量怎么在新老物品中分配)

评价指标

作者侧指标:

  • 发布渗透率 = 当日发布人数 / 日活人数
  • 人均发布量 = 当日发布笔记数 / 日活人数

作者侧指标反应作者发布积极性
冷启的重要优化目标是促进发布,增大内容池
新笔记获得曝光越多,首次曝光和交互出现越早,作者发布积极性越高

用户侧指标:

  • 新笔记指标:
    • 新笔记的点击率、交互率
    • 分别考察高曝光、低曝光新笔记
      • 高曝光:比如>1000次曝光
      • 低曝光:比如<1000次曝光
  • 大盘指标:消费时长、日活、月活
    • 扶植低曝光会让作者侧指标变好,用户侧大盘指标变差
    • 尽量不降低大盘指标

内容侧指标:

  • 高热笔记占比:
    • 高热笔记:前30天活得1000+点击
    • 高热笔记占比越高,说明冷启动挖掘优质笔记能力越强

简单的召回通道

冷启物品的特性

  • 自带图片文字地点等
  • 算法或人工标注的标签
  • 没有用户点击、点赞等信息
  • 没有笔记ID emb

冷启动难点

  • 缺少用户交互,没学好笔记ID emb,导致双塔模型效果不好(召回、排序)
  • 缺少用户交互,导致itemCF不适用

双塔模型(改造后)

  • ID emb的改进
    • 改进方案1:新笔记使用 default emb
      • 物品塔做ID emb,让所有新笔记共享一个ID
      • Default emb:共享ID对于的emb 向量
      • 到下次模型训练的时候,新笔记才有自己的ID emb向量
    • 改进方案2:利用相似笔记的emb向量
      • 查找topk内容最相似的高曝笔记
      • 把k个笔记emb向量平均得到新笔记的emb
  • 多个召回池,让新笔记用更多曝光机会
    • 1小时新笔记、6小时新笔记、24小时新笔记、30天笔记
  • 共享同一个双塔模型,多个召回池不增加训练代价

类目、关键词召回

  • 感兴趣的类目:美食、科技数码、电影。。。
  • 感兴趣的关键词:纽约、职场、搞笑。。。
    在这里插入图片描述
  • 缺点:
    • 只对刚刚发布的新笔记有效
    • 弱个性化,不够精准

聚类召回

基本思想

  • 用户喜欢一个笔记,就会喜欢内容类似的笔记
  • 预训练一个神经网络,基于笔记的类目和图文内容,把笔记映射到向量
  • 笔记向量做聚类,划分为1000cluster,记录每个cluster的中心方向(k-means聚类,用余弦相似度)

聚类索引

  • 一篇新笔记发布,用神经网络映射到特征向量
  • 从1000向量(对应1000个cluster)中找到最相似向量,作为新笔记的cluster
  • 索引:cluster -> 笔记ID列表(时间倒排)

线上召回

  • 给定用户ID,找到LastN笔记列表,把这些笔记作为种子笔记
  • 每篇种子笔记映射到向量,寻找最相似的cluster
  • 把每个cluster笔记列表中,取回最新的m篇笔记
  • 最多取回mn篇笔记

和聚类召回缺点类似,只对新笔记有效,发布时间长就不行了

内容相似度模型

在这里插入图片描述
在这里插入图片描述

  • 只有全连接层需要全量学习

模型训练

在这里插入图片描述

  • 正样本选取
    在这里插入图片描述
  • 负样本选取
    在这里插入图片描述

Look-Alike 召回

在这里插入图片描述

  • 新笔记曝光给用户,用户中交互笔记的为种子笔记
  • 种子用户向量可以用双塔模型用户塔的向量
  • 平均后的向量作为新笔记的特征向量
    • 近线更新向量
    • 每当用用户交互物品,更新笔记的特征向量
  • 用户特征在新笔记向量中查找,用户和种子用户相似
    在这里插入图片描述

流量调控

在这里插入图片描述

流量调控技术的发展

  1. 推荐结果中强插新笔记,比较老的做法了
  2. 最新笔记排序分数做提权(boost)
    • 在粗排、重排缓解,给新笔记提权
    • 优点:容易实现。投入产出好
    • 缺点:
      • 曝光量对提权系数敏感
      • 很难精确控制曝光量,容易过渡曝光和不充分曝光
  3. 通过提权,对新笔记做保量
    • 保量:不论笔记质量,保证24小时一定曝光
      在这里插入图片描述
    • 动态提权保留
      在这里插入图片描述
  • 保量难点
    在这里插入图片描述
  1. 差异化保量
    在这里插入图片描述

冷启动的AB测试

作者侧实验:方案一

在这里插入图片描述

  • 缺点:
    • 新笔记之间会抢流量
      在这里插入图片描述
    • 新笔记和老笔记会抢流量
      在这里插入图片描述

作者侧实验:方案二

在这里插入图片描述
在这里插入图片描述

作者侧实验:方案三

在这里插入图片描述
内容池少一半,严重损害用户体验,不太可行

总结

在这里插入图片描述

涨指标方法

概述

推荐系统的评价指标

  • 日活用户数(DAU)和留存是最核心的指标
  • 工业最常用LT7和LT30衡量留存
    • 某用户今天(t0)登录了app,蔚来7天(t0-t6)中有4天登录app,那么用户今天(t0)的LT7等于4
    • LT增长通常译为用户体验提升(除非lLT增长且DAU下降)
  • 其他核心指标:用户使用时长、总阅读数、总曝光数。这些指标重要性低于DAU和留存
  • 对于UGC平台,发布量和发布渗透率也是核心指标

涨指标的方法

  1. 改进召回模型,添加新的召回模型
  2. 改进粗排和精排模型。
  3. 提升召回、粗排、精排中的多样性。
  4. 特殊对待新用户、低活用户等特殊人群。
  5. 利用关注、转发、评论这三种交互行为来提升指标。

召回

召回模型 & 召回通道

  • 推荐系统有几十条召回通道,它们的召回总量是固定的。总量越大,指标越好,粗排计算量越大
  • 双塔模型和item-to-item(I2I)是最重要的两类召回模型,占据召回的大部分配额
  • 很多小众模型,占据配额很少。召回总量不变下,添加莫伊谢召回模型可以提升核心指标
  • 有很多内容池,比如30天无哦,24小时物品,6小时物品,新用户优质内容池,分人群内容池。
  • 同一个模型可以用于多个内容池,得到多条召回通道

双塔模型

  1. 优化正样本、负样本
    在这里插入图片描述
  2. 改进神经网络结构
  • basline:用户塔、物品塔分别是全连接网络,各输出一个向量,分别用于用户、物品的表征
  • 改进:用户塔、物品塔分别用DCN代替全连接
  • 改进:在用户塔中使用用户行为序列(LastN)
  • 改进:使用多向量模型代替单向量模型(baselin中的双塔也叫单向模型)在这里插入图片描述
    多个向量表征用户
  1. 改进模型训练方法
  • Basline:做二分类,让模型学会区分正样本和负样本
  • 改进:结合二分类、batch内负样本(对batch内负采样,需要纠偏)
  • 改进:使用自监督学习方法,让冷门物品的emb学习更好

Item-to-Item(I2I)

在这里插入图片描述
方法2:基于物品向量表征,计算向量相似度(双塔模型,图神经网络均可计算物品向量表征)

小众的召回模型

  1. 类似I2I的模型
    在这里插入图片描述
    在这里插入图片描述

排序 (粗排和精排)

精排模型的改进

  1. 精排模型baseline
    在这里插入图片描述
  • 精排模型的基座:把原始特征映射为向量
    • 离散特征:
      • 经过emb得到数值向量
      • 数值向量拼接得到几千维向量
      • 拼接向量经过全连接层得到输出向量,几百维度
    • 连续特征:输入几百维度向量,输出几百维度向量
    • 这两个全连接网络一般都不会很大,cpu的话就一两层,gpu会大一点3-6层
    • 离散连续向量cat之后得到一个向量
  • 多目标预估:输入后续全连接网络进行多目标预测,一般这些全连接层两层
  1. 精排基座的改进:
  • 改进1:基座加深,计算量更大,预测更准(emb已经占用很大计算的基础上)
  • 改进2:做自动的特征交叉,比如bilinear和LHUC
  • 改进3:特征工程,比如添加统计特征、多模态内容特征
  1. 多目标预估改进:
  • 改进1:增加新的预估目标,并把预估目标加入融合公式
  • 改进2:MMoE、PLE等结构可能有效,但往往无效
  • 改进3:纠正position bias 可能有效,也可能无效

粗排模型的改进

粗排的打分量大于精排10倍,因此粗排模型必须够快

  1. 粗排模型结构
  • 简单模型:多向量双塔模型,同时预估点击率等多个目标
  • 复杂模型:三塔模型效果好,但工程实现难度较大
  1. 粗精排一致性建模
  • 蒸馏精排模型训练粗排,让粗排与精排更一致
  • 方法1:pointwise蒸馏
    • y是用户真实行为,设p是精排的预估
    • 用(y+p)/ 2作为粗排拟合的目标
  • 方法2:pairwise 或 listwise 蒸馏
    • 给定k个物品,按照精排预估做排序
    • 做learing to rank(LTR),让粗排拟合物品的序(而非值)
    • LTR通常用pairwise logistic loss
  • 优点:粗精排一致性建模可以提升核心指标
  • 缺点:如果精排出bug,精排预估值有偏差,会污染粗排模型的训练,而且不容易被察觉
  1. 用户行为序列建模

用户行为序列建模

  1. Basline:
  • 最简单是对物品向量取平均,作为一种用户特征
  • DIN使用注意力机制,对物品做加权平均
  • 工业界目前用SIM方向。先用类目等属性筛选物品,然后用din对物品向量做加权平均
  1. 改进1:增加序列长度,增加序列长度,让预测更准确,但是会增加计算成本和推理时间
  2. 改进2筛选方法,比如用类目、物品向量表征聚类
    • 离线用多模态神经网络(Bert、Clip等)提取物品内容特征,将物品表征为向量
    • 离线将物品向量聚类为1000类,每个物品都有一个聚类序号
    • 线上排序时,LastN有n=1e6物品,某候选物品序号为70,对n个物品做筛选,只保留聚类序号为70的物品。n个物品只有集权个被保留
    • 同时好几种筛选方法,取筛选结果的并集
  3. 改进3:对用户行为序列中物品使用物品ID以外的一些特征

在线学习

  1. 全量更新 vs 增量更新
    在这里插入图片描述
  2. 在线学习的资源消耗
  • 增量更新提升很大,但是资源消耗也大
  • 既需要在凌晨做全量更新,也需要全体不间断做增量更新
  • 在线学习对指标提升大,但是会制约模型开发迭代效率。一般有一个较好的模型再上在线学习

老汤模型

在这里插入图片描述

  1. 问题1:如何快速判断新模型结构优于老模型
    在这里插入图片描述
  2. 问题2:如何快速追平线上老模型
    在这里插入图片描述

多样性

排序的多样性

  1. 精排多样性
    在这里插入图片描述
  2. 粗排多样性
    在这里插入图片描述

召回多样性

  1. 双塔模型:
  • 添加噪声
    在这里插入图片描述
  • 抽样用户行为序列
    在这里插入图片描述
  1. U2I2I:抽样用户行为序列
    在这里插入图片描述

探索流量

在这里插入图片描述

特殊人群

为什么要特殊针对特殊人群

在这里插入图片描述

涨指标方法

  1. 构造特殊内容池,用于特殊用户的召回
  • 个性化不好,要保证内容质量好
  • 针对人群特点构造内容池(喜欢漂亮的用户,构造评论内容池)
  • 如何构造特殊内容池
    在这里插入图片描述
    在这里插入图片描述
    方法2工业界在用,但是不算成熟
  • 特殊内容池的召回
    • 通常使用双塔模型做召回在这里插入图片描述
    • 额外的训练代价
      在这里插入图片描述
    • 额外推理代价
      在这里插入图片描述
  1. 使用特殊排序策略,保护特殊用户
  • 排除低质量物品
    在这里插入图片描述
  • 差异化融分公式
    在这里插入图片描述
  1. 使用特殊排序模型,消除模型预估的偏差
    在这里插入图片描述
  • 方法1:大模型+小模型
    在这里插入图片描述
  • 方法2:融合多个experts。类似MMoE
    在这里插入图片描述
  • 方法3:大模型预估之后,用小模型做校准
    在这里插入图片描述

交互行为

用户的交互行为

在这里插入图片描述

关注

  1. 关注量对留存的价值
    在这里插入图片描述
  2. 利用关注关系提升用户留存
    在这里插入图片描述
    在这里插入图片描述
  3. 粉丝数对促发布的价值
    在这里插入图片描述
  • 排序策略帮助低粉新作者涨粉
    在这里插入图片描述
  1. 隐式关注关系
    在这里插入图片描述

转发

  1. 促转发(分享回流)在这里插入图片描述
  2. KOL建模
    在这里插入图片描述
    在这里插入图片描述
  3. 促转发策略
    在这里插入图片描述
    在这里插入图片描述

评论

  1. 评论促发布
    在这里插入图片描述
  2. 评论的其他价值
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值