内容简介
将协作信息融入大型语言模型(LLMs)是一种有前景的适应推荐任务的技术。现有的方法通过将协作特征与文本标记拼接成统一的序列输入,然后进行微调以使这些特征与LLM的输入空间对齐来实现。尽管这种方法有效,但在本研究中,我们发现了在将LLM适应于推荐任务时的两个限制,这些限制阻碍了通用知识和协作信息的整合,从而导致推荐性能次优。(1)使用推荐数据对LLM进行微调可能会削弱其固有的世界知识和基本能力,而这些能力对于解释和推断推荐文本至关重要。(2)将协作特征纳入文本提示会破坏原始提示的语义,阻止LLM生成适当的输出。在本文中,我们提出了一种新的范式——协作LoRA(CoRA),并引入了协作查询生成器。该方法不是对齐输入空间,而是将协作信息与LLM的参数空间对齐,并将其表示为增量权重以更新LLM的输出。通过这种方式,LLM可以在不改变其通用知识和文本推理能力的情况下感知协作信息。具体而言,我们使用协作过滤模型提取用户和项目的嵌入表示,并将其注入一组可学习的查询中。然后,我们将协作查询转换为具有低秩属性的协作权重,并将协作权重合并到LLM的权重中,从而使LLM能够感知协作信号并生成个性化推荐,而无需进行微调或在提示中添加额外的协作标记。广泛的实验验证了CoRA能够有效地将协作信息整合到LLM中,从而提升了推荐性能。
论文地址:
https://arxiv.org/pdf/2408.10645**
Introduction to Existing LLMRec Methods
本文主要关注的是如何直接使用已经预训练的大语言模型进行推荐。目前,主要存在两种方法:一种是直接使用大模型进行推理,通过构造提示词将所需信息加入其中,让大模型直接生成推荐结果;另一种则是微调的方法,通过高效参数微调的方式对大模型进行训练,使其能够执行推荐任务。
此外,最近一些研究发现,将用户和物品的ID输入到大模型中,能够帮助模型更好地理解推荐任务中的协同信息。具体而言,SIGIR 2023的一篇工作[1]直接将用户ID和物品ID融入到提示词中。另一项Arxiv 2023中的一篇工作[2]则是将预训练好的协同信息通过混合编码的方式,将用户和物品的ID嵌入到输入的提示词中。
Rethinking Fine-tuning in LLMRec
在先前的研究中,将ID加入到模型中主要采用微调的方法。然而,这种方法存在一个问题。具体来说,ACL 2024中的一篇论文[3]指出,对大模型进行微调会影响其在各种任务上的泛化性能,并可能增强模型的泛化偏差。作者通过实验表明,在推荐数据集上进行微调后,大模型在各种语言任务上的性能显著下降。此外,它在推荐中的一些通用性能,如与文本相关的性能,也会有较严重的下降。
作者还发现,即使不进行微调,直接将用户和物品的ID混合编码到提示词中,也会导致大模型无法正确理解输入的提示词原本的含义。
作者进行了一项case study,即让大语言模型直接重复给出的句子。然而,之前的方法将ID嵌入到提示词中,这导致大型语言模型无法正常输出,无法正常重复。因此,作者想到不在输入层中加入ID,而是通过参数的方式将用户的协同信息加入到模型中。
Our Proposed Method: CoRA
本篇工作主要关注的是大语言模型的微调。首先,大语言模型中的解码器模块是关键部分,它主要由多头注意力、Add & Norm和前馈层等组件组成,这些构成了大语言模型的基础结构。
对于协同信息的处理,作者假设已经有一个训练好的协同过滤模型,例如MF。该模型能够接收用户和物品的输入,并基于已训练的用户和物品信息得出协同结果。
CoRA框架首先获取用户和物品的相关信息,然后通过一组可学习的query以及cross attention层让这些query学习到协同信息。接着,输出query,并将它们输入到作为Lora的一部分,即在CoRA中作为Lora的A矩阵。同样,B矩阵也可以进行训练,由此形成新的Lora模块。最后,将这个模块插入到冻结的大语言模型中,具体位置对应于每个输入的用户和物品。
该篇工作的研究目标是判断用户对物品的喜好程度。对于每一个用户和物品,CoRA会生成一组Lora权重,并将其加入到预训练的大语言模型中,让模型预测用户对物品的喜好。
Experiment Analysis
如下图所示,在整体的实验结果中,CoRA的实验效果最佳。对于经典的CoLLM,在使用相同的协同过滤模型的前提下,CoRA在性能上都优于CoLLM,这说明CoRA对协同信息的利用效率更高。
作者还进行了冷启动和暖启动的实验,发现无论是在冷启动还是暖启动的情况下,CoRA方法都能取得更好的实验效果。特别是在亚马逊数据集上,CoRA取得了显著的性能提升。
作者还通过进行一些消融实验,验证了大语言模型对文本信息和协同信息的利用效率。如图所示,红色代表只使用ID信息,蓝色代表同时使用ID和文本信息。可以看到,仅使用ID时,CoRA实现的性能最佳,而当加入文本信息后,CoRA方法性能提升最高。而前面提到的方法中,例如将ID信息加入到提示词中,可能会破坏大语言模型对文本的理解。在MovieLens数据集上,这一点尤为明显。当使用ID时,性能表现良好。然而,加入文本后,由于ID对文本的破坏性影响,导致性能显著下降。
*Conclusion*
本文首先探讨了将协作信息与LLM的输入空间对齐所引发的问题。其次,为了解决这些问题,引入了CoRA,能够让LLM在无需微调或额外协作标记的情况下感知协作信息。CoRA通过协作权重生成器将协作信息转化为LLM的增量权重,从而有效地整合了协作信息和文本信息。广泛的实验验证了CoRA的优越性。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。