BinLLM论文阅读笔记

Text-like Encoding of Collaborative Information in Large Language Models for Recommendation论文阅读笔记

Abstract

现存的问题:

​ 在调整用于推荐的大型语言模型(LLMRec)时,整合协作信息至关重要。现有的方法通过从头开始学习 LLM 潜在空间中的协作嵌入或通过外部模型的映射来实现这一目标。但是,这些方法无法以类似文本的格式表示信息,而这种格式可能无法与 LLM 达到最佳匹配。

提出问题:

​ 为了弥补这一缺陷,我们引入了 BinLLM,这是一种新颖的 LLMRec 方法,可通过类文本编码无缝整合协作信息。BinLLM 可以将外部模型的协作嵌入转换成二进制序列--一种 LLM 可以理解并直接操作的特定文本格式,从而方便 LLM 直接使用类文本格式的协作信息。此外,BinLLM 还提供了使用点十进制符号压缩二进制序列的选项,以避免长度过长。

Introduction

​ 由于大语言模型(LLMs)的强大功能,人们越来越关注将其应用于推荐系统(LLMRec),在过去的一年中,这一研究取得了重大进展。在推荐中,协作信息(描述了用户与项目之间互动的共现模式)已成为用户兴趣建模的重要组成部分,尤其是对活跃用户和项目而言。然而,这些信息的存在方式与文本数据不同,因此在像文本信息那样直接被 LLM 利用时面临着挑战。要提高推荐质量,将协作信息无缝整合到 LLM 中无疑至关重要。

​ 迄今为止,出现了两种整合策略。第一种策略类似于潜在因素模型,在 LLMs 中加入额外的标记和相应的嵌入来表示用户和项目,随后拟合交互数据以隐含地捕捉嵌入中的协作信息。然而,由于信息固有的低等级性质,这种方法的学习效率较低,导致 LLMs 中的标记化冗余。为了应对这些挑战,另一种方法是利用外部潜在因素模型来捕捉信息,然后将其映射到 LLM 标记嵌入空间,从而避免了从头开始学习的需要。这种方法虽然有效,但却带来了训练映射模型的额外开销。

​ 无论是直接在 LLM 标记嵌入空间中从头开始学习协作信息,还是从外部模型中映射协作信息,所产生的表征都与 LLM 的原始文本级编码存在很大差异。这在一定程度上阻碍了 LLM 能力的充分发挥,因为 LLM 最初是根据文本数据训练的,擅长处理文本编码信息。例如,引入新的标记会改变 LLM 的生成空间,可能会影响其原有功能,更不用说发挥其能力了。因此,在 LLMs 中探索类似文本的协作信息编码大有可为。然而,由于文本和协作信息模式之间的固有差异,这也带来了挑战。

​ 在本研究中,我们深入探讨了在 LLM 中编码协作信息以进行推荐这一核心主题,这是 LLMRec 尚未探索的一个前景广阔的领域。关键在于将协作信息转化为类似文本格式的序列。我们认为,这种类似文本的序列不一定要能被人类理解;相反,它应该能被 LLMs 解释,以便有效利用,例如通过序列比较来促进推理任务,如辨别用户和项目的相似性。因此,这种文本序列并不一定要遵循传统的自然语言模式。

​ 为此,我们引入了 BinLLM,这是一种创新的 LLMRec 方法,它使用类似文本的编码策略将协作信息整合到 LLM 中。我们将从外部模型获得的协作嵌入转化为二进制序列,将其视为 LLM 可直接使用的文本特征。这种设计主要出于两个考虑: 1) 在不影响性能的情况下对协作嵌入进行二进制化的可行性;2) LLMs 可以自然地执行位操作或在指令调整后执行位操作,从而能够比较二进制化序列之间的相似性。

​ 再进一步,我们探索用点-十进制符号来表示二进制序列,从而获得更短的表示方法,类似于将二进制序列转换为 IPv4 地址。通过使用包含此类编码协作信息的推荐指令数据对 LLM 进行微调,我们可以在不修改 LLM 的情况下利用文本语义和协作数据进行推荐。

​ 本文的主要贡献如下:

  • 我们强调在 LLMRec 中对协作信息进行文本式编码的重要性,以增强与 LLM 的一致性。
  • 我们介绍了 BinLLM,这是一种新颖的方法,通过将协作嵌入转换为二进制序列,以文本形式为 LLM 高效编码协作信息

Method

​ 在本节中,我们将介绍我们的 BinLLM 方法,首先介绍模型结构,然后介绍微调方法。

模型架构

​ 图 1 描述了 BinLLM 的模型架构,包括两个主要部分:提示生成和 LLM 预测。与之前的方法类似,我们将推荐数据转换成提示,然后直接输入 LLM 进行预测。不过,BinLLM 的主要区别在于,它通过将协作嵌入转换为二进制序列,以类似文本的格式表示协作信息。接下来,我们将深入探讨这两个组件的具体细节。

pAmF9US.png

提示构建

​ 如图 1 所示,我们使用以空字段为特征的模板来构建提示,其中包括文本字段(如“”)和 ID 字段(如“”)。请参见表 1 中的模板示例。通过在这些字段中填入相应的用户数据,我们可以生成用于推荐目的的个性化提示。文本字段用于包含文本信息,可直接用推荐数据集中的相应文本数据填充,例如“”字段中的历史项目标题。ID 字段指定用于嵌入协作信息,协作信息通过类文本编码(TE)模块获取。接下来,我们将深入探讨协作信息的编码过程。

协作信息的类文本编码

​ 为了更好地与 LLM 集成,我们的目标是将协作信息编码成类似文本的格式。为此,我们将协作信息转换为二进制序列,使 LLM 能够执行位操作进行推理。编码模型包括两个部分: 1) 协作模型,这是一个传统的潜在因子模块,能够将协作信息编码为数字潜在向量(即协作嵌入)。2) 二进制化和压缩模块,用于将协作嵌入转化为二进制序列或进一步压缩格式。

协作模型

​ 给定一个用户 u 和一个物品 i,协作模型会为它们生成相应的嵌入,分别记为 eu 和 ei。形式上:

\(\boldsymbol{e}_u=f_c(u;\theta)\\\boldsymbol{e}_i=f_c(i;\theta),\)

​ 其中\(f_c\)代表协作模型

二值化和压缩

​ 获得协作嵌入后,该组件用于将其转换为二进制序列,并可选择压缩序列。

二值化

​ 为了对协作嵌入进行二值化处理,首先,我们使用全连接层将协作嵌入变换到一个合适的空间,然后应用符号函数得到二值化结果。形式上,对于用户 u 和项目 i 的协作嵌入点 eu 和 ei,它们被转换成二进制序列如下:

\(\boldsymbol{h}_u=sign(\sigma(W\boldsymbol{e}_u+b))\\\boldsymbol{h}_i=sign(\sigma(W\boldsymbol{e}_i+b)),\)

​ 其中,hu和 hi 分别表示所获得的用户和项目协作信息的二进制表示。

​ 通过这种方法,我们可以将数字协作嵌入转换为二进制序列(如 “010110....”)。这些序列可以直接输入 LLM,并用于计算逻辑 “AND ”等操作,从而帮助用户进行偏好推理。

压缩

​ 二进制序列的局限性在于其相对较长的长度,这对不擅长处理长序列的 LLM 来说是一个挑战。此外,长序列还会限制 LLMRec 的推理效率。因此,我们考虑对二进制序列进行压缩,同时保持它们可被 LLM 利用。鉴于 IPv4最初是由二进制序列编码的,而且网络中包含足够的 IPv4 知识,因此在网络数据上训练的 LLM 有可能理解 IPv4 使用的点十进制符号。因此,我们考虑用点-十进制符号压缩二进制嵌入。我们将每八位二进制数转换成十进制数,范围从 0 到 255,并使用句号(点)作为分隔符。

LLM预测

​ 一旦提示模板中的空字段被填满,生成的提示信息就会被送入 LLM 进行预测。与之前的研究类似,鉴于 LLMs 中缺乏特定的推荐预训练,我们引入了一个额外的 LoRA 模块来进行推荐预测。形式上,对于生成的提示 p,预测可表述为:

\(\hat{y}=LLM_{\hat{\Phi}+\Phi^{\prime}}(p),\)

​ 其中,\(\hat{\boldsymbol{\Phi}}\)表示预训练的 LLM 参数,Φ ′ 表示 LoRA 模型参数,y 表示预测结果,根据任务的不同,可以是预测的下一个项目,也可以是预测的喜欢某个候选项目的可能性。

训练

​ 在我们的模型架构中,有两个模块需要训练:类文本编码模块和 LoRA 模块。类文本编码模块的调整重点是学习如何生成二进制序列以获取协作信息,而与 LLM 无关。LoRA 的调整旨在指导 LLM 利用协作信息提出建议。现在我们分别介绍这两种调整范式。

类文本编码的预训练

​ 为了训练类文本编码模块,我们直接利用二值化表示来拟合训练数据。形式上,让 D 表示训练数据,(u, i, t) ∈ D 表示用户 u 与标签为 t 的项目 i 之间的交互。我们通过最小化以下优化问题来训练该模块:

\(minimize\sum_{\theta,W,b}\ell(t,\boldsymbol{h}_u^\top\boldsymbol{h}_i),\)

​ hu和hi表示前面得到的二进制表示形式,

​ 值得注意的是,符号函数缺乏平滑性,其梯度也没有定义为零,这对反向传播提出了明显的挑战。为了以端到端的方式训练模型,我们使用直通估计器(STE)对梯度进行近似。也就是说,我们直接使用输出的梯度作为符号函数输入的梯度。

LoRA微调

​ 为了调优LoRA模块,我们考虑了两种调优方法:直观的调优和两步调优。

直观调优

​ 这种方法可直接从头开始调整 LoRA 模块,并使用包含协作信息的提示。

两步调优

​ 在直观调整方面,潜在的挑战出现在评级预测任务等场景中,在这些场景中,二进制表征可以作为高效特征,学习复杂度相对较低 。从头开始纳入协作信息可能会导致模型过度依赖这些特征,从而可能忽略其他属性,如学习捷径特征。为了解决这个问题,我们提出了一个额外的两步调整策略。首先,我们使用排除协作信息的提示来训练模型。随后,我们使用包含协作信息的完整提示对模型进行微调,从而进一步完善模型。

总结

​ 这篇文章主要要解决的问题就是推荐系统产生的协作表示与LLM的一些表示有较大的差距,要做的事情就是让这两个表示对齐,增强两个表示的一致性。

​ 具体来说就是提出了一种编码方式,对协作表示进行进行二进制编码,然后再进行压缩至类ipv4的序列

​ 得到协作表示之后,将其输入到prompt中,进行推荐,最后又介绍了一下微调的策略。

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

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

相关文章

线上问题排查-定时任务状态未复位

项目业务 用户授权登录后,负责把本 app 的运动同步到第三方,分别对接了 A、B、C、D 等第三方,各个平台的推送方式不太一样,有一些是主动查询,有一些是主动推送 场景 周五线上 Redis 报了内存不足,代码排查后发现用户数据占用了很大一部分,并且只存储不查询也不设置过期事…

java基础 -线程(基础)的 笔记

581,多线程机制 因为需要敌人的坦克可以自由移动并发射子弹,我们的坦克可以移动并发射子弹,这些要用到线程的知识。根据JConsole监控线程执行情况,发现,主线程执行完了,子线程还没有执行完,并不能表示当前进程死亡了,只有当所有的子线程执行完了,主进程才会结束。真正…

Leangoo领歌:一站式敏捷缺陷管理平台,助力产品迭代

在敏捷开发环境下,缺陷管理的效率直接影响到项目的质量和交付周期。对于追求高效、透明和灵活的敏捷团队来说,Leangoo领歌无疑是一个不可或缺的工具。​在开发过程中,缺陷(BUG)管理一直是项目管理中的一个关键环节。及时发现并修复BUG,不仅能够提高产品质量,还能有效提升…

手写数字识别总结

项目介绍:每张图片都是28*28的像素1,使用全连接层 图像拆分成一维像素阵列作为输入值,输入到神经网络中。打包多个图像输入称为一个batch2,输出数据需要做归一化,使数据概率在0-1之间3,一个batch_size设置为15,共训练两次 通过调节a和b,使训练值与真实值的误差减小,形…

h5新特性

新增语义化标签header:整个页面或部分区域的头部footer:整个页面,或者部分区域的底部nav:导航article:文章、帖子、杂志、博客、评论等section:页面中的某段文字或者文章中的某段文字aside:侧边栏main:文档的主要内容,(WHATWG没有语义,IE不支持)hgroup:包裹连续的标题,如文章…

Python存储与读写二进制文件

本文介绍了一种在Python中将Numpy数组转存为一个紧凑的二进制格式的文件,及其使用内存映射的形式进行读取的方案。一个二进制的数据流,不仅可以更加方便页形式的内存映射,相比于传统的Numpy单精度浮点数数组还有一个可哈希的特性。总体来说是一个对于高性能计算十分友好的存…

IIS标识介绍

原文链接:https://blog.csdn.net/weixin_30607659/article/details/95294969 应用程序池的标识是运行应用程序池的工作进程所使用的服务帐户名称。默认情况下,应用程序池以 Network Service 用户帐户运行,该帐户拥有低级别的用户权限。您可以将应用程序池配置为以 Windows S…

SQL SERVER -- JSON处理

-- JSON 字符串转 行记录 Declare @JsonStr Nvarchar(Max)=[{"State":0,"Name":"语文","ReMark":"了解国学信息","RepDtl":[{"ID":1,"Age":11},{"ID":2,"Age":12},{&quo…

添加字体(以课堂“谁能许我扶桑花期字体“为例)

1.进入https://font.chinaz.com/此网址,在搜索栏搜索“谁能许我扶桑花期字体”,点击下载 2.下载后为font1618.rar压缩文件,将文件放于桌面并进行解压 3.解压后的文件夹中包括三个文件,如图将【谁能许我扶桑花期】.ttf文件进行复制 4.打开“我的电脑(计算机)”,在地址栏输入…

2-4Java重写与重载

Java 重写与重载 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异…

django 路由相关

路由系统 1 常见操作 通俗的语言来表示:URL -> 函数对应关系2 路由源码分析 2.1 路由定义的本质from django.urls import path, re_path from apps.www import viewsfrom django.urls import URLPattern from django.urls.resolvers import RoutePatternurlpatterns = […