新智元报道

编辑:泽正 英智

【新智元导读】如今越来越多的歪果朋友入驻小红书,而这泼天流量也带来了「欲戴王冠,必承其重」的形势。而让大家纷纷赞扬的小红书内容推荐算法则是它能够接的下来这波流量的核心原因之一。本文通过对两篇小红书官方团队发布的推荐算法论文解读,带你揭开小红书内容推荐机制的神秘面纱。

最近歪果朋友疯狂涌入「Xiaohongshu」,网友直呼,一夜之间与国际接轨。


这场史称「美洲大迁徙」的互联网奇象,也离不开小红书本身过硬的内容推荐算法技术。而歪果网友也毫不吝啬对于「Xiaohongshu」推荐算法的赞美。



小红书如何「投你所好」


接下来让我们看看,小红书的推荐算法是怎么不断地成功「投你所好」。

一般来讲,为了构建出用户所喜欢的推荐内容列表,经典的推荐系统构成为:

  • 从内容数据库中检索候选内容

  • 通过排序模块衡量每个事件的质量,即预测特定内容将为用户提供的效用程度

  • 高质量内容将被发送至策略模块进行进一步筛选和重新排序,以构建最终的推荐列表


推荐系统的典型结构

目前能够检索到的小红书官方发表的推荐算法相关的技术论文共有两篇,接下来就让我们一起揭开小红书内容推荐机制的「神秘面纱」。

发现你的兴趣:NoteLLM

推荐契合用户兴趣的笔记是一项关键任务。NoteLLM是一种用于解决内容到内容(I2I)笔记推荐问题的创新统一框架,旨在为用户提供更精准的笔记推荐服务。

研究者在小红书开展了为期一周的在线I2I推荐实验。

与先前使用SentenceBERT的方法相比,NoteLLM的点击率提升了16.20%,召回性能的增强使评论数增加1.10%,平均每周发布者数量增加0.41%。

这些结果显示,将LLM用于I2I笔记推荐任务能显著提升推荐性能和用户体验。同时,新笔记一天内评论数显著增加3.58%,表明LLM的泛化能力对冷启动笔记有积极作用。

目前,NoteLLM已部署在小红书的I2I笔记推荐任务中。

具体来说,通过「笔记压缩提示词」将笔记浓缩成特殊的单一token,再借助对比学习方法,进一步学习潜在相关笔记的嵌入关系。同时,NoteLLM还能对笔记进行总结,通过指令调优自动生成标签或类别。

经大量实际场景验证,NoteLLM在小红书推荐系统里效果显著。


论文链接:https://arxiv.org/pdf/2403.01744


基于BERT模型的在线I2I笔记推荐方法存在局限性,它们仅把标签/类别当作笔记内容的普通部分,未深挖其潜在价值。标签/类别蕴含着笔记的核心要点,对判断笔记间内容相关性至关重要。

生成标签/类别与生成笔记嵌入具有相似性,二者都能将笔记关键信息凝练为有限内容。学习生成标签/类别,有助于提升嵌入质量。


NoteLLM框架由三个关键部分组成:笔记压缩提示构建、生成对比学习(GCL)和协作监督微调(CSFT)。

研究者采用统一的笔记压缩提示,旨在将笔记内容压缩成一个特殊的单一token,来助力I2I推荐和生成任务。

利用这个压缩后的特殊token,通过生成对比学习(GCL)挖掘其中的协作知识。之后,借助协作监督微调(CSFT),运用这些知识生成标签和类别。


构建笔记压缩提示

研究者用以下提示模板,实现了对笔记的通用压缩以及标签和类别的生成:


在这个模板里,[BOS]、[EMB] 和 [EOS] 是特殊的 token 。而 (指令)、 (输入笔记)、 (输出引导)和(输出结果)是占位符,后续会被具体内容替换。

类别生成的具体内容定义如下:


标签生成的模板如下:


完成提示构建后,对其进行标记化处理并输入LLM,LLM会将协作信号与关键语义信息提炼到压缩词中,依据笔记核心思想生成标签或类别。

生成对比学习(GCL)

研究者提出生成式对比学习(GCL),目的是增强LLM捕获更强协作信号的能力。GCL不同于从特定答案或奖励模型中学习,它采用对比学习,从整体视角考量笔记之间关系的紧密程度。

为了将协作信号融入LLM,采用基于用户行为的共现机制来构建相关笔记对。这一机制基于这样的假设:若两篇笔记常被用户一起阅读,那么它们很可能存在关联。

在构建相关笔记对之后,训练NoteLLM基于文本语义和协作信号判断笔记的相关性。

GCL的损失函数计算如下:


其中,表示GCL的损失,为可学习的温度参数,(,)=⊤/(∥∥*∥∥) 表示向量和的相似度。

协作监督微调(CSFT)

生成标签/类别和生成笔记嵌入类似,都是对笔记内容的总结:前者从文本生成角度提取关键信息,后者从协作视角将笔记压缩为虚拟词用于I2I推荐。

NoteLLM把GCL和CSFT任务结合起来建模,旨在潜在地提高嵌入的质量。研究者将这两个任务整合到一个提示中,给它们提供额外信息,同时简化训练流程。

具体而言,研究者用协作监督微调(CSFT),通过笔记的语义内容和压缩标记中的协作信号生成标签/类别。

CSFT损失的计算方式如下:


其中,为CSFT损失,是输出序列的长度,表示输出序列中的第个标记,是输入序列。

最后,把GCL和CSFT结合,得到NoteLLM的总损失函数:


通过模型更新,NoteLLM可在笔记推荐场景中同时开展I2I推荐任务和标签/类别生成任务。

实现多样化推荐:SSD


论文链接:https://arxiv.org/pdf/2107.05204

该论文主要是提出了滑动频谱分解(SSD)方法,以解决小红书中「多样化信息流推荐」的问题。并且文中也提出了计算嵌入向量的策略CB2CF,以应对实际推荐场景中的长尾效应。

滑动频谱分解

推荐系统通常提供很长的内容序列,而用户当前的浏览窗口只能占据整个序列的一部分。因此用户需要不断滑动当前浏览窗口才能获取推荐内容序列中其余内容。


如下图所示,用户阅览窗口的处理步骤为:首先,一个固定大小为ω的窗口在整个原始内容序列中滑动。然后将内容的多个窗口以内容矩阵的形式堆叠在一起。最后将每个内容映射到其d维内容嵌入,得到轨迹张量。


在推荐场景中,作者将轨迹矩阵推广到三阶情况,将d维内容嵌入视为多元观测,并借助单变量时间序列奇异谱分析(SSA),对进行奇异值分解。


其中,的体积代表了基于整个序列以及滑动窗口的多样性,奇异矩阵可以看作是推荐内容呈现的正交方向,而奇异值则指的是这些方向在用户对多样性感知中的权重。

作者继续通过这些内容所跨越的超平行体的体积来定义多样性,由于多样化的内容嵌入更加正交,这意味着它能够跨越更大的体积。

一方面,推荐系统通常计算质量分数来表示用户的预期效用,例如视频观看时间或参与度。另一方面,多样性有时被视为探索以发现更多关于用户的信息


其中为三阶张量的体积,γ是一个超参数,用于调整质量和多样性之间的权衡。该目标函数利用贪心算法进行推理求解。

由于该方法将整个内容序列视为用户观察到的时间序列,并通过频谱分析分解其滑动表示。因此,作者将提出的方法称为滑动频谱分解(SSD,Sliding Spectrum Decomposition)。

作者也利用在线实验论证了相比于DPP(Determinantal Point Process)推荐算法,SSD分别在驻留时间、互动次数、ILAD、MRT四个指标分别进步了+0.25%,+0.71%,+0.37%,+0.53%。

其中ILAD是通过用户查看笔记内容之间的平均成对相异性来衡量多样性。MRT则使用用户点击的内容类别的平均数量来描述多样性。

这说明SSD算法能够更进一步地解决小红书中「多样化信息流推荐」的问题,给用户更多类别的个性化推荐内容。

计算嵌入向量的CB2CF

协同过滤(CF,Collaborative Filtering)是一种常用的推荐系统算法,它基于用户的行为数据来计算内容之间的相似度,并据此为用户提供个性化推荐。

在CF策略的基础上,作者提出了采用如下图所示的孪生网络结构CB2CF策略来计算内容嵌入向量。


嵌入模型CB2CF的网络架构

对于给定的一个笔记内容,分别利用预训练的BERT模型提取文本描述的特征,Inception-V3模型提取封面图像的特征,将两者特征拼接后通过全连接层得到目标嵌入向量。

在训练数据收集上,仅使用笔记内容本身作为特征,避免长尾效应的影响。对于有用户互动的笔记,将通过 ItemCF方法检索且在推荐结果中曝光足够的笔记,与组成的笔记对作为正样本;随机采样ItemCF检索的笔记与组成的笔记对作为负样本。

为适应SSD方法,采用余弦相似度作为距离度量,并对嵌入向量进行归一化,通过在归一化后的向量后附加一个元素为1的额外维度,解决余弦距离与体积定义的不匹配问题。

最后,作者将这个问题视为一个二分类任务,并使用交叉熵损失作为目标函数。

在实验中,作者将注意力限制在仅有少量互动的长尾内容上,并随机抽取了100,000个笔记,这些内容在一个月内的互动次数均少于3次。

下图展示了给定一个描述中国书法的低参与度内容时,从CF和CB2CF生成的最相似内容的示例。显然,在这种情境下,所提出的CB2CF方法能够检索到更多相似内容,而CF则检索到了与娱乐和绘画相关的内容。


这说明将SSD与CB2CF嵌入相结合,能够实现更好地捕捉用户在长序列场景下对多样性的感知,且在长尾效应下精确衡量内容相似度,给用户提供符合兴趣且广泛多样的个性化推荐内容。

参考资料:

https://arxiv.org/pdf/2107.05204

https://arxiv.org/search/?query=Xiaohongshu&source=header&searchtype=all

https://x.com/deedydas/status/1879205937728385146

ad1 webp
ad2 webp
ad1 webp
ad2 webp