小红书NoteLLM-2 : 多模态大模型表征赋能推荐
标题: NoteLLM-2: Multimodal Large Representation Models for Recommendation
地址: https://arxiv.org/abs/2405.16789
公司: 小红书
投稿: NeurIPS'24
1. 前言
现阶段, 大语言模型(LLM)由于其在自然语言理解上的突出表现&优势, 在文本表征任务上有很多应用, 但鲜有工作能利用LLM来辅助提升多模态表征任务。比如小红书的多模态I2I推荐召回场景就是一个多模态表征任务场景。
将LLM应用于多模态I2I可以大致分成两种:
一种最直接的方式是预训练多模态大语言模型(MLLMs)表征, 对应图中灰色箭头的流程, 但这需要依赖高质量&大规模的训练数据, 训练过程及训练成本都非常高, 业务上可能难以接受。
另一种方式是基于已有的LLM和预训练视觉Encoder, 使用业务数据End-to-End训练, 实现集成&融合, 对应图中黑色箭头的流程, 这种方式只依赖场景数据, 更加高效且可定制化。但一些实验表明(见下面第2节), 这种fine tune的表征容易模态失衡, 会更偏向文本模态, 忽视视觉模态。
作者将第2种方式称为多模态大表征模型(Multimodal Large Representation Models, 下文简称MLRMs), 本文所提的NoteLLM-2就属于第2种方式, 通过提出"多模态上下文学习"(multimodal In-Content Learning,简写成mICL)方法和"后融合"(Late Fusion)方法来缓解当前方法存在的缺点。
在介绍这些NoteLLM-2之前, 先看下作者对前面两种做多模态I2I方法的调研&实验分析。
2. 调研&实验分析
2.1 背景介绍
这一部分会涉及较多之前NoteLLM论文里的背景, 接下来会做一些介绍, 希望更深入了解细节的可以看历史文章. WWW'24 | 小红书NoteLLM: 大语言模型用于I2I笔记推荐
2.1.1 问题定义
笔记内容池记为, 为笔记内容池的数量,笔记可以表示成, 其中, , , 分别表示笔记的标题, 笔记的主题标签, 笔记的类目以及笔记的内容。而多模态I2I是基于给定的笔记的多模态表征, 计算笔记之间多模态相似度, 从内容池中召回相似笔记。
2.1.2 构造共现笔记数据集
作者从用户行为数据中提取共现笔记, 构建相关笔记的Pair对数据, 具体的
Step1: 统计一周内行为数据中用户浏览了笔记内容后,又点击浏览笔记的数据, 计算笔记笔记的共现分数:
其中, 表示有过"浏览笔记内容后又点击浏览笔记行为"的用户集合, 表示行为数据中该用户点击过的笔记的数量。这里, 可以理解为, 基于不同用户的活跃程度给不同用户赋予了不同的点击权重, 可以规避掉特别活跃用户数据的误导。
Step2: 对于每个笔记, 计算得到其它笔记与它的共现分数后, 过滤掉共现分数不在()区间的相关笔记, 再对剩下的相关笔记依共现分数取top 笔记作为笔记的相关笔记。
2.1.3 基础MLRMs表征方法
下图分别是基础版的MLRMs表征方法(a)与作者所提NoteLLM-2表征方法(b)对比的示意图。这些基础的多模态表征方法会作为后面NoteLLM-2的实验对比基线, 先看基础的MLRMs表征方法。
1) 笔记压缩提示模板
作者构造了如下格式的笔记压缩提示模板, 该提示模板会将笔记内容以Json格式作为输入, 其中<IMG>是一个占位符, 实际会以图像嵌入作为输入.
2) 多模态表征构造流程
基础表征方法的构造流程如下:
Step1: 使用Vision Encoder 将原始图片处理成视觉特征 Step2: 使用一个连接器将映射到LLM的词向量空间,得到视觉嵌入, 即, 其中为视觉嵌入的长度, 为LLM词向量空间的维度 Step3: 对于笔记压缩提示文本, 先基于分词器Tokenizer做分词, 再得到对应的文本词嵌入, 其中为文本Token的长度 Step4: 使用图像视觉嵌入, 直接替换掉上述文本词嵌入中<IMG>这个Token所对应的Embedding, 从而得到, 作为笔记多模态压缩提示表征。 Step5: 使用LLM以上述多模态压缩提示表征作为输入, , 并取最后一个Embed作为笔记的多模态表征
3) 训练过程
和NoteLLM一样, 使用Batch内对比学习计算Loss
其中, 表示BatchSize, 由于输入的是pair对笔记, 因此总共有个笔记, 为温度系数, 这里使用余弦相似计算相似度。这里, 作者仅更新连接器, 以及这两部分的参数,预训练的视觉Encoder是冻结住的。
2.2 关于基础多模态表征方法的实验
数据集及实验设置部分跳过介绍, 直接看实验结果。
2.2.1 Zero-shot实验
下图为Zero-shot实验, 实验中, 各大语言模型的表现都远不及BM25算法。这一结果表明, 还是非常有必要做fine tune的, 原因主要是各大语言模型的预训练任务与业务场景任务(作者用representation tasks来概述)还是有非常大的差异的。
2.2.2 End-to-End的MLRMs实验
作者训练了3种End-to-End的多模态大表征模型(MLRMs, 第2种方式), 即下图中红色框选部分
MTomato-Base: 基于LLM Tomato, 使用CLIP ViT-B作为视觉模块,以及随机初始化的Q-Former MQwen-Base: 将Tomato替换为Qwen-Chat MQwen-bigG: 用ViT-bigG替换原模型的视觉部分
用于对比的第1种方式多模态大语言模型(MLLMs)有BLIP-2和Qwen-VL-Chat.
实验结论主要有:
End-to-End训练微调的LLM效果远好于预训练的LLM, 可以对比Table1和Table10中的Qwen-Chat. End-to-End训练微调MLRMs引入多模态是有增益的, 可对比MQwen-Base与Qwen-Chat End-to-End训练微调MLRMs对视觉编码器大小敏感, 可以对比MQwen-bigG和MQwen-Base 与多模态大语言模型(MLLMs)有差距, 对比MQwen-bigG与Qwen-VL-Chat
同时, 作者也对多种模态输入进行了评估,结果如下图表格所示。对于仅图像输入, 可以发现, 模型性能明显下降(红色方框), 这说明, 当前基础MLRMs表征方法在视觉模态上是欠学习的, 不同模态之间可能有比较大的Bias。
2.2.3 实验性深入分析不同模态的Bias
为了分析验证当前基础MLRMs在视觉模态上有Bias的, 作者基于注意力得分, 给出了一种评估不同模态重要度(贡献)的方法, 有兴趣的可以看原论文, 这里对方法不做过多描述, 直接看实验结果
其中, 上图中的横坐标为表征模型中的不同层, 可以看作是视觉模态的贡献(或重要度), 可以看作是文本模态的贡献, 则是其它信息的贡献。
从上图中可以发现, 在网络的浅层, 像BLIP-2(以及Qwen-VL-Chat)基于MLLM的方法中, 和相对比较均衡, 但MTomato-Base、MQWen-Base以及MQwen-bigG, 它们都表现出低高的趋势。这说明视觉模态在End2End训练的MLRMs中起到的作用是远小于文本模态的作用的。
3. 方法
从前面的分析中, 可以发现, 视觉模型在End2End训练的MLRMs中是被低估的, 因此, 作者提出了NoteLLM-2框架, 其核心思想是使用多模态上下文学习(mICL)以及后融合(Late Fusion)来强化视觉模态的作用,下面分别介绍。
3.1 多模态上下文学习(mICL)
这里, 作者使用prompt将多模态内容显式地分成了"视觉内容"和"文本内容", 其prompt模板如下:
其中, <IMG_EMB>是一个特殊的token. 可以看出, 该提示模板先后做了两个事情, 首先是将视觉内容进行压缩, 取<IMG_EMB>前的隐层状态作为笔记的视觉模态表征, 再把prompt最后一个隐层状态作为笔记的多模态表征。
这里需要意识到, 其实只是一个中间产物, 最终使用时, 只使用, 但是在训练时, 还是要让也被充分训练, 这样才能获得更好的多模态表征。
3.2 后融合(Late Fusion)
后融合机制其实是为了进一步强化视觉模态的作用, 直接将原始的视觉模态表征融入到上面mICL的两种表征上。具体地:
首先, 基于原始的视觉模态表征和上面mICL出来的笔记视觉模态表征, 使用MLP来计算一个融合权重系数:
再基于这个融合系数, 得到融合后的视觉模态表征
同样, 类似地, 对于前面mICL出来的多模态表征, 也做类似的操作:
进而得到融合后的笔记多模态表征
3.3 基于对比学习训练
在得到前面两个融合后的和之后, 可使用对比学习进行训练。
融合后的视觉模态表征
融合后的多模态表征
最后的Loss部分使用超参将两者进行融合:
待训练充分后, 会作为最终的多模态笔记表征来使用。
4. 实验部分
4.1 与Baseline的对比
验证了所提的mICL和late fusion都能显著提升实验效果.
4.2 不同模态重要性分析
验证了NoteLLM-2能显著改善在网络浅层视觉模态被严重低估的缺点
4.3 超参实验
备注:进群,进入大模型技术群
id:baobaogpt,记得备注呦