1. 前言
受限于训练的计算成本&推理时的时延约束, 工业界多模态推荐普遍采用两阶段级联范式:
-
首先预训练多模态大模型,为下游服务提供统一的多模态表征
-
然后以多模态表征作为下游推荐模型额外的信息输入去辅助学习真实的User-Item协同交互
这种两阶段的级联范式能取得一些效果提升, 但还是存在着一些缺点:
-
表征不匹配问题: 预训练的多模态模型是以NLP/CV任务监督学习, 如图像文本匹配的自监督任务, 而推荐模型是ID特征主导的, 由真实的User-Item交互数据来驱动学习, 这就导致两类任务目标相对独立, 缺乏一致的目标。
-
表征不更新问题: 生成的多模态表征是静态的, 总是存储在缓存中, 作为推荐模型的额外固定输入, 无法通过推荐模型梯度更新, 这对下游任务训练更加不友好。
为了缓解这两个问题, 快手提出了量化对齐的多模态推荐方法(Quantitative Alignment Multi-Modal Recommendation,简称QARM), 下面详细介绍。
2. 方法
QARM的整体框架如下图所示, 通过两个机制来缓解上述问题:
-
Item对齐机制(Item Alignment): 对多模态模型使用下游推荐的交互数据进行微调, 以使多模态表征更适配推荐场景真实的User-Item交互行为分布
-
量化编码机制(Quantitative Code): 将对齐的多模态表征转换为可训练的语义ID(本文指量化编码), 以更适配下游任务。
2.1 Item对齐机制
对于多模态表征不匹配问题, 一种常见的方法是使用对比学习去拉近多模态表征与Item ID表征的距离, 但这种对比损失很弱, 且容易过拟合, 比如多模态表征的Lable只有其对应的ID Embed。
因此, 近年来, 其实业界广泛所采用的一个思路是: 使用推荐任务自己的数据来微调多模态模型, 比如小红书NoteLLM《[WWW’24 | 小红书NoteLLM: 大语言模型用于I2I笔记推荐]》构造了共现笔记来学习笔记Embedding, 又比如淘宝MAKE《[CIKM’24 | 淘宝: 多模态表征在广告CTR预估上的新突破]》收集了搜索场景的正负样本去微调多模态模型, 以使学习到的多模态表征能够更适配下游推荐任务。
快手这里Item对齐的思路也是类似的, 通过构造生成高质量的Item2Item的Pair对(Trigger Item, Target Item)数据集来做微调。具体地, pair样本构造有两种方式:
-
基于U2I召回模型: 对于每个用户正向点击的目标Item,从最近的50个点击Item中选择与目标Item在ID表征空间中最相似的Item作为触发Item
-
基于I2I召回模型: 利用现有模型学习到的具有高相似度的稳定Item Pair对作为数据源, 比如Swing召回
在生成高质量的Item Pair对数据集后, 训练一个纯多模态表征的Item对齐模型:
其中, /为Batch内的多模态表征, 而表示各种模态输入。
然后在Batch 内优化Item对齐损失,鼓励多模态模型表征适配推荐下游任务的协同信号
2.2 量化编码
2.2.1 动机
在得到基于下游任务微调后的多模态表征后, 最简单的方法是使用这个固定的表征作为输入,直接给到下游推荐模型中, 但这种表征不更新的特征输入对下游推荐任务并不友好。
对于这个问题, 业界一种最直接&广泛应用的trick, 是使用多模态表征来构造语义相似Item的ID list, 然后以ID List作为该item的语义特征输入到推荐模型, 一定程度上间接规避了多模态表征不更新的问题。
本文作者是把这类思路做的更极致了, 首先是将多模态表征量化压缩成语义ID, 再将语义ID输入到推荐模型中。这种方式的好处有两个:
-
量化压缩后的语义ID一定程度上保留了原始多模态表征的语义信息
-
和推荐模型其它ID Embed一样, 输入的语义ID的embedding是可学习的。
下面介绍作者使用的两种量化机制。
2.2.2 向量量化机制(Vector-Quantized, 简称VQ)
Vector-Quantized是最常使用的量化方法, 它首先训练一个大规模的编码表(codebook matrix),然后利用top-k最近邻搜索来哈希表示。
这里, 作者没有重新训练编码表, 而是直接将所有Item的多模型表征直接作为codebook matrix, 这样, 向量量化机制其实就等价于从全表查找最近邻的top-k的item的索引, 再把这些索引作为VQ Code
这种方式, 其实就是前面提到的trick了, 就是对应的向量量化编码。
2.2.3 残差量化机制(Residual-Quantized, 简称RQ)
与向量量化使用一个大的编码表方式不同, 残差量化会使用固定大小的层编码表, 比如下图中就有3层的codebook。
1) 残差量化编码表的构造
层的编码表通过递归方式得到。具体地, 每一层使用Kmeans算法对Item表征集合做聚类, 得到个聚类中心, 然后每个Item都减去最近邻的聚类中心后得到新的Item表征集合。形式化描述如下:
2) 获取残差量化编码
在得到个codebook 之后, 每个Item的多模态表征都可以做量化。逐层地基于当前的残差表征从对应的codebook中查找最近邻的聚类中心的下标作为code id, 如上图的示例中, 依次的code id为(3, 4, 1, …)。这里的过程形式化描述如下:
这样, 得到的()即为对应的残差量化编码了。
2.3 QARM的使用
在得到量化编码后(即和), 接下来就是在推荐模型中使用这些量化编码特征, 主要包括:
-
Item侧特征: 特征, 即直接将它们当作ID特征来使用
-
User侧特征: 得到最新用户正向交互的Item序列,并取出对应的量化编码, 作为模型输入的一部分
-
Target item感知特征: 使用目标Item的量化编码搜索多个Item序列作为目标Item感知的交叉特征,
汇总起来就是:
然后, 再使用多任务学习框架进行训练&预测
每个任务使用交叉熵损失:
2.4 系统部署
系统部署如下图所示
3. 实验部分
3.1 整体效果
验证所提方法各模型的有效性
3.2 线上ab实验
线上有不错的收益, 特别是冷启场景。
3.3 Item分组实验
在长尾Item上表现出色
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。