导读 探索大语言模型在图推荐系统优化中的潜力,已成为学术与产业界的热议话题。本文将以香港大学的前沿研究为例,精炼阐述四大策略:大模型嵌入图节点、图结构与大模型深度融合、纯模型驱动图数据训练,以及文本模态增强推荐算法。重点剖析如何利用文本模态优化 GNN 推荐算法的表征学习,以及互信息与 InfoNCE 在优化过程中的关键作用。同时,文章将展示如何运用商品描述与用户反馈,结合大语言模型模型,精准构建用户与商品画像,实现个性化推荐。此外,还将深入讨论大语言模型等技术在可解释性推荐中的创新应用,以全面提升推荐系统效能。
核心议题概览:1. 大语言模型与图推荐系统的融合技巧
2. 利用大型模型进行推荐系统中的表征学习
3. 利用大模型实现推荐系统可解释性推荐
4. 总结
5. Q&A
通过这些关键议题的探讨,将揭示大语言模型如何有效推动图推荐系统向更高层次演进。
分享嘉宾|任旭滨 香港大学 博士生
编辑整理|王超
内容校对|李瑶
出品社区|DataFun
大语言模型与图推荐系统的融合技巧
首先从模型设计角度出发,探讨大型语言模型和图学习领域中的四种实现方法。
1. GNN 作为前缀(GNNs as Prefix)
这种方法中,GNN 通常扮演着分词器的角色,将图数据编码为一个丰富的结构信息的图标记序列,然后输入到 LLM 中,以便与自然语言对齐。这些方法可以分为两类:2. LLM 作为前缀(LLMs for Prefix)
基于嵌入向量的图前缀方法利用大型语言模型生成的嵌入向量作为图神经网络的输入。这些嵌入向量可以用于生成有意义的节点嵌入向量,从而提高图神经网络的性能。另一种方法是利用大型语言模型生成的标签作为监督信号,以提高图神经网络的训练效果。3. LLM 与图融合(LLMs-Graphs Interaction)
这种方法不仅增强了 LLM 解决图任务的能力,还增强了 GNN 的参数学习。这些工作可以分为三类:GNN 和 LLM 混合训练,实现这两种模型参数的融合协同训练;
GNN 和 LLM 对齐,专注于在两个模型之间实现表示或任务对齐;
基于LLM 的图代理,它建立了一个基于 LLM 的自主代理来规划和解决图形任务。
4. 只使用 LLM(LLMs-Only)
这种方法旨在让语言模型能够直接接受图形结构信息、理解它,并与该信息相结合对下游各种任务进行推理。这些方法可以大致分为两类:利用大型模型进行推荐系统中的表征学习
1. 用户和商品的交互数据被编码为特征向量的学习方式
首先,我们需要基于用户的商品交互,使用结构化的方法(即将用户和商品的交互表示为图结构)来学习用户和商品的特征向量。接下来,我们可以计算用户与商品的特征向量的相似度,以便为每个用户对商品进行全排序。并且将未交互过的商品排在前面。这种形式也被称为协同过滤。最后,通过用户和商品的历史交互数据对模型进行模型的训练,从而实现精准个性化的推荐。
但是我们需要考虑一种情况,即用户购买商品的记录可能存在噪声。例如,一个用户购买了一件商品,但后来发现自己不喜欢或不想再次购买。但是,在模型训练时,这种噪音数据会被视为是训练数据的一部分。这种噪声的存在会影响速率特征表示的学习过程,使其成为一个有噪声的表征学习。现在我们需要考虑如何缓解这个问题。如果只有原本那些用户商品的交互数据,那么对于所学习到的协同过滤特征表示,我们确实没有可以优化的余地。但是,如果存在另一种模态,比如文本模态特征表示,同时这个文本中存在一些信息量,即用户和商品之间的交互偏好。这样,我们可以找到一些存在于文本模态和协同过滤特征之间的共性信息。从形式上讲,二者是可以融合的,因为它们蕴含有相同的有益于推荐的信息量。因此,假如图中 shared information 部分融合得越好,就可以使得原始的协同过滤特征表示逐渐消除噪声部分,导致噪音空间也越来越小。这样的过程,就相当于在优化协同过滤的表示。整个学习过程可以形象地比喻为首先固定文本特征表示,然后协同特征表示不断向文本特征表示靠近。这样 shared information 越多,使得学习到的表征更加纯净,也有可能提高模型性能。
需要注意的是,这里我们假设文本模态是固定不变的。通过一定的推导,可以发现其本质目标是最大化文本模态表征和协同过滤表征的互信息。接下来,我们将互信息的优化进行推导,以得出优化其 InfoNCE 下界。对于 InfoNCE 的计算,由于每个用户/商品都有一个 GNN 学习到的协同过滤表征和一个文本模态表征,我们需要通过函数 f 计算一个实数,以便计算互信息的下限值。这个函数 f 也被称为 critic function。通过上述推导,可以发现我们需要完成两个步骤。第一步是获取高质量的文本模态特征,第二步是实现 critic function 的有效建模。2. 通过大模型获取高质量文本特征表示的策略
在推荐算法所用到的数据集中一般包含了大量的原始文字。例如,商品可能会有一些基本的描述,书籍可能会有前言或摘要,而餐馆则可能会有用户评价或老板的介绍。当这些信息被录入平台时,则会有产生大量的文本描述。我们需要确定如何利用大语言模型,将这些初始描述转化为每个用户和商品的一段高质量的文本描述。这段话应该描述什么呢?我们认为,对于商品来说,可以将其描述为“画像”,应该能够吸引目标用户群体。而对于用户来说,他们的“画像”应该是关于他们喜欢哪些类别的商品。因此,这种文字描述本质上就是关于用户和商品之间交互的偏好,非常适合用于推荐。基于这个基本思想,我们设计了一种先生成 item 再生成 user 的生成范式。
在生成商品画像时,每个商品的画像都可以并行生成。我们的基本思想是将现有数据集中存在的文本特征整合成一个文本提示,输入给大语言模型,让其推理出商品画像。我们需要提供合理的产品原始信息,以便模型无偏差地推理出该商品会吸引哪类用户群体。在这里,我们需要考虑两种情况。第一种情况是,如果商品本身存在原始描述,我们可以将原始描述与商品标题结合,构建 prompt。第二种情况是,即使商品没有描述,但可能存在一些商品属性或用户反馈,例如在餐馆用餐后提供的分析。在这种情况下,我们可以根据商品属性和用户反馈来构建 prompt。这样就可以为大语言模型提供足够客观的信息,让它能够推理出商品的画像。在商品画像推理完成后,就可以开始推理用户的画像。用户画像需要考虑用户的购买历史、所够买过的商品画像和用户反馈等信息。将这些信息整合起来,形成一个输入 prompt 给大语言模型,其可以总结出用户喜欢的商品类别。上述画像生成的核心是要总结出用户和商品真实且无偏的交互偏好。3. 融合文本和图模态的具体方法
接下来要将文字描述转换为特征表示。这一步需要使用一些文本编码器,如 BERT、ROBERTa 或更先进的 Embedder,将文本转换为特征。例如,如果有 1 万个用户和 1 万个商品,总共就会有 2 万个文本,会获得 2 万个特征,每个用户每个商品都会有 1 个特征。
在这篇文章中,我们尝试了三种不同的 Embedder,分别是 Meta 的 Contriever、来自香港大学的 Instructor 和 OpenAI 在当时最先进的 Text-embedding-ada-002。我们选择了第三个作为默认的编码器。获得文本特征表示后,下一步是建立模型并计算 critic function 的 f 值。计算出 f 值后,可以得到互信息的 InfoNCE 下届,从而能够对其进行优化,以实现互信息最大化。
我们设计了两种计算的方法。第一种方法是对比式对齐,其将文本特征通过MLP 降维到与 GNN 学到的特征相同的维度,然后使用 cosine similarity 和指数函数计算值。整个过程类似于对比学习,因此我们称之为 Contrastive Alignment。还有一种形象的说法是相当于两种表征在双向互相对齐。第二种方法是生成式对齐。我们将部分节点的初始特征进行掩码,而后利用GNN 获得节点表征。接下来,我们利用 MLP 将 GNN 的表征升维,并且与文本标注同样利用了 cosine similarity 和指数函数计算 f 函数值。这个过程类似于单向重构文本特征,我们称之为 Generative
Alignment,生成式对齐。在后续的实验中,我们发现两种不同的对齐方式有不同的应用场景。我们上述所提出的算法不会改变推荐模型中的任何模块,只需要添加一个损失函数即可。因此我们所提出的方法是模型无关的,可以应用于任何基于表征学习的推荐方法,甚至不仅仅是推荐系统,还可以用于信息检索算法,如双塔模型等。
首先,我们进行了最基本的实验,即在协同过滤数据集(Yelp,Amazon-book,steam)上进行了测试。我们将当时的六个基于推荐的方法与我们的 RLMRec 方法相结合。结果表明,只要将 RLMRec 方法应用到这些方法中,性能就会有显著提高,最多可以提高 7% 到 8%。因此,通过这三个数据来验证,我们可以得出结论,即我们所提出的基于文本模态的表征学习优化方法是有效的,而且实现起来也相对容易。
我们的第二个实验是控制变量来调整文本质量。首先,我们尝试了不同的文本编码器,发现性能越好的文本编码器所提供的文本表征对性能提升的帮助是越大的。此外,我们试图破坏节点和表征之间的对齐关系,并且发现这种情况性能下降得非常快,这也从某种程度上证明了文本表征非常重要。
针对对比式对齐和生成式对齐,我们进行了不同的实验,发现它们各有优势。例如,在数据噪音变大时,对比式对齐与其它方法相比,其下降速度较慢。关于生成式对齐,我们进行了预训练实验。即使用前几年的数据进行预训练,然后将参数用于初始化新的网络,并新的数据上进行微调,观察性能是否提高。首先,我们发现如果没有预训练,性能最差,这表明预训练是有帮助的。其次,如果我们使用生成式对齐预训练,最终微调出来的性能最好。利用大模型实现推荐系统可解释性推荐
1. 推荐理由的生成机制
首先介绍一下背景,即可解释性推荐的意义。一般来说,在淘宝、京东或抖音等平台上,推荐的商品并没有告诉你为什么会被推荐。但我们认为,推荐不仅是一件需要精准的事情。其次,我们需要让用户了解为什么被推荐了这个商品。
基于这个基本思想,我们设想如下场景:当我们的系统向用户推荐商品的前一刻时,我们此时已经可以知道用户和商品的基本信息。例如,数据里可以提供一些用户和商品的特征向量,或者用户商品的文本描述(即用户的画像)。我们应该合理利用这些信息,生成一段文本告诉用户为什么要推荐这个商品。
在介绍模型之前,我们需要先说明一下特征向量和文本描述的好处。对于来自同一推荐模型的用户,比如 BN、GMF 等,它们的特征向量基本上都会形成一个统一的表示形式。而文本描述则更加简单,因为它们都在同一个文本形式空间里。因此,基于统一特征空间的特征来训练模型提供解释 explanation(u, i) ,我们只需要利用其中一部分数据点来训练一个大模型,其可以自动适应于在训练中没有见过的数据。2. 基于 LLM 和 GNN 的模型设计
首先,我们需要一些协同过滤的特征表示。因此,第一步是训练一个推荐模型,让它能够对数据集上的所有用户和商品进行编码。可以直接使用 ID-based 的训练方法,利用 BPR loss 在整个 graph 上进行训练。这样,每个用户和商品都会有一个嵌入向量,这个嵌入向量中包含了一些用户和商品从协同过滤角度的信息。
第二步是使用前文提到的方法获取用户/商品的文本描述。这样,每一个用户和商品不仅有一个 embedding,还有一个文本描述。现在我们可以考虑将这些信息输入给大语言模型,并进行微调以生成解释。但是,微调需要使用 Ground Truth 的解释。关于如何实现这一点,将在后面详细讲解。
接下来我们有两种模态。首先,我们使用了 MOE
Adapter,类似于一个轻量级的网络,其将 GNN 编码的 Embedding 转换以更好地适应输入给语言模型,使其成为 token Embedding。Adapter 的作用一方面是在维度上进行对齐,另一方面是将特征进行映射。其次,我们构建了用户和商品的文本藐视,可以直接利用大语言模型本身的 tokenizer,将其变成输入的 Token Embedding。这样,我们不仅可以利用上 GNN 带来的 Embedding,还可以获得文本自身的 Token Embedding,可以输入到大语言模型中。为了进一步强化由 GNN 产生的一般输入,我们将 GNN 添加到每一层 transformer layer 中,在进行注意力计算时使用该特征。对此感兴趣的读者,可以阅读文章或查看我们的代码以获取更详细的解释。上述过程实现了不仅利用了 GNN Token,还有文字 Token。如果能够很好地完成这个过程,那么整个任务就可以完成了。
我们可以设想,就算模型的训练只看到了 10% 的用户按照交互的 pair,在训练完成之后,即使是对于其他没见过的用户商品,只要能提供 Embedding 或 profile,就可以利用上述模型进行解释的生成。上述训练的完成,还需要拥有“解释文本”作为监督信号。那么,如何产生这个 Ground Truth Explanation 呢?我们首先做了一些调研,在学术界的推荐数据集,甚至是工业数据集中,一般并不会有现成的解释。因此,我们利用了 GPT3.5,并且基于原始数据的 review(即为用户在使用产品时会留下的反馈)推理出一个 Explanation。我们参考以前的一些解释性推荐算法,由于它们通常会利用原始数据中的商品交互和用户反馈来实现。因此,基于用户反馈来推理“解释文本”是合理的。在这一步产生 Ground Truth Explanation 后,就可以直接使用大模型进行训练。3. 实验验证
在实验中,我们重点关注两种不同的指标。第一种是 Explainability,即从语义角度监督生成的解释是否好。第二种是 Stability,因为我们知道大模型输出可能不可控,对于不同的用户/商品可能会产生不同的话语。所以需要验证 Stability。从语意角度来说,我们考虑了 GPTScore,即让 GP4 作为法官来对生成的解释进行评分。另一种方法是 BERTScore,我们将文本描述转换为 Embedding,并计算与原始描述之间的相似度。这些都是我们用来验证的方法。我们还做了一个消融实验,即为不使用文本,而是仅从 Graph Token 中输入来生成解释,这种做法也能取得很好的效果,因为我只需要从 token 中解析,而不需要其它信息。
我们进行了第二个消融实验,以验证设计模块的有效性。如果去除了 Embedding Injection 或 GNN Embedding,那么底层和所有模块都会受到影响。但是,我们发现最好的效果是保留所有元素,因此我们所提出的每一个模块对于可解释性的提升都是有增益的。
最后,我们进行了一个极限实验,尝试了不同的数据量。我们将用户依据其在训练集中交互的商品量分为五组,并且还有一种是 Zero-shot(即没有训练数据)。从实验结果发现,我们所提出的方法在不同的数据量下都提供了稳定的性能,特别是对于没有见过的用户,依然保持了很好的推荐解释结果。总结
今天我们主要从两个角度分享了大模型应用在推荐系统中的探索。第一个是大语言模型与图推荐系统的融合技巧,讨论了融合文本和图模态的具体方法,包括计算互信息和优化信息下界等技巧。第二个是可解释性推荐上所做的一些尝试,推荐理由的生成机制,以及如何通过特定的模型架构使推荐系统能够输出可解释的结果。我们的所有数据代码都已经开源了,欢迎大家关注并参与我们的项目。Q&A
Q1:Prompt 设计的问题,是否有经验可以分享?不同 Prompt 设计对结果会产生很大影响吗?A1:Prompt 模板只是将这些信息整理成一个固定的形式。对于不同的 Prompt 模板设计,可以尝试在给 GPT 输入时更换不同的 System Prompt。主要目的是让其提供高质量的 profile,在实际实验中,只要生成的 profile 质量合理即可。Q2:关于第二个实验,如果直接使用 token,不输入文本,那么指的是输入中只有 Graph Embedding 吗?以及后面在推荐任务的文章中是否需要添加一些参数和识别呢?A2:关于第一个问题在我们的输入中,只有 Graph Embedding;第二个问题。在训练过程中,我们进行了超参数实验,但只使用了 Llama2 作为 backbone 进行了实验。当然,如果使用不同的大模型进行实验可能会更好。
分享嘉宾
INTRODUCTION
任旭滨
香港大学
博士生
香港大学一年级博士生, 导师为黄超老师,研究方向为图神经网络,推荐系统,大语言模型。其工作曾发表在 ICLR, SIGIR, WSDM, CIKM, WWW 等会议上,并且担任 WWW, KDD, CIKM, TOIS 等会议及期刊的审稿人。开源项目 SSLRec 的主要贡献者。