大语言模型在序列推荐中的应用

一、简介

序列推荐技术通过分析用户的过往交互历史,能够有效挖掘出用户可能感兴趣的项目,对于提升各类应用的服务质量具有重要作用。近期,大语言模型(LLMs)的发展在应对复杂的推荐问题上展现出了显著的优势。不过,这种方法也面临一些挑战。本篇文章将重点探讨两项将大语言模型应用于序列推荐领域的相关研究。

二、Enhancing Sequential Recommendation via LLM-based Semantic Embedding Learning(WWW2024)

该框架利用大型语言模型(LLMs)显式学习基于文本的语义对齐项目ID嵌入。具体来说,SAID为每个项目使用了一个投影模块,将项目ID转换成一个嵌入向量,该向量会被输入到LLM中以产生与项目相关的精确描述性文本标记。这样做是为了使项目嵌入能够保持文本描述的细微语义信息。此外,学习到的嵌入可以与轻量级的下游序列模型结合,用于实际的推荐任务。通过这种方式,SAID避免了之前工作中存在的长令牌序列问题,减少了工业场景下的资源需求,并实现了更优秀的推荐性能。

2.1 总体框架

img

SAID的整体架构分为两个阶段:第一阶段是语义对齐嵌入学习,第二阶段是模型无关的序列推荐器训练。在第一阶段,SAID通过一个投影模块和现成的LLM来学习每个项目的嵌入。每个属性的嵌入大小等于特定LLM中单个令牌的嵌入大小。在第二阶段,第一阶段获得的嵌入作为初始特征被输入到下游模型(如RNN或Transformer)中进行序列推荐。值得注意的是,SAID对下游模型的具体选择具有高度的适应性和灵活性。

2.2 语义对齐嵌入学习

设表示参数集为𝜃的投影仪模块,则项目𝑖的嵌入可以表示如下:

投影模块的训练目标是确保生成的嵌入能够保留项目文本描述的细粒度语义信息,从而在LLM的嵌入空间中产生语义对齐的嵌入。具体实现上,SAID将项目ID通过投影模块转换为一个嵌入向量,然后将这个嵌入向量作为输入传递给LLM。LLM的任务是从给定的嵌入向量中生成项目的确切描述性文本标记。例如,对于项目23,其投影的语义嵌入将被送入LLM,LLM期望输出项目文本描述的第一个标记‘Brand’。接下来,和‘Brand’的词嵌入一起作为输入,LLM预期生成‘BrandA’。所有LLM输出标记的误差将反向传播以调整投影模块的参数。

2.3 模型无关的序列推荐器训练

在完成了第一阶段的投影模块训练后,可以为每个项目获得其语义对齐的嵌入。如图所示的第二阶段,这些由投影模块产生的嵌入可以无缝地与下游的序列模型集成,用于推荐任务。这一特性使得SAID对下游推荐模型的选择具有高度的灵活性和适应性。需要注意的是,为了进一步提高训练和推理的效率,本文将作为单个项目的表现形式,而不是通过序列模型来传递它,以期望模型能够自动学习与真实下一项的表示之间的关联性。

2.4 实验结果

实验部分在六个公开数据集上进行了测试,结果表明SAID在NDCG@10指标上相比基线方法提高了约5%到15%。此外,SAID已被部署于支付宝的在线广告平台,实现了相对于基线方法3.07%的CPM相对提升,同时在线响应时间控制在20毫秒以内。

img

img

三、Text is all you need: Learning language representations for sequential recommendation(KDD2023)

本文提出了一个名为Recformer的新框架,旨在通过学习语言表示来解决序列推荐问题。现有的序列推荐方法通常依赖于明确的项目ID或通用的文本特征来进行序列建模,以理解用户偏好。然而,这些方法在处理冷启动项目或迁移到新数据集时仍面临挑战。Recformer通过将用户偏好和项目特征建模为语言表示,从而克服了这些限制,实现了对新项目和数据集的泛化能力。

3.1 总体框架

Recformer的模型结构下图所示,主要包括以下几个部分:

img

嵌入层:Recformer使用多种嵌入层来编码项目属性。具体来说,每个项目属性都会被转换为一个嵌入向量,包括项目ID嵌入、位置嵌入、类型嵌入和令牌嵌入。这些嵌入层共同作用,使得模型能够更好地理解和捕捉用户行为的动态变化。

双向Transformer编码器:Recformer使用了一个双向Transformer编码器,类似于Longformer,但针对序列推荐任务进行了优化。编码器负责将输入的项目序列转换为高维表示,以便进行后续的推荐任务。

掩码语言建模:为了增强模型的语言理解能力,Recformer采用了掩码语言建模(Masked Language Modeling, MLM)任务。在MLM任务中,模型需要根据上下文预测被掩码的单词。这有助于模型学习项目属性之间的语义关系。

项目-项目对比任务:除了MLM任务,Recformer还引入了一个项目-项目对比任务,以增强模型对项目之间关系的理解。在这个任务中,模型需要区分正样本(即真实的下一个项目)和负样本(即随机选择的其他项目)。

3.2 预训练和微调

为了有效学习语言表示,Recformer提出了一套新颖的预训练和微调方法,结合了语言理解和推荐任务。

预训练:在预训练阶段,Recformer在大规模文本语料库上进行训练,以学习通用的语言表示。预训练的目标是使模型能够理解和生成高质量的文本表示。具体来说,Recformer使用了掩码语言建模(MLM)任务,通过预测被掩码的单词来训练模型。

微调:在微调阶段,Recformer在具体的推荐任务上进行训练,以适应特定的推荐场景。微调的目标是使模型能够根据用户的历史交互序列预测下一个项目。具体来说,Recformer使用了项目-项目对比任务,通过区分正样本和负样本来训练模型。

3.3 算法流程

Recformer的算法流程如下:

img

3.4 实验结果

实验结果表明,Recformer在所有数据集上都表现优异,特别是在NDCG@10和MRR指标上。与最佳基线方法相比,Recformer在NDCG@10指标上平均提升了15.83%,在MRR指标上平均提升了15.99%。此外,Recformer在零样本推荐任务中也表现出色,进一步证明了其泛化能力。

img

四、总结

两篇文章都致力于通过大语言模型(LLMs)提高序列推荐的性能,但采用了不同的方法和技术。SAID通过显式学习语义对齐的项目ID嵌入,解决了现有方法在处理长令牌序列时的效率问题。Recformer通过将项目及其属性转换为文本表示,使用双向Transformer编码器进行建模,解决了冷启动问题和跨数据集泛化问题。这两篇文章都为序列推荐领域提供了新的解决方案,具有重要的理论和实践意义。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

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

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

相关文章

JavaScript——函数、事件与BOM对象

一、系统函数(JS中预置的函数) JS的预置函数在遇到非数字字符时会停止解析 parseInt 转整型 parseFloat 转浮点型 isNaN !isNaN("10") 检测是否纯数字 eval 把字符串转成算式并计算 1.parseInt(string, radix); 语法: string&#x…

Python酷库之旅-第三方库Pandas(208)

目录 一、用法精讲 971、pandas.MultiIndex.set_levels方法 971-1、语法 971-2、参数 971-3、功能 971-4、返回值 971-5、说明 971-6、用法 971-6-1、数据准备 971-6-2、代码示例 971-6-3、结果输出 972、pandas.MultiIndex.from_arrays类方法 972-1、语法 972-2…

相亲小程序(源码+文档+部署+讲解)

最近我在挖掘一些优秀的开源项目时,无意间发现了一个相当给力的系统——相亲小程序管理系统。这个系统不仅功能实用,而且代码结构清晰,易于二次开发。作为一名技术爱好者,我觉得有必要把这个好东西推荐给我的读者们。接下来&#…

spring cloud 入门笔记1(RestTemplate,Consul)

最大感受: spring cloud无非是将spring boot中的各个工作模块拆分成独立的小spring boot,各个模块之间,不再是通过导包什么的,调用而是通过网路进行各个模块之间的调用 工具一:RestTemplate 在Java代码中发送HTTP请…

高性能分布式缓存Redis-高可用部署

一、主从架构搭建 为什么要进行主从架构搭建,一台redis不行吗? ①、持久化后的数据只在一台机器上,因此当硬件发生故障时,比如主板或CPU坏了,这时候无法重启服务器,有什么办法可以保证服务器发生故障时数…

新的恶意软件活动通过游戏应用程序瞄准 Windows 用户

一种新的恶意软件 Winos4.0 被积极用于网络攻击活动。FortiGuard实验室发现,这种先进的恶意框架是从臭名昭著的 Gh0strat 演变而来的,配备了模块化组件,可在受感染的设备上进行一系列恶意活动。 这些攻击已在游戏相关应用程序中发现&#xf…

Python教程笔记(1)

Python教程笔记 3.1.1 数字3.1.2 文本3.1.3 列表4.2 for语句4.3 range()函数4.7 match语句4.8 定义函数4.9.1 默认值参数4.9.3 特殊参数4.9.5. 解包实参列表 对官方教程中自我感觉生疏的知识点做个记录,以便后面回顾。 3.1.1 数字 除法运算 (/) 总是返回浮点数。 如…

C++笔记---异常

1. 异常的概念 1.1 异常和错误 异常通常是指在程序运行中动态出现的非正常情况,这些情况往往是可以预见并可以在不停止程序的情况下动态地进行处理的。 错误通常是指那些会导致程序终止的,无法动态处理的非正常情况。例如,越界访问、栈溢出…

【RabbitMQ】08-延迟消息

1. 延迟消息 2. 死信交换机 正常队列不需要接受消息。 Configuration public class NormalQueueConfig {Beanpublic DirectExchange normalExchange() {return new DirectExchange("normal.direct");}Beanpublic Queue normalQueue() {return QueueBuilder.durable(…

软件测试——认识测试

在本篇文章中,我会给大家说明一下几个问题: 什么是测试软件测试和开发的区别优秀的测试人员需要具备的素质 通过这几个问题,带大家了解测试这个岗位。 1. 什么是测试? 在我们的日常生活中就有很多测试的例子,比如我…

LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略

LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略 目录 zeroX的简介 1、支持的文件类型 zeroX的安装和使用方法 T1、Node.js 版本: 安装 使用方法 使用文件 URL: 使用本地路径&…

5G 现网信令参数学习(3) - RrcSetup(1)

目录 1. rlc-BearerToAddModList 1.1 rlc-Config 1.1.1 ul-AM-RLC 1.1.2 dl-AM-RLC 1.2 mac-LogicalChannelConfig 2. mac-CellGroupConfig 2.1 schedulingRequestConfig 2.2 bsr-Config 2.3 tag-Config 2.4 phr-Config 2.5 skipUplinkTxDynamic 3. physicalCellG…

力扣 LeetCode 27. 移除元素(Day1:数组)

解题思路: 注意:数组只能覆盖,不能删除 erase方法的复杂度为O( n )而不是O( 1 ),因为需要把删除后后面的数组向前移动 方法一:双层for循环暴力 方法二:快慢指针 fast表示新数组的元素 slow表示新数组元…

Redis - String 字符串

一、基本认识 字符串类型是Redis最基础的数据类型,关于字符串需要特别注意: Redis中所有的键的 类型都是字符串类型,⽽且其他⼏种数据结构也都是在字符串类似基础上构建的,例如列表和集合的 元素类型是字符串类型,所…

树-好难-疑难_GPT

// // Created by 徐昌真 on 2024/11/10. // #include <iostream> using namespace std;template<typename T> struct ListNode{ //新建链表节点T data; //指向下一个子节点 ListNode< TreeNode<T>* > childHead; 这里的 T 是TreeNde类型的…

Mysql数据类型面试题15连问

整数类型的 UNSIGNED 属性有什么用&#xff1f; MySQL 中的整数类型可以使用可选的 UNSIGNED 属性来表示不允许负值的无符号整数。使用 UNSIGNED 属性可以将正整数的上限提高一倍&#xff0c;因为它不需要存储负数值。 例如&#xff0c; TINYINT UNSIGNED 类型的取值范围是 0 ~…

【go从零单排】Mutexes互斥锁

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 语言中&#xff0c;互斥锁&#xff08;Mutex&#xff09;是一种用于保护共…

LLM时代下Embedding模型如何重塑检索、增强生成

文章目录 一、背景二、C-MTEB评测结果三、性能不错的向量模型腾讯Conan系列阿里GTE系列商汤Piccolo系列合合信息acge系列智源BGE系列数元灵Dmeta系列jina系列OpenAI系列 四、业务中选择向量模型有哪些考量五、洞察与总结为什么需要RAG和Embedding向量化技术&#xff1f;RAG 和 …

[SWPUCTF 2022 新生赛]Power! 反序列化详细题解

知识点: PHP反序列化(执行顺序) 构造POP链 代码审计 题目主页: 输入框可以输入内容,习惯性先查看一下页面的源代码,收集信息 发现源码中有提示参数source 先不急,再看一下其他信息 是apache服务器,php版本为7.4.30 url传参 ?sourceindex.php 回显了index.php的源码 …

【go从零单排】Rate Limiting限流

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 中&#xff0c;速率限制&#xff08;Rate Limiting&#xff09;是一种控制…