WWW2024 | PromptMM:Prompt-Tuning增强的知识蒸馏助力多模态推荐系统

news2024/11/19 3:24:35

请添加图片描述

论文:https://arxiv.org/html/2402.17188v1

代码:https://github.com/HKUDS/PromptMM

研究动机

多模态推荐系统极大的便利了人们的生活,比如亚马逊和Netflix都是基于多模态内容进行推荐的。对于研究,人们也遵循工业界的趋势,进行modality-aware的用户偏好的建模。然而,目前的工作主要是将多模态feature引入推荐系统中,这样的做法导致了两个问题:

  • 多模态编码器的引入引进了非常多的额外的参数导致了过拟合,因为所输入给模型的是高维度多模态feature。

I1: Overfitting & Sparsity. 当前的多媒体推荐系统通过采用先进的编码器来处理来自预训练提取器(CLIP-ViT、BERT)的高维特征而表现出色。辅助模态缓解了数据稀疏性,但不可避免地导致了增加的资源消耗。例如,关于电子产品(第4.1.1节)数据集的特征提取器,SBERT和CNNs的输出维度分别为768和4,096。它们比当前方法的嵌入维度要大得多,即 𝑑𝑚 ≫ 𝑑。重新训练预训练模型可以改变输出维度,但由于不同的潜在表示和超参数,这将显著影响性能。此外,训练预训练模型需要大量的计算资源,可能需要在多个GPU上花费数天到数周的时间。因此,当前的多模式工作携带额外的高维特征减少层。这些额外的参数加剧了由于数据稀疏性而已经存在的过拟合,进一步增加了收敛的难度。

  • side information的引入不可避免地带来了噪声和冗余,这样会导致模态启发的依赖,无法正确反映用户偏好。

I2: Noise & Semantic Gap. 作为附加信息,当使用协同关系来建模用户偏好时,多媒体内容存在固有的不准确性和冗余性。例如,用户可能被文本标题吸引,但图像内容无关;微视频中的音乐可能是为了潮流,而不是用户偏好。盲目依赖噪声模态数据可能会误导用户与项目之间的关系建模。此外,多模态上下文和用户与项目的协同关系最初来自两个不同的分布,存在着较大的语义差距,这给挖掘模态感知用户偏好带来了挑战,甚至破坏了现有的稀疏监督信号。

为了解决这些问题, PromptMM提出通过知识蒸馏的方式简化并强化推荐系统。 而知识蒸馏是被Prompt Tuning所增强的,以为了防止过拟合并得到adaptive的知识。具体地,知识蒸馏进行了模型压缩,通过UI边的关系和多模态节点的关系, 使得老师模型中的这些知识传递到学生当中, 使学生避免了使用额外的多模态feature编码的参数。为了将多模态内容和协同过滤的语义gap缩小以防止过拟和,soft prompt-tuning被引入,使得学生模型得到task adaptive的知识。此外,为了调整不正确性的多模态知识,一个多模态listwise的蒸馏被提出,它是通过re-weight机制来调节噪声。 在真实数据上,全面的实验展示了模型的有效性,消融实验也证明了关键组件的作用,额外的实验测试了模型的有效性和效率。

网络架构

请添加图片描述

一. 模态启发任务适应性建模
1. 老师模型和学生模型
  • 老师模型:编码高阶多模态信息的冗余模型。
    请添加图片描述

  • 学生模型:专注于协同过滤的轻量级模型。
    请添加图片描述

2. Soft Prompt-Tuning作为语义链接

模态内容不可避免地包含任务无关的冗余,他们不仅会影响CF任务,还会加重过拟合。此外,多模态建模和u-i交互建模之间巨大的语义gap还会影响真实用户偏好的学习。 soft prompt-tuning被引入来解决这个问题。具体地,为了从模态中抽取协同信号, prompt p被整合到多模态老师的feature编码层R(.)中。prompt p于多模态老师中被构建,在学生模型中被fine-tune来提升被冻住的老师模型。prompt p能够为老师模型引入学生任务相关的信号。

具体的过程可以被分为三步,i) 构建prompt; ii) 把soft-prompt整合进老师模型; iii) 进行prompt-tuning。

  • 构建prompt:
    请添加图片描述

  • 得到prompt-guided的老师,即将得到的prompt整合进老师的特征编码层中:
    请添加图片描述

  • 进行soft-prompt tuning: 将冗余的多模态老师作为pre-trained model,soft prompt-tuning能对老师模型进行微调。整个训练过程分为两个阶段:1)在老师训练阶段prompt模块梯度下降更新参数,指导老师模型的inference过程。2)在学生训练阶段,模型使用线下知识蒸馏,冻住老师模型,用学生模型loss的下降再次调整prompt模块适应student。

二. 模态启发的ranking知识蒸馏

为了全面地获得高质量的协同信号和模态启发的用户偏好从老师模型,PromptMM设计了三种知识蒸馏的范式:1) 高质量的ranking蒸馏 2) 去噪的模态启发的ranking蒸馏 3) 模态启发的embedding蒸馏。

  • 高质量的ranking蒸馏:通用的知识蒸馏往往发生在多分类任务上,分类的logit作为被蒸馏的知识,为了适用推荐任务,模型将BPR的logit作为需要被蒸馏的知识。除了正常的BPR loss, 这里的高质量的ranking蒸馏从老师模型获得暗知识作为辅助,使得原来的模型跳出局部最优,得到更好的结果。
    请添加图片描述

  • 之前编码的多模态内容 f_m^u, f_m^i 在教师模型 T(·) 中含有噪音,可能会影响模态感知用户偏好建模。为了在减少任务无关部分影响的同时进行精确和细粒度的蒸馏,模型设计了一个去噪的模态感知知识蒸馏。具体而言,模型使用 f_m^u, f_m^i 计算列表式分数来进行模态感知排名知识蒸馏。此外,为了进一步减少噪音的影响,模型将知识蒸馏损失重构为解耦部分的加权和。
    请添加图片描述

请添加图片描述

list-wise ranking KD损失被重构为两个项的加权和,可调节地传递可靠知识并增强与模态相关的用户偏好的准确性。强调置信度较高的是user preference的部分
请添加图片描述

较低的分数被分配给那些不确定的用户-物品关系,以降低它们在知识蒸馏过程中的影响。这使得 PromptMM 可以专注于来自教师模型的最可靠信号,进行去噪的知识传递。即,对置信度较低的部分重新赋予权重,以减轻模态中可能存在的噪声的影响:
请添加图片描述

  • 除了基于logit的知识蒸馏之外,模型提出用嵌入级别蒸馏来增强模型的PromptMM框架。为了在模型的PromptMM中实现嵌入对齐,模型采用了Scale Cosine Error (SCE)损失函数,并结合自动编码器进行鲁棒训练,而不是使用均方误差(MSE)。这是因为MSE具有敏感性和不稳定性,可能会由于不同的特征向量范数和维度灾难导致训练崩溃。 模态启发的embedding蒸馏:是feature-based的蒸馏,通过SCE loss实现:
    请添加图片描述
三. 最终的优化目标

最终的优化目标是BPR loss与三种KD loss的结合:
请添加图片描述

实验结果

一. 主实验

请添加图片描述

所提出的 PromptMM 在所有三个数据集上始终优于普通的协同过滤(CF)模型和最先进的多模态推荐方法,表明其在多模态推荐中的有效性。改进的结果归因于moxing 设计的通过提示调整增强的多模态知识蒸馏,这不仅在多模态知识传递过程中弥合了语义差距,还消除了模态数据的噪声和冗余影响。此外,模型的结果支持多模态推荐系统比普通的 CF 模型表现更好的观点,因为多模态上下文的融合有助于在稀疏数据下辅助用户偏好学习。模型的 PromptMM 通过轻量级架构和定制转移知识取得了竞争性的结果,这表明多模态数据中可能存在噪声。这一发现证实了模型的动机,即直接将多模态信息纳入用户表示可能会引入噪声,从而误导模态感知用户偏好的编码。为了解决这个问题,模型提出的方法在知识蒸馏过程中解耦了协作关系的软标签,有效地通过向学生模型传递更多信息丰富的信号,从而减轻了多模态内容的噪声。

二. 消融实验

请添加图片描述

消融实验说明了知识蒸馏和soft prompt-tuning的效用。如表5所示:(1)对于没有Prompt的变体,其在所有三个数据集上的性能都比PromptMM要差。这表明去除提示调整可能会导致知识蒸馏的语义差距。模态感知投影可能也存在过拟合,并且可能仅限于编码与推荐任务相关的多模态上下文,而没有提示调整增强。(2)在去除成对蒸馏时,没有PairKD的变体表现出与PromptMM相比的性能下降,这表明了LPKD在提取基于排名的信号进行模型对齐方面的强大能力。(3)模态感知列表式蒸馏可以精确地提取质量良好的模态感知协作关系,有助于多模态推荐。因此,没有ListKD的变体不如PromptMM的结果。(4)以物品为中心的模态特征对用户的偏好存在严重偏差。因此,在没有解耦和重新加权蒸馏软标签的情况下,没有Disentangle的变体表现不佳。

三. 资源消耗实验

请添加图片描述

工作研究了老师、学生和几个基线(LATTICE)在训练时间、存储、参数数量和学生与教师参数比等方面的资源利用情况,以进行模型压缩。在Netflix和Electronics数据集上的具体数值结果报告在表6中。结果显示,工作的学生模型在推理和推荐时间消耗方面明显低于其他模型,可能是由于它们较大的大小,在梯度下降参数更新期间需要更多时间。此外,LATTICE必须动态学习同质图,这增加了计算时间消耗。工作发现,在工作的模型中计算KL散度并不会显著增加时间消耗,从而降低了延迟。此外,结果显示工作的模型存储消耗较低,参数数量远低于其他模型,例如LATTICE需要动态计算和存储物品-时间关系,产生了显著的开销。"ratio=11.24% or 2.70%"的数值表明了工作的模型作为压缩算法的有效性。

总结

这项工作的目标是使用一种新颖的模态感知KD框架,通过提示调整来简化和增强多模态推荐系统。为了有效地将任务相关的知识从教师模型转移到学生模型,模型引入了一个可学习的提示模块,动态地弥合了教师模型中的多模态上下文编码与学生模型中协作关系建模之间的语义差距。此外,模型提出的框架名为PromptMM,旨在分解信息性的协作关系,从而实现增强型知识蒸馏。通过大量实验,模型证明了PromptMM相比最先进的解决方案显著提高了模型效率,同时保持了更优的准确性。模型未来的工作计划是将LLMs与多模态上下文编码相结合,以提高性能。

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

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

相关文章

初步了解序列化和反序列化

01什么是序列化和反序列化 序列化是将对象转化为字符串以便存储的一种方式。而反序列化恰好是序列化的逆过程,反序列化会将字符串转化为对象供程序使用。 常见的php系列化和反系列化方式主要有:serialize,unserialize;json_enco…

删除元素.

C 用迭代器迭代&#xff0c;当条件成立删除元素。 class Solution { public:int removeElement(vector<int>& nums, int val) {for(std::vector<int>::iterator itnums.begin();it!nums.end();){if(*itval){itnums.erase(it);//vector删除时迭代器会失效&…

jenkins 使用k8s插件连接k8s集群

jenkins 安装k8s 插件 配置k8s节点 填写k8s 配置信息 生成秘钥 在服务器上面 查看地址 Kubernetes 服务证书 key cat /root/..kube/config 查看秘钥 对秘钥进行base64 位 加密 echo "秘钥内容" | base64 -d -----BEGIN CERTIFICATE----- MIIDITCCAgmgAwIB…

第一位 AI 程序员诞生,队友还是对手?

前几天&#xff0c;百度创始人李彦宏在采访中声称&#xff1a;“以后不会存在“程序员”这种职业了&#xff0c;因为只要会说话&#xff0c;人人都会具备程序员的能力”。 看到这话我的第一反应是“不可能&#xff0c;绝对不可能&#xff0c;程序员的工作有很大一部分是创造性的…

顺序表后续以及通讯录项目

⽬录 1. 基于动态顺序表实现通讯录项⽬ 2. 顺序表经典算法 3. 顺序表的问题及思考 正⽂开始 继上一篇 1.动态顺序表的查找 这里挺简单的如找不到就返回一个负数&#xff0c;因为索引不可能是负的这里就用来代表找不到 下面是找不到的示例 最终代码可以优化成这样 2.动态…

2024-03-13 作业

网络编程&#xff1a; 1.思维导图&#xff1a; 2.上课写的代码&#xff1a; 2.1网络字节序与主机字节序转换 运行代码&#xff1a; #include <myhead.h> int main() {int num 0x12345678;short int value 0x1234;int num_n htonl(num);int value_n htons(value);…

Window API 使用的一些注意事项

文章目录 1、LPCWSTR类型2、LPCTSTR类型3、LPCSTR类型4、LPCTSTR和LPCWSTR区别5、LPCTSTR和LPCSTR、LPCWSTR三者区别6、_T(" ")7、DWORD类型转换为std::wstring类型8、char类型转换为LPCSTR类型9、获取当前时间戳(毫秒)10、std::wstring和LPCSTR区别11、std::wstring…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Toggle)

组件提供勾选框样式、状态按钮样式及开关样式。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 仅当ToggleType为Button时可包含子组件。 接口 Toggle(options: { type: ToggleType, is…

android studio 连接mumu模拟器调试

1、打开mumu模拟器 2、在Android Studio 中 控制台 cd 到 sdk 目录下 platform-tools 文件夹&#xff0c;有一个adb.exe 可运行程序 一般指令&#xff1a; adb connect 127.0.0.1:7555 但是这个执行在window环境下可能会报错 解决方法是在 adb 之前加 ".\", 问题…

精读《正交的 React 组件》

1 引言 搭配了合适的设计模式的代码&#xff0c;才可拥有良好的可维护性&#xff0c;The Benefits of Orthogonal React Components 这篇文章就重点介绍了正交性原理。 所谓正交&#xff0c;即模块之间不会相互影响。想象一个音响的音量与换台按钮间如果不是正交关系&#xf…

Java初阶数据结构队列的实现

1.队列的概念 1.队列就是相当于排队打饭 2.在排队的时候就有一个队头一个队尾。 3.从队尾进对头出 4.所以他的特点就是先进先出 所以我们可以用链表来实现 单链表实现要队尾进队头出{要有last 尾插头删} 双向链表实现效率高&#xff1a;不管从哪个地方当作队列都是可以的&…

学习JAVA的第二十一天(基础)

多线程 线程&#xff1a; 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。 进程&#xff1a; 程序的基本执行实体 并发&#xff1a; 在同一时刻&#xff0c;有多个指令在单个CPU上交替执行 并行&#xff1a; 在同一时刻&…

uniapp h5 部署

uniapp 配置 服务器文件路径 打包文件结构 //nginx 配置 server {listen 8300;server_name bfqcwebsiteapp;charset utf-8;#允许跨域请求的域&#xff0c;* 代表所有add_header Access-Control-Allow-Origin *;#允许带上cookie请求add_header Access-Control-Allow-C…

利用Anaconda创建环境

利用Anaconda创建环境 1. 创建环境的步骤 1. 创建环境的步骤 1.在终端中&#xff0c;使用以下命令创建一个新的 Anaconda 环境。假设您想要创建一个名为 myenv 的环境&#xff1a; conda create --name myenv2.如果您想指定 Python 版本&#xff0c;可以在创建环境时添加版本号…

改三行代码就发了SCI一区?基于全面学习策略的Jaya算法!学会你也可以!CEC2017效果极佳!

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原始Jaya算法 改进Jaya算法策略详解&…

使用Golong轻松实现JWT身份验证

使用Golong轻松实现JWT身份验证 JSON Web Tokens (JWT)是一种流行的安全方法&#xff0c;用于在两个方之间表示声明。在Web应用程序领域&#xff0c;它们通常用作从客户端向服务器传输身份信息&#xff08;声明&#xff09;的方式。本教程将引导您逐步实现Go应用程序中的JWT身份…

操作系统内功篇:硬件结构之CPU是如何运行的?

本文分5个小结&#xff0c;分别是图灵机工作方式&#xff0c;冯诺依曼结构&#xff0c;总线线路位宽和CPU位宽&#xff0c;程序执行的基本过程&#xff0c; a12的具体执行过程。 一 图灵机的工作方式 图灵机由纸带&#xff0c;读写头组成。读写头上有一些部件例:存储单元&#…

java集合框架——List集合概述及ArrayList,LinkedList的区别

前言&#xff1a; List系列集合是Collection集合中两个系列的其中一个&#xff0c;整理下笔记。打好基础&#xff0c;daydayup&#xff01; 需要了解Collection的&#xff0c;可以看这篇java集合框架——Collection集合概述 List系列集合 List系列集合的特点为添加的元素有序&…

python-0007-django模版

介绍 模版是对js&#xff0c;html等资源的封装 新建 在项目路径下新建模版文件夹templates&#xff08;可以为其他名称&#xff09;&#xff0c;要是想细分业务的话&#xff0c;还可以在templates路径下继续建文件夹。如下图&#xff1a; 注册模版 在项目的settings找到T…

分布式链路追踪(一)SkyWalking(1)介绍与安装

一、介绍 1、简介&#xff1a; 2、组成 以6.5.0为例&#xff0c;该版本下Skywalking主要分为oap、webapp和agent三部分&#xff0c;oap和webapp分别用于汇总数据和展示&#xff0c;这两块共同组成了Skywalking的平台&#xff1b;agent是探针&#xff0c;部署在需要收集数据的…