LLM4Rec最新工作: 字节发布用于序列推荐的分层大模型HLLM

前几个月 Meta HSTU 点燃各大厂商对 LLM4Rec 的热情,一时间,探索推荐领域的 Scaling Law、实现推荐的 ChatGPT 时刻、取代传统推荐模型等一系列话题让人兴奋,然而理想有多丰满,现实就有多骨感,尚未有业界公开真正复刻 HSTU 的辉煌。这里面有很多原因,可能是有太多坑要踩,也有可能是 Meta HSTU 的基线较弱,导致国内已经卷成麻花的推荐领域难以应用 HSTU 产生突破性效果。

然而做起来困难并不代表不去做,总要有真的勇士率先攻克难关迈出一步。字节前几天(2024.9.19 发布 arxiv)公开的工作 ⌜HLLM⌟(分层大语言模型)便是沿着这一方向的进一步探索,论文内也提及了 follow HSTU:

论文题目:

HLLM: Enhancing Sequential Recommendations via Hierarchical Large Language Models for Item and User Modeling

论文链接:

https://arxiv.org/abs/2409.12740

代码链接:

https://github.com/bytedance/HLLM

这里我针对全文进行一个详细解析,也会有一些疑问,欢迎评论区探讨以及点赞收藏。

1. 背景

传统推荐问题:推荐重要的是建模 user、item feature,主流方法是 ID-based,将 user、item 转为 ID 并创建对应的 embedding table,然而一般都是 embedding 参数很大而模型参数较小,这会导致以下问题:

  1. 严重依赖 ID feature 在冷启动时表现不好

  2. 模型较小难以建模复杂且多样的用户兴趣

**过往 LLM 探索方向:**大致分为三种:

  1. 利用 LLM 提供一些信息给推荐系统

  2. 将推荐系统转变为对话驱动的形式

  3. 修改 LLM 不再只是文本输入/输出,比如直接输入 ID feature 给 LLM

LLM4Rec 挑战: 其中一个 issue 是在相同时间 span 情况下,相比 ID-based 方法 LLM 的输入更长,复杂度更高;另一个是相对于传统方法 LLM-based 方法提升并不显著。

三个关键问题:LLM 应用到推荐有三个问题需要评估:

  1. LLM 预训练权重的真正价值:模型权重蕴含着世界知识,但是如何激活这些知识,只能使用文本输入吗?这也为之后使用 feature 输入埋下伏笔;

  2. 对推荐任务进行微调是有有必要性?直接使用 pretrain 还是说要进一步微调?

  3. LLM 是否可以应用在推荐系统中并呈现 scaling law?

由此提出了 Hierarchical Large Language Mode****l(HLLM)架构,训练 Item LLM(用来提取 item feature)和 User LLM (item feature 作为输入,用于预测下一个 item),实验表明在公开数据集上显著超越 ID-based 方法,并呈现了 Scaling Law 特性。在抖音落地,A/B 实验显示在重要指标上增长 0.705%

2. 方法

2.1 HLLM

分为 Item LLM 和 User LLM,两者参数并不共享,都是可训练的并通过 next item predict 来进行优化。

可以直接基于已经预训练好的(例如 llama、baichuan)来训练。

Item LLM 使用 item 的描述作为输入,包括 Title、Tag、Description,最后再加上一个特殊 token:[ITEM],特殊 token 对应输出的代表该 item 的 embedding;

User LLM 输入是用户历史交互序列,输入序列中每个 item 就来自于 Item LLM 的输出。由于输入并非文本 token,所以会去除预训练模型的 word embedding;

2.2 优化目标

推荐系统大致分为两类:生成式推****荐判别式推荐,而 HLLM 同时应用了这两种。

首先针对 Item LLM 的训练虽然论文没提及,但应该就是简单的 next token prediction 的训练,针对输入的每个位置预测下一个 token,损失为交叉熵损失。

其次针对 User LLM 的训练还能用 next token prediction 吗?当然不能!因为去除了 word embedding,词表都没了,还怎么预测 next token。那该怎么做呢?

生成式推荐:

实际会 User LLM 使用 InfoNCE 来作为生成损失,对于某个物品 模型输出的 是正样本,随机抽取的其他物品为负样本,不得不说将对比学习的 InfoNCE 作为预测 next token 的损失设计的很巧妙。

定义的生成式损失函数 如下所示:

这里,公式中的各个符号代表以下含义:

  • 是一个相似度函数,带有可学习参数;

  • 表示第 个用户的历史交互中由物品 LLM 生成的第 个物品嵌入;

  • 表示由用户 LLM 为第 个用户预测的第 个物品嵌入;

  • 是负采样的数量, 表示第 个负样本的嵌入;

  • 表示批次中的用户总数, 表示用户历史交互的长度;

判别式推荐:

业界主要还是应用判别式推荐模型,HLLM 同样也可。

首先给出问题定义,给定用户的行为序列 和一个目标 item ,模型要预测用户对该 item 感不感兴趣(例如点击、点赞、购买)等。

如上图所示,分为 Early Fusion 和 Late Fusion(实际论文指出真正上线使用的是 Late Fusion)

Early Fusion: 将 item 输入给 Item LLM 后得到的 embedding 直接拼到序列后输入给 User LLM,将对应位置的输出做分类。效果好但效率低。

Late Fusion: 类似于 Item LLM,使用 User LLM 提取得到用户的 embedding,即 [USER] 拼到序列后输入给 User LLM,将对应位置的输出与 拼到一起做分类。效果差些但效率高。

这两者有点类似单塔和双塔,一个是可以早期进行交叉充分学习但由于候选项过多效率低下,另一个是后期再交叉效率更高。实际在落地使用的是 Late Fusion。

预测是个二分类问题,训练损失函数如下:

其中,y 表示训练样本的标签,x 表示预测的 logit。

经验上,next item prediction 也可以作为判别模型中的辅助损失,用于进一步提升性能。因此,最终的损失函数可以表示为:

其中 用来控制辅助损失的权重。

3. 实验

3.1 公开数据集

数据集使用 PixelRec、Amazon Book,baseline 选用 SASRec 和 HSTU;

离线实验使用生成式推荐(为了与其他方法公平对比),在线 A/B 实验使用判别式推荐(为了与线上系统兼容);

自身模型设置 HLLM-1B、HLLM-7B 两种,HLLM-1B 采用 TinyLlama-1.1B,HLLM-7B 采用 Baichuan2-7B

HLLM 仅在 PixelRec,Book 训练 5 个 eopch,对比之下其他方法训练 50-200 epoch 不等,其他细节设置详见论文。

简单来说 HLLM 效果比 SASRec 和 HSTU 都要好。

这里有个疑问,目前 HSTU 公开的代码和设置都是忽略了动作这一输入,如若这里实验仅使用 item 并不能真正体现 HSTU 的能力,标星的都是作者自己复现的。

在线 A/B 实验:

【设置】采用 HLLM-1B,应用 判别式推荐 + Late Fusion,

【训练】采用三阶段方法训练:

阶段1: 端到端训练 HLLM,包括 Item LLM 和 User LLM,用户行为长度截断为 150 来加速;

阶段2: 使用阶段 1 训好的 Item LLM 所有的 item emb 存起来,然后继续只训练 User LLM,输入的 item emb 来自于库内。由于只训练 User LLM,用户行为扩大为 1000;

阶段3: 经历前两个阶段大量数据训练后,HLLM 权重不再改变,提取 user feature 和 item feature 喂给线上模型训练。

【推理】在 Serving 阶段,如图所示,item emb 会在其创建时提取,user emb 会进行天级别更新仅仅当用户在前一天发生过交互。基于该方法,线上推理系统推理时间基本不发生变化。

最后做 A/B 实验,重要指标提升 0.705%

4. 问题

4.1 微调相比直接使用预训练对于推荐目标是否有收益?

结论1: 对于 Item LLM 和 User LLM,基于预训练微调更好;

结论2: 预训练使用的 token 越多,效果越好;此外如果预训练后再进行 SFT(在对话场景下),效果会下降,原因可能是因为 SFT 仅仅训练 follow 指令的能力,而对推荐本身无益。

结论3: Item LLM 和 User LLM 都训练会更好。

4.2 HLLM 是否有 Scaling 特性?

针对 Item 和 User LLM 都做了Scaling 实验:

结论: 对于模型大小具有 scaling 特性;

(模型设置都不是一种结构,LLaMA变成了BERT,这也行?)

4.3 对比 SoTA 方法(HSTU)优势是什么?

论文主要先说了 HLLM 比 HSTU 在相同设置下效果更好,又强调了当增加负样本数量和 batchsize 时,基于 ID 的模型(HSTU)提升相对有限,HSTU-Large R@200 指标 +0.76,而相同设置的 HLLM-1B +2.44。

4.4 训练和 Serving 效率如何?

**结论1:**相对于 HSTU,HLLM 达到相同性能只需 1/6 至 1/4 的数据,需求更少。其次在实际推理时可以先 cache 所有 item emb;所以 HLLM 可以先训练 item LLM,然后cache item emb,然后再训练 User LLM,上图便展示了在 Pixel8M 的效果。

结论2: itemcache 比原来的性能略微降低,但仍然比 HSTU 好。

值得注意的是,实验所用预训练数据量不到 Pixel8M 的一半,且部分物品未出现在预训练数据中,仍然取得了不错的性能。在工业场景下,用户行为的数据量远大于 item 数量,因此相比 ID-based 模型 cost 一致。工业上实验同时表明,随着预训练数据量的增加,item cache 与 全量微调 之间的 gap 大大缩小。

5. 消融

5.1 Item LLM

结论: Item LLM 采用 Tag + Title + Description + length=256 效果最好。

结论: 采用 [ITEM] token 提取 emb 比 mean pooling 方法好。

5.2 UserLLM

结论: 输入用户序列长度采用 length=50 相比其他短的会更好。

结论: UserLLM 生成的 LLM emb 比 Item ID emb 更好,LLM emb 加上 ID emb 效果变差,加上 Timestamp emb 效果最好。

5.3 工业场景

结论: 工业场景下 Item LLM 和 User LLM 采用 7B 更好,User LLM 输入长度采用 1k 最好。

6. 小结

字节推出的 HLLM 利用大语言模型提取物品特征并建模用户兴趣,有效地将预训练知识集成到推荐系统中,并证明了基于推荐目标的微调至关重要。HLLM 在更大的模型参数下展现了出色的可扩展性。实验表明,HLLM 优于传统的基于 ID 的模型,在学术数据集上取得了很好的结果。在线 A/B 测试进一步验证了 HLLM 的实际效率和适用性,标志着 LLM4Rec 的重大进展。

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

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

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

相关文章

vscode中配置python虚拟环境

python虚拟环境作用 Python虚拟环境允许你为每个独立的项目创建一个隔离的环境,这样每个项目都可以拥有自己的一套Python安装包和依赖,不会互相影响。实际使用中,可以在vscode或pycharm中使用虚拟环境。 1.创建虚拟环境的方法: …

【NLP自然语言处理】01-基础学习路径简介

目的:让大家能够在 AI-NLP 领域由基础到入门具体安排: NLP介绍 文本预处理RNN 及其变体(涉及案例)Transformer 原理详解迁移学习 和 Bert 模型详解 (涉及案例)特点: 原理 实践每个文章会有练习…

04-SpringBootWeb案例(中)

3. 员工管理 完成了部门管理的功能开发之后,我们进入到下一环节员工管理功能的开发。 基于以上原型,我们可以把员工管理功能分为: 分页查询(今天完成)带条件的分页查询(今天完成)删除员工&am…

算法题总结(十)——二叉树上

#二叉树的递归遍历 // 前序遍历递归LC144_二叉树的前序遍历 class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> result new ArrayList<Integer>(); //也可以把result 作为全局变量&#xff0c;只需要一个函数即可。…

Linus Torvalds 要求内核开发人员编写更好的 Git 合并提交信息

昨天在宣布 Linux 6.12-rc2 内核时&#xff0c;Linus Torvalds 要求内核维护者在提交信息方面做得更好。Torvalds 尤其希望内核维护者在描述拉取请求中的变更时&#xff0c;能更好地使用积极、命令式的语气。 Linux创建者在6.12-rc2 公告中解释道&#xff1a; 总之&#xff0c…

论文阅读笔记-XLNet: Generalized Autoregressive Pretraining for Language Understanding

前言 Google发布的XLNet在问答、文本分类、自然语言理解等任务上都大幅超越BERT,XLNet提出一个框架来连接语言建模方法和预训练方法。我们所熟悉的BERT是denoising autoencoding模型,最大的亮点就是能够获取上下文相关的双向特征表示,所以相对于标准语言模型(自回归)的预…

【AIGC】ChatGPT提示词Prompt高效编写模式:结构化Prompt、提示词生成器与单样本/少样本提示

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;结构化Prompt (Structured Prompt)组成元素应用实例优势结论 &#x1f4af;提示词生成器 (Prompt Creator)如何工作应用实例优势结论 &#x1f4af;单样本/少样本提示 (O…

什么是安全运营中心 SOC?

SOC 代表安全运营中心&#xff0c;它是任何企业中负责组织安全、保护企业免受网络风险的单一、集中的团队或职能。 安全运营中心将管理和控制业务运营的所有安全要素&#xff0c;从监控资产到雇用合适的人员和流程&#xff0c;再到检测和应对威胁。 在本文中&#xff0c;我们…

PHP变量(第④篇)

本栏目教学是php零基础到精通&#xff0c;如果你还没有安装php开发工具请查看下方链接&#xff1a; Vscode、小皮面板安装-CSDN博客 今天来讲一讲php中的变量&#xff0c;变量是用于存储信息的"容器"&#xff0c;这些数据可以在程序执行期间被修改&#xff08;即其…

ThinkBook 16+ 锐龙6800h 安装ubuntu键盘失灵

问题&#xff1a;在ThinkBook 16 锐龙6800h 安装ubuntu18.04 出现笔记本键盘按下延迟非常高&#xff0c;输出卡死的情况&#xff0c;但是外接键盘可以正常使用 解决&#xff1a;更新内核 1、进入 https://kernel.ubuntu.com/~kernel-ppa/mainline/ 下载所需内核版本&#x…

Node.js+Express毕设论文选题最新推荐题目和方向

目录 一、前言 二、毕设选题推荐 三、总结 四、附录&#xff08;手册、官网、资源教程等&#xff09; 1. Node.js 官方资源 2. Express 官方资源 3.安装方法 4 创建示例 一、前言 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它允许开发者使用…

智能医疗:Spring Boot医院管理系统开发

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

x++、++x的一些问题

x、x在字面上无非就说一个先前置递增然后再运算&#xff0c;另一个是运算完再递增&#xff0c;是不是有些许模棱两可的感觉&#xff0c;接下来引用一个简单的for循环就能够大致理解&#xff1a; 先是x&#xff1a; int i0,x0;for(i0;(i)<5;){xi;printf("%d\n",x)…

ubuntu 安装baget

一、安装netcore3.1 环境 二、下载运行文件 下载&#xff1a;github.com/loic-sharma/BaGet/releases 修改&#xff1a;appsettings.json文件 mkdir -p /root/apps/baget mkdir -p /root/apps/datas touch /root/apps/baget.db cd /root/apps/baget dotnet BaGet.dll --urls&…

Android Framework(八)WMS-窗口动效概述

文章目录 动画简述本地、远端动画的定义什么是“leash”图层“leash”图层的命令与创建 Winscope流程小结 动画流程概览分析Activity启动app_transition 动画的主要事件触发动画执行的套路动画真正执行动画的结束回调触发远端动画的Target 动画简述 1、动画的原理也是利用了视觉…

思科dhcp的配置

以路由器为例 让pc3 自动获取ip地址并获取的网段为172.16.4.100-172.16.4.200 配置如下&#xff1a; R1(config)#interface GigabitEthernet0/2 R1(config)#ip address 172.16.4.254 255.255.255.0 R1(config)# no shutdown R1(config)#ip dhcp pool 4_pool //创建dhcp地址池…

如何使用 Python 读取数据量庞大的 excel 文件

使用 pandas.read_excel 读取大文件时&#xff0c;的确会遇到性能瓶颈&#xff0c;特别是对于10万行20列这种规模的 .xlsx 文件&#xff0c;常规的 pandas 方法可能会比较慢。 要提高读取速度&#xff0c;关键是找到更高效的方式处理 Excel 文件&#xff0c;特别是在 Python 的…

毕业设计项目——基于transformer的中文医疗领域命名实体识别(论文/代码)

完整的论文代码见文章末尾 以下为核心内容 摘要 近年来&#xff0c;随着深度学习技术的发展&#xff0c;基于Transformer和BERT的模型在自然语言处理领域取得了显著进展。在中文医疗领域&#xff0c;命名实体识别(Named Entity Recognition, NER)是一项重要任务&#xff0c;旨…

uniapp实战教程:如何封装一个可复用的表单组件

在uniapp开发过程中&#xff0c;表单组件的使用场景非常广泛。为了提高开发效率&#xff0c;我们可以将常用的表单组件进行封装。本文将带你了解如何在uniapp中封装一个表单组件&#xff0c;让你只需要通过属性配置轻松实现各种表单&#xff0c;效果图如下&#xff1a; 一、准备…

如何利用免费音频剪辑软件制作出精彩音频

现在有许多免费的音频剪辑软件可供选择&#xff0c;它们为广大用户提供了丰富的功能和便捷的操作体验&#xff0c;让音频编辑变得更加轻松和有趣。接下来&#xff0c;让我们一起走进这些免费音频剪辑软件的世界&#xff0c;探索它们的独特魅力和强大功能。 1.福昕音频剪辑 链…