论文地址:https://arxiv.org/abs/2403.01744
bib引用:
@misc{zhang2024notellmretrievablelargelanguage,
title={NoteLLM: A Retrievable Large Language Model for Note Recommendation},
author={Chao Zhang and Shiwei Wu and Haoxin Zhang and Tong Xu and Yan Gao and Yao Hu and Di Wu and Enhong Chen},
year={2024},
eprint={2403.01744},
archivePrefix={arXiv},
primaryClass={cs.IR},
url={https://arxiv.org/abs/2403.01744},
}
Keywords:Large Language Model; Recommendation; Hashtag Generation
一些结论:
- I2I推荐要么预先构造I2I索引,要么使用K近邻方法在线检索相关item。
传统的I2I推荐通常完全依赖于来自用户行为的协作信号。【但是会存在冷启动issue(缺少用户-item交互)】因此针对上述问题,很多工作从基于内容的推荐进行优化,本文从基于文本的角度进一步考虑。(问题定义:根据item的文本内容来衡量item之间的相似性) - 基于文本的I2I推荐的研究现状:依赖于基于术语的稀疏矢量匹配机制[35,37]→基于NN将文本转换为相同潜在空间中的嵌入,以通过嵌入相似性来衡量它们的关系。→简单应用LLM(仅视为生成嵌入的编码器[10,26,28])
- 将LLM与推荐相结合的主要方法有三种[18,50]。
- 第一种方法是利用LLM来增强数据[21,29,51]。由于LLM包含的丰富的世界知识,增强的数据比原始数据[23,46,51]更加突出和多样化。然而,这些方法需要对测试数据进行持续的预处理,以与增强的训练数据保持一致,并且高度依赖于LLM生成的质量。
- 第二种方法是利用LLM直接推荐。这些方法设计特殊提示[9,20,43]或使用监督微调[1,2,59]来诱导LLM回答给定的问题。尽管如此,由于上下文长度有限,这些方法只关注重排序阶段[7,59],该阶段仅包含数十个候选项。
- 最后一种方法是采用LLM作为编码器来生成表示特定项目的嵌入[15,49]。虽然这些方法对提取信息很有效,但它们都丢弃了生成LLM 的功能。
- 基于文本生成辅助决策的方法【从文本中生成这些有助于为未标记的注释创建标识符或根据用户的首选项向用户推荐选项】:有三种主要方法:提取、分类和生成方法。
- 提取:将文本中的关键短语识别为主题标签或类别 [61, 63],但无法获得原始文本中不存在的短语。
- 分类:将此任务视为文本分类问题 [14, 58, 60]。但是,由于人工生成的主题标签的多样性、自由形式性质,这些可能会产生次优结果。
- 生成:直接根据输入文本生成主题标签/类别 [4, 44, 45]。然而,这些方法仅限于解决主题标签/类别生成任务。
- NoteLLM :LLM 执行多任务学习,同时执行 I2I 推荐和主题标签/类别生成。由于这两个任务的相似性,学习生成主题标签/类别也可以增强 I2I 推荐。
摘要
People enjoy sharing “notes” including their experiences within online communities. Therefore, recommending notes aligned with user interests has become a crucial task. Existing online methods only input notes into BERT-based models to generate note embeddings for assessing similarity. However, they may underutilize some important cues, e.g., hashtags or categories, which represent the key concepts of notes. Indeed, learning to generate hashtags/categories can potentially enhance note embeddings, both of which compress key note information into limited content. Besides, Large Language Models (LLMs) have significantly outperformed BERT in understanding natural languages. It is promising to introduce LLMs into note recommendation. In this paper, we propose a novel unified framework called NoteLLM, which leverages LLMs to address the item-to-item (I2I) note recommendation. Specifically, we utilize Note Compression Prompt to compress a note into a single special token, and further learn the potentially related notes’ embeddings via a contrastive learning approach. Moreover, we use NoteLLM to summarize the note and generate the hashtag/category automatically through instruction tuning. Extensive validations on real scenarios demonstrate the effectiveness of our proposed method compared with the online baseline and show major improvements in the recommendation system of Xiaohongshu.
人们喜欢在在线社区中分享“笔记”,包括他们的经验。因此,推荐符合用户兴趣的笔记已成为一项至关重要的任务。现有的在线方法仅将笔记输入到基于BERT的模型中,以生成用于评估相似性的笔记嵌入。然而,它们可能没有充分利用一些重要的线索,例如主题标签或类别,它们代表了笔记的关键概念。事实上,学习生成主题标签/类别可以潜在地增强笔记嵌入,这两种方法都将关键笔记信息压缩到有限的内容中。此外,大型语言模型(LLM)在理解自然语言方面明显优于BERT。将LLM引入笔记推荐很有希望。在本文中,我们提出了一个名为NoteLLM的新颖统一框架,它利用LLM来解决项目到项目(I2I)的笔记推荐。具体来说,我们利用笔记压缩提示将笔记压缩成一个特殊的标记,并通过对比学习方法进一步学习潜在相关笔记的嵌入。此外,我们使用NoteLLM对笔记进行总结,并通过指令调整自动生成主题标签/类别。在真实场景上的广泛验证证明了我们提出的方法与在线基线相比的有效性,并显示了小红书推荐系统的重大改进。
Introduction
Focused on user-generated content (UGC) and providing a more authentic and personalized user experience, social media like Xiaohongshu and Lemon8 have gained significant popularity among users. These platforms encourage users to share their product reviews, travel blogs, and life experiences, among other content, also referred to as “notes”. By providing more personalized notes based on user preferences, note recommendation plays a crucial part in enhancing user engagement [16, 34, 48, 64]. Item-to-item (I2I) note recommendation is a classic way to retrieve notes of potential interest to the user from the millions-level notes pool [19, 65]. Given a target note, I2I methods select the relevant notes according to content [65] or collaborative signals [19].
专注于用户生产内容(UGC)和提供更真实和个性化的用户体验,像小红书和Lemon8这样的社交媒体在用户中获得了显著的欢迎。这些平台鼓励用户分享他们的产品评论、旅行博客和生活经历等内容,也称为“笔记”。通过根据用户偏好提供更个性化的笔记,笔记推荐在增强用户参与方面发挥着至关重要的作用[16,34,48,64]。项目对项目(I2I)笔记推荐是从百万级笔记池中检索用户潜在感兴趣的笔记的经典方式[19,65]。给定一个目标笔记,I2I方法根据内容[65]或协作信号[19]选择相关笔记。
Existing online methods of I2I note recommendation usually input whole note content into BERT-based models [3] to generate embeddings of notes, and recommend relevant notes based on embedding similarity [11, 36]. However, these methods merely treat hashtags/categories as a component of note content, underutilizing their potential. As shown in Figure 1, hashtags/categories (e.g., # Singapore) represent the central ideas of notes, which are crucial in determining whether two notes contain related content. In fact, we find that generating hashtags/categories is similar to producing note embeddings. Both compress the key note information into limited content. Therefore, learning to generate hashtags/categories can potentially enhance the quality of embeddings. Besides, Large Language Models (LLMs) have recently exhibited powerful abilities in natural languages [10, 24, 42, 54] and recommendations [1, 2, 34, 59]. However, there is a scarcity of research investigating the application of LLMs in I2I recommendations. Utilizing LLMs to improve I2I note recommendations holds considerable promise.
I2I笔记推荐的现有在线方法通常将整个笔记内容输入到基于BERT的模型中[3],以生成笔记的嵌入,并根据嵌入相似度推荐相关笔记[11,36]。然而,这些方法仅仅将主题标签/类别视为笔记内容的一个组成部分,没有充分利用它们的潜力。如图1所示,主题标签/类别(例如,#新加坡)代表了笔记的中心思想,这对于确定两个笔记是否包含相关内容至关重要。事实上,我们发现生成主题标签/类别类似于生成笔记嵌入。两者都将关键的笔记信息压缩成有限的内容。因此,学习生成主题标签/类别可以潜在地提高嵌入的质量。此外,大型语言模型(LLM)最近在自然语言[10,24,42,54]和推荐[1,2,34,59]中表现出强大的能力。然而,研究LLM在I2I建议中的应用的研究很少。利用LLM来改进I2I票据建议具有相当大的前景。
Inspired by the above insights, we propose a unified multi-task approach called NoteLLM in this paper. Based on LLMs, NoteLLM learns from the I2I note recommendation and hashtag/category generation tasks, aiming to enhance the I2I note recommendation ability by learning to extract condensed concepts. Specifically, we first construct a unified Note Compression Prompt for each note sample and then decode via pre-trained LLMs (e.g., LLaMA 2 [42]), which utilize a special token to compress the note content and generate hashtags/categories simultaneously. To construct the related note pairs, we count the co-occurrence scores for all note pairs from user behaviours, and form the set of co-occurrence scores for each note. We select notes with the highest co-occurrence scores in the set as the related notes for a given note. Further, to recommend the relevant notes for each sample, Generative-Contrastive Learning (GCL) utilizes the compressed tokens as the embedding of each note, and then trains the LLMs to identify the related notes from in-batch negatives. Simultaneously, we employ Collaborative Supervised Fine-tuning (CSFT) approach to train models to generate hashtags/categories for each note. Since both the compression token learned by the I2I note recommendation task and the hashtag/category generation task aim to extract the key concept of the note content, CSFT can enhance note embeddings effectively.
受上述见解的启发,我们在本文中提出了一种统一的多任务方法,称为NoteLLM。基于LLM,NoteLLM从I2I笔记推荐和主题标签/类别生成任务中学习,旨在通过学习提取浓缩概念来增强I2I笔记推荐能力。具体来说,我们首先为每个笔记样本构建一个统一的笔记压缩提示,然后通过预训练的LLM(例如,LLaMA 2[42])进行解码,它利用一个特殊的令牌来压缩笔记内容并同时生成主题标签/类别。为了构建相关的笔记对,我们从用户行为中计算所有笔记对的共现分数,并为每个笔记形成共现分数集。我们选择集合中共现分数最高的笔记作为给定笔记的相关笔记。此外,为了推荐每个样本的相关笔记,Generative-Contrastive学习(GCL)利用压缩标记作为每个笔记的嵌入,然后训练LLM从批内底片中识别相关笔记。同时,我们采用协作监督微调(CSFT)方法训练模型为每个笔记生成主题标签/类别。由于I2I笔记推荐任务学习的压缩标记和主题标签/类别生成任务都旨在提取笔记内容的关键概念,CSFT可以有效地增强笔记嵌入。
2. 相关工作
2.1 I2I Recommendation
I2I recommendation is a crucial technique that can recommend a ranked list of items from a large-scale item pool based on a target item. I2I recommendation either pre-constructs the I2I index [55] or retrieves relevant items online using the approximate k-nearest neighbor method [12]. Traditional I2I recommendations typically rely solely on collaborative signals from user behaviors [55, 67]. However, these methods cannot manage cold-start items due to lack of user-item interaction [65]. To address this issue, numerous studies have investigated content-based I2I recommendations [8, 65]. We focus on the text-based I2I recommendation system, which measures the similarity of items based on their textual content. Initially, representation of text-based I2I recommendation relied on a termbased sparse vector matching mechanism [35, 37]. With the advent of deep learning, neural networks have proven more adept at representing text information [3, 27]. Previous works [13, 25, 52, 53] transform texts into embeddings in the same latent space to measure their relationship through embedding similarity. LLMs have recently gained great attention for their impressive abilities [33, 54, 56]. However, the application of LLMs in I2I recommendation remains unexplored. Besides, some studies treat LLMs solely as encoders for generating embeddings [10, 26, 28], failing to leverage their full potential for generation. In NoteLLM, we utilize LLMs to generate hashtags/categories, which can enhance note embeddings.
I2I推荐是一种至关重要的技术,可以基于目标项目从大规模项目池中推荐项目的排序列表。I2I推荐要么预先构造I2I索引[55],要么使用近似k-最近邻方法在线检索相关项目[12]。传统的I2I推荐通常完全依赖于来自用户行为的协作信号[55,67]。然而,由于缺乏用户-项目交互,这些方法无法管理冷启动项目[65]。为了解决这个问题,许多研究调查了基于内容的I2I推荐[8,65]。我们关注基于文本的I2I推荐系统,它根据项目的文本内容来衡量项目的相似性。最初,基于文本的I2I推荐的表示依赖于基于术语的稀疏矢量匹配机制[35,37]。随着深度学习的出现,神经网络已被证明更擅长表示文本信息[3,27]。以前的作品[13,25,52,53]将文本转换为相同潜在空间中的嵌入,以通过嵌入相似性来衡量它们的关系。LLM最近因其令人印象深刻的能力而获得极大的关注[33,54,56]。然而,LLM在I2I推荐中的应用仍未得到探索。此外,一些研究将LLM仅视为生成嵌入的编码器[10,26,28],未能充分利用它们的生成潜力。在NoteLLM中,我们利用LLM生成主题标签/类别,这可以增强笔记嵌入。
2.2 LLMs for Recommendation
LLMs have recently made significant advancements [31, 41, 42]. Consequently, numerous studies incorporate LLMs into recommendation tasks [5, 18, 50]. There are three main methods of integrating LLMs with recommendations [18, 50]. The first method is utilizing LLMs to augment data [21, 29, 51]. Due to the abundant world knowledge contained by LLMs, the augmented data are more prominent and diverse than the raw data [23, 46, 51]. However, these methods require continuous preprocessing of the testing data to align with the augmented training data and are highly dependent on the quality of LLMs’ generation. The second method is leveraging LLMs to recommend directly. These methods design special prompts [9, 20, 43] or use supervised finetuning [1, 2, 59] to induce LLMs to answer the given questions. Nevertheless, because of the limited context length, these methods only focus on the reranking stage [7, 59], which only contains dozens of candidate items. The last method is adopting LLMs as the encoders to generate embeddings representing specific items [15, 49]. Although these methods are effective to extract information, they all discard the generative capabilities of LLMs. In contrast to above methods, NoteLLM employs LLMs during the recall phase and learns hashtag generation to improve LLMs’ ability to produce embeddings.
LLM最近取得了重大进展[31,41,42]。因此,许多研究将LLM纳入推荐任务[5,18,50]。将LLM与推荐相结合的主要方法有三种[18,50]。第一种方法是利用LLM来增强数据[21,29,51]。由于LLM包含的丰富的世界知识,增强的数据比原始数据[23,46,51]更加突出和多样化。然而,这些方法需要对测试数据进行持续的预处理,以与增强的训练数据保持一致,并且高度依赖于LLM生成的质量。第二种方法是利用LLM直接推荐。这些方法设计特殊提示[9,20,43]或使用监督微调[1,2,59]来诱导LLM回答给定的问题。尽管如此,由于上下文长度有限,这些方法只关注重排序阶段[7,59],该阶段仅包含数十个候选项。最后一种方法是采用LLM作为编码器来生成表示特定项目的嵌入[15,49]。虽然这些方法对提取信息很有效,但它们都丢弃了生成LLM 的功能。与上述方法相比,NoteLLM 在召回阶段使用 LLM 并学习标签生成以提高 LLM 生成嵌入的能力。
2.3 Hashtag/Category Generation from Text
Hashtags and categories, as tagging mechanisms on social media, streamline the identification of topic-specific messages and aid users in finding themed content. Generating these from text can assist in creating identifiers for untagged notes or suggesting options to users based on their preferences. In this domain, there are three main methods: extractive, classification, and generative methods. Extractive methods identify key phrases in texts as hashtags or categories [61, 63], but cannot obtain those not present in the original text. Classification methods view this task as a text classification problem [14, 58, 60]. However, these may yield sub-optimal results due to the diverse, free-form nature of human-generated hashtags. Generative methods generate the hashtags/categories directly according to input texts [4, 44, 45]. Whereas, these methods are limited to solving the hashtag/category generation task. In NoteLLM, LLMs perform multi-task learning, simultaneously executing I2I recommendation and hashtag/category generation. Due to the similarity of these two tasks, learning to generate the hashtag/category can also enhance the I2I recommendation.
主题标签和类别作为社交媒体上的标记机制,简化了特定主题消息的识别并帮助用户查找主题内容。从文本中生成这些有助于为未标记的注释创建标识符或根据用户的首选项向用户推荐选项。在这个领域,有三种主要方法:提取、分类和生成方法。①提取方法将文本中的关键短语识别为主题标签或类别 [61, 63],但无法获得原始文本中不存在的短语。②分类方法将此任务视为文本分类问题 [14, 58, 60]。但是,由于人工生成的主题标签的多样性、自由形式性质,这些可能会产生次优结果。③生成方法直接根据输入文本生成主题标签/类别 [4, 44, 45]。然而,这些方法仅限于解决主题标签/类别生成任务。在 NoteLLM 中,LLM 执行多任务学习,同时执行 I2I 推荐和主题标签/类别生成。由于这两个任务的相似性,学习生成主题标签/类别也可以增强 I2I 推荐。
图 2:NoteLLM 框架使用统一的提示用于 I2I 笔记推荐以及标签/类别生成。笔记通过笔记压缩提示进行压缩,并由预训练的语言模型进行处理。利用共现机制构建相关笔记对,并使用生成对比学习来训练 I2I 推荐任务。NoteLLM 还提取笔记的关键概念用于标签/类别生成,从而增强 I2I 推荐任务。
问题定义
In this section, we introduce the problem definition. We assume
N
=
{
n
1
,
n
2
,
.
.
.
,
n
m
}
N=\{n_{1}, n_{2}, ..., n_{m}\}
N={n1,n2,...,nm} as note pool,where m is the number of notes. Each note contains a title, hashtag, category, and content. We denote the i -th note as
n
i
=
(
t
i
,
t
p
i
,
c
i
,
c
t
i
)
n_{i}=(t_{i}, t p_{i}, c_{i}, c t_{i})
ni=(ti,tpi,ci,cti) , where 𝑡𝑖,
t
p
i
t p_{i}
tpi ,
c
i
c_{i}
ci ,
c
t
i
c t_{i}
cti mean the title, the hashtag, the category and the content respectively. In the I2I note recommendation task, given a target note
n
i
n_{i}
ni , the LLMbased retriever aims to rank the top- k notes, which are similar to the given note, from the note pool
N
N
N\
{
n
i
}
\{n_{i}\}
{ni} .In the hashtag/category generation task, the ILM is utilized to generate the hashtag
t
p
i
t p_{i}
tpi according to
t
i
t_{i}
ti and
c
t
i
c t_{i}
cti .Besides, in the category generation task, the LLM is to generate the category
c
i
c_{i}
ci according to
t
i
ˉ
t_{\bar{i}}
tiˉ ,
t
p
i
t p_{i}
tpi and
c
t
i
c t_{i}
cti
在本节中,我们介绍问题的定义。我们假设
N
=
{
n
1
,
n
2
,
.
.
.
,
n
m
}
N = \{n_{1}, n_{2},..., n_{m}\}
N={n1,n2,...,nm}为笔记池,其中(m)是笔记的数量。每篇笔记包含一个标题、一个话题标签、一个类别和内容。我们将第(i)篇笔记表示为
n
i
=
(
t
i
,
t
p
i
,
c
i
,
c
t
i
)
n_{i}=(t_{i}, tp_{i}, c_{i}, ct_{i})
ni=(ti,tpi,ci,cti),其中
t
i
t_{i}
ti、
t
p
i
tp_{i}
tpi、
c
i
c_{i}
ci、
c
t
i
ct_{i}
cti分别表示标题、话题标签、类别和内容。在笔记到笔记(I2I)的笔记推荐任务中,给定一个目标笔记(n_{i}),基于语言大模型(LLM)的检索器旨在从笔记池
N
N
N\
{
n
i
}
\{n_{i}\}
{ni}中对与给定笔记相似的前(k)篇笔记进行排序。在话题标签/类别生成任务中,语言大模型(ILM)被用来根据
t
i
t_{i}
ti和
c
t
i
ct_{i}
cti生成话题标签
t
p
i
tp_{i}
tpi。此外,在类别生成任务中,语言大模型(LLM)将根据
t
i
ˉ
t_{\bar{i}}
tiˉ、
t
p
i
tp_{i}
tpi和
c
t
i
ct_{i}
cti生成类别
c
i
c_{i}
ci。
方法
NoteLLM 框架:Note Compression Prompt Construction、GCL 和 CSFT【图 2 】
- Note Compression Prompt 来管理 I2I 推荐和主题标签/类别生成任务。然后,这些提示被标记化并馈送到 LLM 中。NoteLLM 将协作信号和语义信息集成到隐藏状态中。
- GCL 利用生成的压缩词的隐藏状态进行对比学习,从而获取协作信号。
- CSFT 利用注释的语义和协作信息来生成主题标签和类别。
4.2. Note Compression Prompt
aim: condense the note content into a single special token. This condensed special token is then used to acquire collaborative knowledge through GCL. → generate hashtags/categories using this knowledge via CSFT.
Specifically, following prompt template for general note compression and hashtags/categories generation:
Prompt: [BOS]<Instruction> <Input Note>
The compression word is:"[EMB]". <Output Guidance> <Output>[EOS]
在此模板中,[BOS]、[EMB] 和 [EOS] 是特殊标记,而 <Instruction><Input Note> 和 <Output Guidance> 是替换为特定内容的占位符。类别生成的具体内容定义如下:
The template for hashtag generation is presented below:
鉴于用户生成的主题标签数量的不可预测性,随机选择原始主题标签的子集作为主题标签生成的输出目标,以最大限度地减少对 LLM 的潜在误导。随机选择的主题标签的数量(表示为 <j>)已合并到 和 <Output Guidance>.中。
提示完成后,它们将被标记化并馈送到 LLM 中。然后,LLM 将协作信号和关键语义信息提炼成压缩的单词,并根据笔记的中心思想生成主题标签/类别。
4.3. Generative-Contrastive Learning
预先训练的 LLM 通常通过指令调整 [47, 62] 或来自人类反馈的强化学习 (RLHF) [32, 38] 来学习新知识。这些方法主要侧重于利用语义信息来提高 LLM 的有效性和安全性。然而,仅仅依赖 LLM 中的语义信息对于推荐任务来说是不够的 [6, 20]。LLM 中不存在的协作信号在识别用户特别感兴趣的笔记方面起着至关重要的作用 [6, 20]。因此,我们建议 GCL 使 LLM 能够捕获更强的协作信号。与从特定答案或奖励模型中学习相反,GCL 采用对比学习,从整体角度学习笔记之间的关系接近性。
为了将协作信号集成到 LLM 中,我们采用共现机制,根据用户行为构建相关的笔记对。这种机制基于这样一个假设,即经常一起阅读的注释可能是相关的。因此,我们会在一周内收集用户行为数据以进行共存计数。我们统计了用户查看笔记
n
A
n_{A}
nA 并随后点击笔记
n
B
n_{B}
nB 的次数。同时,为了区分不同用户的共现贡献,我们为不同的点击分配了不同的权重。具体来说,我们按以下方式计算共现分数:
s
n
A
→
n
B
=
∑
i
=
1
U
1
N
i
,
s_{n_{A} \to n_{B}}=\sum_{i=1}^{U} \frac{1}{N_{i}},
snA→nB=∑i=1UNi1, 其中
s
n
A
→
n
B
s_{n_{A} \to n_{B}}
snA→nB 表示从注释
n
A
n_{A}
nA 到注释
n
B
n_{B}
nB 的共现分数,U 是该用户行为数据中的用户数,
N
i
N_{i}
Ni 表示用户行为数据中第 i 个用户点击的笔记集数量。此操作旨在防止活跃用户的误导,他们可能会不分青红皂白地点击推荐给他们的每个笔记。在计算了所有笔记对的共现分数后,我们构建了从笔记
n
i
n_{i}
ni 到所有其他笔记的共现分数集
S
n
i
S_{n_{i}}
Sni。具体来说,
S
n
1
S_{n_{1}}
Sn1 定义为抖
s
n
i
→
n
j
∣
1
≤
j
≤
m
,
i
≠
j
{s_{n_{i} \to n_{j}} | 1 ≤j ≤m, i ≠j}
sni→nj∣1≤j≤m,i=j 。接下来,我们从
S
n
i
S_{n_{i}}
Sni 中过滤共现分数高于 u 或低于阈值 1 的异常值注释。最后,我们从 fltered 集合中选择共现分数最高的 t 笔记作为笔记
n
i
n_{i}
ni 的相关笔记。
在构建了相关的笔记对之后,训练 NoteLLM 根据文本语义和协作信号来确定笔记的相关性。与简单地进行特殊池化不同word 来表示笔记 [26],利用 prompt 来压缩笔记信息,生成一个虚词。压缩后的虚字的最后隐藏状态包含了给定笔记的语义信息和协同信号,可以代表笔记。具体来说,由于 LLM 的自回归性质,我们取 [EMB] 前一个标记的最后一个隐藏状态,并使用线性层将其转换为注释嵌入空间,其维度为 d 我们将第 i 个笔记
n
i
n_{i}
ni 的嵌入表示为
n
i
n_{i}
ni 。我们假设每个小批量包含 B 个相关的 note 对,因此每个小批量总共有 2Bnote。我们将注释
n
1
n_{1}
n1 的相关注释表示为
n
i
+
n_{i}^{+}
ni+ ,其嵌入表示为
n
i
+
n_{i}^{+}
ni+。根据 [30],GCL 的损失计算如下:
L
c
l
=
−
1
2
B
∑
i
=
1
2
B
l
o
g
e
s
i
m
(
n
i
,
n
i
+
)
⋅
e
τ
∑
j
∈
[
2
B
]
\
{
i
}
e
s
i
m
(
n
i
,
n
j
)
⋅
e
τ
,
L_{c l}=-\frac{1}{2 B} \sum_{i=1}^{2 B} log \frac{e^{sim\left(n_{i}, n_{i}^{+}\right) \cdot e^{\tau}}}{\sum_{j \in[2 B] \backslash\{i\}} e^{sim\left(n_{i}, n_{j}\right) \cdot e^{\tau}}},
Lcl=−2B1∑i=12Blog∑j∈[2B]\{i}esim(ni,nj)⋅eτesim(ni,ni+)⋅eτ,,其中
L
c
l
L_{c l}
Lcl 表示 GCL 的丢失,τ 表示可学习温度,
s
i
m
(
a
,
b
)
=
a
⊤
b
/
(
∥
a
∥
∥
b
∥
)
sim(a, b)=a^{\top} b /(\|a\|\|b\|)
sim(a,b)=a⊤b/(∥a∥∥b∥)
⭐4.4 Collaborative Supervised Fine-Tuning
具体来说,我们采用 CSFT,它利用笔记的语义内容和压缩令牌中的协作信号来生成主题标签/类别。为了提高训练效率并防止遗忘问题 [40],我们从每个批次中选择 rnotes 用于标签生成任务,而剩余的 notes 则分配给类别生成任务。具体来说,按如下方式计算 CSFT 损失:
L
g
e
n
=
−
1
T
∑
i
=
1
T
l
o
g
(
p
(
o
i
∣
o
<
i
,
i
)
)
,
L_{g e n}=-\frac{1}{T} \sum_{i=1}^{T} log \left(p\left(o_{i} | o_{<i}, i\right)\right),
Lgen=−T1∑i=1Tlog(p(oi∣o<i,i)),
其中
L
g
e
n
L_{gen }
Lgen 是 CSFT 损失,T 是输出的长度,oi表示输出序列 o 中的第 i 个标记,i 是输入序列。
最后,我们定义 NoteLLM 的损失函数以合并 GCL 和 CSFT:
L
=
L
c
l
+
α
L
g
e
n
1
+
α
,
L=\frac{L_{c l}+\alpha L_{g e n}}{1+\alpha},
L=1+αLcl+αLgen,,其中 L 是 NoteLLM 的总损耗,
c
c
c c
cc 是超参数。通过模型更新,NoteLLM 能够同时执行笔记推荐场景的 I2I 推荐任务和井号标签/类别生成任务。
补充1:归一化损失拓展
这篇论文中提出的损失函数组合方式对我的领域来说挺新颖的,核心创新点在于通过引入加权系数 α 和归一化因子 (1 + α),对两种损失函数
L
c
l
L_{cl}
Lcl 和
L
g
e
n
L_{gen}
Lgen 进行平衡,并且以非对称的方式动态调节它们的重要性。这种设计突破了传统的直接加权方法(如使用两个超参数或 (
α
\alpha
α) 和 (1-
α
\alpha
α) 的形式),优点:
1. 动态平衡不同目标的优化:
传统的直接加权方法(如用两个超参数或 (
α
\alpha
α) 和 (1-
α
\alpha
α) 通常会要求手动调参,找到适合的权重组合。但这种新颖的组合方式通过引入归一化因子 (1 +
α
\alpha
α),使得损失项的相对权重更加平滑,减少了调参的复杂度。
- α 的作用:它明确控制了两种损失的权重比例,同时通过 ( 1 + α ) (1 + \alpha) (1+α) 的归一化避免了权重的绝对值失控。
- α 较小 时, α 1 + α \frac{\alpha}{1+\alpha} 1+αα 的值接近 0,强调对比学习损失 L c l L_{cl} Lcl 的优化;
- α 较大 时,
α
1
+
α
\frac{\alpha}{1+\alpha}
1+αα 的值趋近于 1,更多优化协同监督微调损失
L
g
e
n
L_{gen}
Lgen。
这种设计使得损失项的贡献可以随着任务需求动态调整,而不会因为不合理的权重导致训练失衡。
2. 统一了优化目标,减少冲突:
对比学习损失 (L_{cl}) 和 协同监督损失 (L_{gen}) 本质上优化的目标可能有所冲突:
- L c l L_{cl} Lcl 注重样本之间的语义相关性,强化模型对笔记间细粒度关系的建模。
- L g e n L_{gen} Lgen 则关注序列生成的质量,强调标签预测的准确性,例如标签分类任务中的语义一致性。
- 如果直接线性相加,两个损失项的梯度可能会相互干扰,导致优化过程不稳定。而引入归一化因子 ( 1 + α ) (1 + \alpha) (1+α)后,两种损失的贡献被统一到一个平衡的范围内,减轻了这种冲突。
最后,类似的加权与归一化方法可以扩展到 3 个或更多损失的组合:
扩展到多个损失的加权公式
对于 ( n ) 个损失(如 (
L
1
,
L
2
,
…
,
L
n
L_1, L_2, \dots, L_n
L1,L2,…,Ln )),可以对它们进行加权和归一化,类似于两损失的形式。一个通用的公式是:
L
=
∑
i
=
1
n
α
i
L
i
∑
i
=
1
n
α
i
L = \frac{\sum_{i=1}^{n} \alpha_i L_i}{\sum_{i=1}^{n} \alpha_i}
L=∑i=1nαi∑i=1nαiLi
- 权重参数 ( α i \alpha_i αi):控制每个损失 ( L i L_i Li) 的重要性。类似于两损失的情况,( α i \alpha_i αi) 是可以调节的超参数,用于动态调整不同损失的贡献。
- 归一化项 ( ∑ i = 1 n α i \sum_{i=1}^{n} \alpha_i ∑i=1nαi):确保总损失的范围是平衡的,不因为某个权重的异常放大或缩小而影响训练稳定性。
特点:
- 动态平衡:通过归一化,保证每个损失都有贡献,而不会因为某个 ( α i \alpha_i αi) 的极端值导致某些损失被忽略。
- 灵活性:可以通过调节 ( α i \alpha_i αi) 的值来控制每个损失的相对重要性。例如,如果想让第一个损失 ( L 1 L_1 L1) 更重要,可以设置 ( α 1 > α 2 , α 3 , … \alpha_1 > \alpha_2, \alpha_3, \dots α1>α2,α3,…)。
实际应用的话:
补充1.1.每个损失有不同的优先级
例如,对于 ( L 1 L_1 L1), ( L 2 L_2 L2), ( L 3 L_3 L3):
- ( L 1 L_1 L1):主任务损失,例如分类任务的交叉熵损失。
- ( L 2 L_2 L2):辅助任务损失,例如对比学习损失,用于提升表示质量。
- ( L 3 L_3 L3):正则化损失,例如 L2 正则化,用于约束模型复杂度。
在这种情况下,可以设置优先级,比如:
- 主任务损失的 ( α 1 \alpha_1 α1) 值较大(如 1.0)。辅助任务的 ( α 2 \alpha_2 α2) 值适中(如 0.5)。正则化的 ( α 3 \alpha_3 α3) 值较小(如 0.1)。
补充1.2.任务需求动态变化
在某些多任务学习中,不同阶段可能需要不同的损失权重。例如:
- 早期阶段:更强调对比学习损失 ( L 2 L_2 L2),以学习更好的表示。
- 后期阶段:更注重主任务损失 ( L 1 L_1 L1),以提升主任务性能。
可以动态调整 ( α i \alpha_i αi) 的值,或者设计一个自动调节机制(例如通过训练过程中的某些指标动态调整权重)。
补充1.3.进一步优化:自动权重学习
手动调节 (
α
i
\alpha_i
αi) 并不总是高效的,尤其是当损失数量较多时。为此,可以引入自动学习权重的机制,比如:
方法 1:基于梯度大小的权重调整
通过观察每个损失的梯度大小,动态调整权重。例如:
α
i
=
1
∥
∇
L
i
∥
\alpha_i = \frac{1}{\|\nabla L_i\|}
αi=∥∇Li∥1
- 梯度较大的损失(优化难度较高)会被赋予较小的权重,避免对训练过程造成过大影响。
- 梯度较小的损失会被赋予较大的权重,确保它对训练有足够的贡献。
方法 2:基于不确定性的动态权重
可以使用类似于多任务学习中的不确定性加权方法(Uncertainty Weighting),通过引入可学习参数 (
σ
i
\sigma_i
σi):
L
=
∑
i
=
1
n
1
2
σ
i
2
L
i
+
log
(
σ
i
)
L = \sum_{i=1}^{n} \frac{1}{2\sigma_i^2} L_i + \log(\sigma_i)
L=i=1∑n2σi21Li+log(σi)
- ( σ i \sigma_i σi) 是可学习的参数,训练过程中模型会自动调整每个损失的权重。
- 这种方法可以避免手动调参,且随着训练逐步收敛。
补充1.4.潜在问题与解决方案
问题 1:损失尺度不一致
多个损失的量级可能不同(例如,分类损失的值通常较小,而对比学习损失可能较大)。这种情况下,直接加权会导致某些损失主导优化过程。
- 解决方法:对各损失进行归一化处理,确保它们的量级相近。e.g.,可以用每个损失的初始值或均值进行归一化: L i ′ = L i mean ( L i ) L_i' = \frac{L_i}{\text{mean}(L_i)} Li′=mean(Li)Li
问题 2:权重调节过于频繁
如果损失权重在训练过程中变化过快,可能导致训练不稳定:引入平滑机制,例如对权重的更新加入动量项,避免剧烈波动。
补充2:关于共现分数、共现分数集、协作监督微调CSFT
- 共现分数和共现分数集
- 共现分数:基于用户行为数据计算,假设笔记频繁一起被阅读则可能相关。通过统计用户在一周内先查看笔记(n_{A})后点击笔记(n_{B})的次数来计算共现分数( s n A → n B = ∑ i = 1 U 1 N i s_{n_{A} \to n_{B}}=\sum_{i = 1}^{U}\frac{1}{N_{i}} snA→nB=∑i=1UNi1),其中(U)是用户数量,( N i N_{i} Ni)是第(i)个用户点击的笔记集数量。这样做是为了考虑不同用户的点击行为差异,防止活跃用户的无差别点击对共现分数产生误导。
- 共现分数集:对于每个笔记( n i n_{i} ni),计算它到所有其他笔记的共现分数,形成共现分数集( S n i = { s n i → n j ∣ 1 ≤ j ≤ m , i ≠ j } S_{n_{i}}=\{s_{n_{i} \to n_{j}}|1\leq j\leq m, i\neq j\} Sni={sni→nj∣1≤j≤m,i=j})。然后筛选出共现分数高于上限(u)或低于下限(l)的异常值笔记,从筛选后的集合中选择(t)个共现分数最高的笔记作为( n i n_{i} ni)的相关笔记。这有助于构建高质量的相关笔记对,为后续模型训练提供准确的数据基础。
- 从批内负样本中识别相关笔记
- 在生成对比学习(GCL)中,每个小批次包含(B)个相关笔记对,共(2B)个笔记。将笔记通过Note Compression Prompt压缩后输入预训练的LLMs,利用其隐藏状态进行对比学习。对于每个笔记( n i n_{i} ni),其相关笔记为( n i + n_{i}^{+} ni+),模型会计算( n i n_{i} ni)与( n i + n_{i}^{+} ni+)以及其他笔记(即批内负样本)的相似度。通过最小化( L c l = − 1 2 B ∑ i = 1 2 B log e s i m ( n i , n i + ) ⋅ e τ ∑ j ∈ [ 2 B ] \ { i } e s i m ( n i , n j ) ⋅ e τ L_{cl}=-\frac{1}{2B}\sum_{i = 1}^{2B}\log\frac{e^{sim(n_{i},n_{i}^{+})\cdot e^{\tau}}}{\sum_{j\in[2B]\backslash\{i\}}e^{sim(n_{i},n_{j})\cdot e^{\tau}}} Lcl=−2B1∑i=12Blog∑j∈[2B]\{i}esim(ni,nj)⋅eτesim(ni,ni+)⋅eτ)损失函数,训练LLMs从批内负样本中区分出相关笔记,使正样本对的相似度得分高于负样本对,从而让模型学习到笔记之间的关系亲近性,获取协同信号。
- 协作监督微调(CSFT)
- 利用笔记的语义内容和压缩令牌中的协同信号生成标签和类别。在训练时,从每个批次中选择(r)个笔记用于标签生成任务,其余笔记用于类别生成任务。通过计算( L g e n = − 1 T ∑ i = 1 T log ( p ( o i ∣ o < i , i ) ) L_{gen}=-\frac{1}{T}\sum_{i = 1}^{T}\log(p(o_{i}|o_{<i},i)) Lgen=−T1∑i=1Tlog(p(oi∣o<i,i)))损失函数进行训练,其中(T)是输出长度,( o i o_{i} oi)是输出序列中的第(i)个标记,(i)是输入序列。这使得模型能够从文本内容中提取关键信息,并以标签和类别的形式进行总结,进一步丰富了模型对笔记语义的理解,同时将两个任务集成在一个提示中,提高了训练效率并防止遗忘问题。最后,通过总损失函数( L = L c l + α L g e n 1 + α L=\frac{L_{cl}+\alpha L_{gen}}{1+\alpha} L=1+αLcl+αLgen)将GCL和CSFT结合,实现模型在推荐任务和生成任务上的性能优化。
6. 结论
In this work, we propose retrievable LLMs, called NoteLLM, for note recommendation with three key components: Note Compression Prompt, GCL, and CSFT. To manage both I2I recommendation and hashtag/category generation tasks, we utilize Note Compression Prompt to form the compressed word embeddings and generate the hashtag/category simultaneously. Then, we use GCL to conduct contrastive learning based on the hidden states of the compressed word, which acquires collaborative signals. Additionally, we employ CSFT to preserve the generation capability of NoteLLM while leveraging the semantic and collaborative information of the note to generate hashtags and categories, which can enhance the embeddings for recommendation. Comprehensive experiments are conducted, which validate the effectiveness of NoteLLM.
在这项工作中,我们提出了可检索的大语言模型,称为 NoteLLM,用于笔记推荐,它有三个关键组成部分:笔记压缩提示(Note Compression Prompt)、GCL 和 CSFT。为了处理物品到物品的推荐以及标签/类别生成任务,我们利用笔记压缩提示来形成压缩的词嵌入,并同时生成标签/类别。然后,我们使用 GCL 基于压缩词的隐藏状态进行对比学习,从而获得协同信号。此外,我们采用 CSFT 在保留 NoteLLM 的生成能力的同时,利用笔记的语义和协同信息生成标签和类别,这可以增强用于推荐的嵌入。进行了全面的实验,验证了 NoteLLM 的有效性。