LLM2Rec-新国立-KDD2025-微调LLM获得蕴含协同信息的embedding

文章目录

  • 1. 背景与问题
    • 任务
    • 背景动机
    • LLM2Rec 两大步骤
  • 2. 方法
    • 2.1 Collaborative Supervised Fine-tuning(CSFT)
    • 2.2 Item-level Embedding Modeling
      • 2.2.1 从单向注意力 → 双向注意力(Bidirectional attention)
      • 2.2.2 商品级别的对比学习(Item-level Contrastive Learning)
    • 2.3 喂给序列推荐模型
  • 3. 实验
    • 3.1 主实验
    • 3.2 消融实验
    • 3.3 其他
      • 3.3.1 域分析
      • 3.3.2 LLM Backbones 分析
      • 3.3.3 性能分析
  • 4. 总结

这里来学习一篇文章《LLM2Rec: Large Language Models Are Powerful Embedding Models for Sequential Recommendation》是新国立 蔡达成(Tat-Seng Chua)团队在 KDD-2025 上的工作。

论文链接:https://arxiv.org/abs/2506.21579

代码链接:https://github.com/HappyPointer/LLM2Rec

1. 背景与问题

任务

整体任务也是协同与语义的结合

现有探索有两种:

  • 一种是纯文本法:只用文本(商品介绍等)做 embedding,能泛化但丢了 CF 信号。
  • 另一种是混合法:试图融合文本和 CF 信号,比如把 ID 向量和文本向量拼接、用文本指导 ID 训练、或设计融合网络(比如cross-attention)。【CCFRec 也算这类吧】本质还是主要依赖 ID 向量。

作者认为:最好的 embedding model,应该 “天生” 就能同时捕获 CF 信号和 语义知识,而不是通过外部拼拼凑凑【OneRec 中的 embedding 方式】本文旨在探索如何让 LLM 既理解文本,又成为可以泛化的 embedding 生成器,服务于推荐系统。

背景动机

  • 近几年发现大语言模型(LLM)经过“监督微调”后,其实可以学会推荐相关任务。
  • 作者想让LLM既能捕捉CF信号(比如哪些商品经常一起被买),又有理解文本内容的能力。
  • 但是LLM原本只会做“token级别预测”(即只会预测下一个词),并不是专门为生成商品的“整体向量”设计的。

在这里插入图片描述

LLM2Rec 两大步骤

协同监督微调(CSFT)

  • 把真实推荐场景下的用户交互序列(比如:用户买了A、B、C,接下来可能买D)用来微调 LLM,让它能够学习到商品间的 CF 信号
  • 实例:比如任天堂的一堆游戏(马里奥、动物森友会等),这些游戏经常被同一批用户一起买,经过训练后,这些游戏的向量会变得更接近。

商品级嵌入建模(IEM)

  • 在前面基础上,对 LLM 做进一步的结构和目标优化,让它更适合生成“商品级的向量”。
  • 主要包括两个技术:
    • 双向注意力+掩码预测(MNTP):让模型可以更全面地理解每个商品的文本信息。
    • 商品级对比学习:让同一个商品的不同“视角”聚在一起,不同商品拉得更远,这样嵌入更加区分度高。

2. 方法

在这里插入图片描述

2.1 Collaborative Supervised Fine-tuning(CSFT)

输入其实就是一串商品标题的列表,之间只用逗号隔开,没有复杂的模板,以防止模型学到无关的模板信息。

每次只让模型根据前面的商品序列“自回归地”生成下一个商品标题:

在这里插入图片描述

2.2 Item-level Embedding Modeling

大语言模型(LLM,比如GPT)通常都是单向的 decoder 模型,它们被设计用于“自回归”(即一个词一个词地预测下一个词)。

但是,这种单向预测机制在生成高质量的item embedding时表现一般。因为生成 embedding 通常需要双向地同时看前面和后面的上下文信息

作者希望能够综合两种模型的优点:

  • 单向decoder(LLM):拥有强大的语义理解能力。
  • 双向encoder模型(如BERT):更适合生成高质量的上下文感知嵌入。

因此,作者试图对LLM进行改造,使它同时拥有 encoder 的双向理解能力,来生成高质量的商品嵌入。

在这里插入图片描述

2.2.1 从单向注意力 → 双向注意力(Bidirectional attention)

单向注意力(Causal Attention):

  • 传统的decoder LLM在生成一个词的嵌入时,只能看到它前面的词,无法看到后面的词,这叫做“因果注意力(Causal attention)”。

为什么要转为双向注意力?

  • 在生成嵌入时,我们希望模型能看到整个商品描述的全部内容(即:商品标题或描述中的所有词)。
  • 因此,作者去掉了单向的限制,改造成“双向注意力”:生成一个词的嵌入时,可以同时参考它前后所有词的信息。

怎么训练这种双向的LLM?(Masked Next Token Prediction,简称MNTP)

  • 在商品的文本序列中,随机遮盖掉一些词(随机mask),然后让LLM根据前后词的信息预测出这些被mask的词。
  • 这样LLM逐渐就能习惯于双向地理解商品的文本,从而生成更有效的嵌入。
  • MNTP的损失函数:

LMNTP=−∑i∈I∑s=0ℓip(ti,s∣ti,<s)\mathcal{L}_{MNTP}=-\sum_{i\in I}\sum_{s=0}^{\ell_i}p(t_{i,s}|t_{i,<s}) LMNTP=iIs=0ip(ti,sti,<s)

2.2.2 商品级别的对比学习(Item-level Contrastive Learning)

为什么需要对比学习?

  • 上一步的方法(MNTP)还是以词(token)为单位,而作者希望获得的是商品级(整个句子或描述)的整体嵌入。
  • 单纯把词级嵌入平均(average-pooling)是一种简单方法,但不一定足够好。

对比学习怎么做?

  • 每个商品文本会随机生成两个略有差异的版本(比如随机遮盖不同的词),让模型去分别生成两个版本的商品嵌入。
  • 模型的目标:
    • 同一个商品的两个版本嵌入尽可能接近
    • 不同商品的嵌入尽可能远离
  • 这样生成的嵌入就更容易区分不同的商品,也能更好地表示商品本身。
  • 对比学习的损失函数:

LIC=−∑i∈Ilog⁡exp⁡(E(t~i1)E(t~i2)⊤/τ)∑j∈Iexp⁡(E(t~j1)E(t~j2)⊤/τ)\mathcal{L}_{IC}=-\sum_{i\in I}\log\frac{\exp\left(\mathcal{E}(\tilde{t}_i^1)\mathcal{E}(\tilde{t}_i^2)^\top/\tau\right)}{\sum_{j\in I}\exp\left(\mathcal{E}(\tilde{t}_j^1)\mathcal{E}(\tilde{t}_j^2)^\top/\tau\right)} LIC=iIlogjIexp(E(t~j1)E(t~j2)/τ)exp(E(t~i1)E(t~i2)/τ)

我疑惑这里没有用 logit shift 仅仅通过这个阶段的训练改变的目标是不是太大了?原本 自回归的 causal mask 模型的 hidden state 本质上更关注下一个位置的 token 预测。每个位置输出的 hidden state 与下一个 token 紧密相关,而非自己当前 token 本身。BERT是在预测当前位置token,而不是下一个位置token

2.3 喂给序列推荐模型

把 LLM2Rec 生成的每个 item 的 embedding ziz_izi,用一个简单的线性变换(就是加个“门槛”,w乘上再加b,公式:zi′=Wzi+bz'_i = Wz_i + bzi=Wzi+b)。

这个线性层参数(W和b)可以在下游推荐系统训练时一起优化,适配到下游的场景。

3. 实验

3.1 主实验

在这里插入图片描述

3.2 消融实验

在这里插入图片描述

3.3 其他

3.3.1 域分析

在这里插入图片描述

3.3.2 LLM Backbones 分析

在这里插入图片描述

3.3.3 性能分析

在这里插入图片描述

4. 总结

感觉直接从 next-token-prediction 转变为 mask-token-prediction 的地方,是不是可能导致模型变化很大,因为也在看 Diffusion LLM 的文章,他们一般在基于自回归 next-token-prediction 上预训练,然后使用 mask-token-prediciton 的时候由于当前位置预测的任务变了,所有做了一个 logit shift ,这样输出的 hidden state 不会有太大变化,能够继续训练,这里却不是。是否是因为没这样做才导致 IEM1(MNTP) 在消融实验里提升很小。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90770.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习9:JavaScript--对象与原型

前言&#xff1a;适合有基础的同学入门尝试 / 复习回忆。对象基础&#xff1a;1.创建用户对象const user {// 属性&#xff08;键值对&#xff09;name: "小岛",age: 20,isAdmin: false, }2.方法&#xff08;函数属性&#xff09;sayHello() {console.log(你好&…

网络:应用层

网络&#xff1a;应用层 我们要知道&#xff0c;所有的问题解决都是在应用层。:happy: 协议是一种约定&#xff0c;也就是双方约定好的结构化的数据。但是在读写数据时我们都是按字符串的方式来发送接受的&#xff0c;那么我们应该如和传输结构化的数据呢&#xff1f;应用层协…

rust-包和箱子

&#x1f4e6; 图解 Rust 代码组织层级 #mermaid-svg-fBDy1PDZZ6bi000z {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fBDy1PDZZ6bi000z .error-icon{fill:#552222;}#mermaid-svg-fBDy1PDZZ6bi000z .error-text{fi…

C++算法竞赛篇(五)循环嵌套题型讲解

C算法竞赛篇&#xff08;五&#xff09;循环嵌套题型讲解前言C循环嵌套题型讲解第一题 包含数字的9第二题 求出 e 的值第三题 斐波那契数列第四题 第 n 小的质数第五题 水仙花数前言 前面的题型里我们认识了C里面的三大循环本篇博客我们开始讲解C循环嵌套题型 我的个人主页&am…

Gradio全解8——ChatInterfaceChatbot:聊天界面类与聊天机器人(3)——ChatInterface的多模态功能与附加输入输出

Gradio全解8——ChatInterface&Chatbot&#xff1a;聊天界面类与聊天机器人&#xff08;3&#xff09;——ChatInterface的多模态功能与附加输入输出8.3 ChatInterface的多模态功能与附加输入输出8.3.1 多模态功能1. 设置multimodal和fn参数2. 传入MultimodalTextbox组件及…

php算法-- 关联数组使用,优化sip账号去重

文章目录1 变量定义2. 核心特性code1 变量定义 类型&#xff1a;嵌套的关联数组&#xff08;Nested Associative Array&#xff09;外层结构&#xff1a;[中继ID > 账号列表]键 (Key)&#xff1a;中继ID&#xff08;字符串或整型&#xff09;值 (Value)&#xff1a;索引数组…

LLM 多语言数据集

多语言数据感觉主要还是fineweb和fineweb2, 其他数据都是主要针对特定语种比较多 101 Billion Arabic Words Dataset ClusterlabAi/101_billion_arabic_words_dataset 数据主要从e Common Crawl WET 中提取&#xff0c;并采用了创新的技术来进行去重和筛选&#xff0c;主要解决…

【HarmonyOS Next之旅】DevEco Studio使用指南(三十六) -> 配置构建(三)

目录 1 -> 定制HAR多目标构建产物 1.1 -> 定义产物的deviceType 1.2 -> 定义C工程依赖的.so文件 1.3 -> 定义产物的资源 2 -> 配置APP多目标构建产物 2.1 -> 定义产物的APP包名和供应商名称 2.2 -> 定义product的bundleName 2.3 -> 定义produc…

数据赋能(340)——技术平台——共享平台

概述重要性如下&#xff1a;提高数据利用效率&#xff1a;数据共享平台能够将分散在各部门的数据进行集中管理&#xff0c;促进数据流通和共享&#xff0c;避免数据孤岛现象&#xff0c;从而提高数据利用效率。促进决策科学化&#xff1a;通过共享平台&#xff0c;各部门可以获…

开闭原则在C++中的实现

开闭原则&#xff08;Open/Closed Principle&#xff0c;简称 OCP&#xff09;是面向对象设计中的一个重要原则&#xff0c;属于“SOLID”原则之一。它的核心思想是&#xff1a;“软件实体&#xff08;如类、模块、函数等&#xff09;应该对扩展开放&#xff0c;对修改关闭。”…

C语言:*p++与p++有何区别

1. 指针基础练习&#xff1a;演示p、p和(*p)的区别核心目的&#xff1a;区分指针自增与指针指向值自增的不同逻辑&#xff0c;理解运算符优先级对指针操作的影响。#include <stdio.h>void arr1() {int arr[] {11,13,15,17,19};int *p arr;printf("结果1&#xff1…

【设计】设计一个web版的数据库管理平台后端(之二)

在之前&#xff0c;我写过一篇【设计】设计一个web版的数据库管理平台后端精要 的文章&#xff0c;文章讲了一个web版数据库管理平台的实现思路及主要代码。 最近&#xff0c;我看了下Mybatis的源码&#xff0c;觉得Mybatis的分层架构挺好&#xff0c;所以想到了完善下web版数据…

Visual tudio 各版本下 C++ 开发的核心区别与实践指南

C语言的发展经历了数十年的演进&#xff0c;从 C98 到现代的 C20/23&#xff0c;语言本身发生了巨大的变革。与此同时&#xff0c;Visual Studio 作为主流的 C 开发环境之一&#xff0c;其编译器对各个 C 标准的支持程度也随版本不断演进&#xff0c;直接影响着开发者的编程方式…

怎样让阿里云服务器(centos)有界面

要让阿里云服务器 CentOS 有图形界面&#xff0c;可以按照以下步骤进行操作&#xff1a;登录服务器&#xff1a;使用 SSH 客户端工具&#xff0c;通过 IP 地址和账号登录到阿里云服务器。更新系统软件源&#xff1a;输入命令sudo yum update&#xff0c;更新系统软件源&#xf…

Qt 异步编程模式与应用

在现代软件开发中&#xff0c;异步编程已成为提升应用性能和响应性的关键技术。Qt 作为一个强大的跨平台框架&#xff0c;提供了多种异步编程模式&#xff0c;包括信号槽机制、事件循环、线程池、异步 I/O 等。本文将深入探讨 Qt 异步编程的各种模式及其应用场景&#xff0c;帮…

面试150 数字范围按位与

思路 只要 left < right&#xff0c;说明两者在某些低位上存在不同&#xff0c;为了找到它们的公共前缀&#xff08;高位相同部分&#xff09;&#xff0c;不断将 left 和 right 同时右移&#xff08;即除以2&#xff09;&#xff0c;直到它们相等&#xff0c;记录右移的次数…

数据库HB OB mysql ck startrocks, ES存储特点,以及应用场景

这些数据库和存储引擎主要有:HB(HBase)、OB(OceanBase)、MySQL、ClickHouse(CK)、StarRocks、Elasticsearch(ES),下面分别介绍它们的存储特点以及典型应用场景。 1. HBase (HB) 存储特点 分布式、面向列的NoSQL数据库 采用HDFS存储,数据以表、row key、列族、时间戳…

Java技术栈/面试题合集(17)-Git篇

场景 Java入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享: Java入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享_java高级进阶-CSDN博客 通过对面试题进行系统的复习可以对Java体系的知识点进行查漏补缺。…

破局与重构:King’s LIMS 引领电子行业实验室智能化转型

在全球化高新技术竞争白热化背景下&#xff0c;电子行业正经历从规模导向扩张向质量效益跃升的战略转型。终端用户对产品性能的极致化追求、行业质量合规标准的持续迭代升级&#xff0c;以及检测数据的指数级增长&#xff0c;共同形成"需求牵引供给、供给创造需求"的…

暑期算法训练.9

目录 43 .力扣75 颜色分类 43.1 题目解析&#xff1a; 43.2 算法思路&#xff1a; 43.3 代码演示&#xff1a; 43.4 总结反思&#xff1a; 44. 力扣 912 排序数组 44.1 题目解析&#xff1a; 44.2 算法思路&#xff1a; 44.3 代码演示&#xff1a; ​编辑 44.4 总结反…