超大规模分类(五):拍立淘图搜多模态解决方案
拍立淘是阿里巴巴集团的一款图像搜索服务,日均访客量突破5000万,算得上是国内头部的图像搜索应用了。
2021年,多模态成为学术界、工业界的研究前沿热点。通过比对用户上传实拍图与商品库内的多模态商品信息,基于大规模多模态分类技术,将核心召回和相关性向量表征等模块由单模态升级到多模态,同款率绝对值显著提升了12个百分点。
今天,我们就来一睹拍立淘多模态解决方案——大规模多模态分类技术。
论文链接:Category-Oriented Representation Learning for Image to Multi-Modal Retrieval (arxiv.org))
作者比较多,我们来看看:
- Zida Cheng:
- Chen Ju:Chen Ju (鞠陈) - Homepage (voide1220.github.io)
- Shuai Xiao:Shuai Xiao’s Homepage (google.com)
- Xu Chen:
- Zhonghua Zhai:
- Xiaoyi Zeng:曾晓一_百度百科 (baidu.com)
- Weilin Huang:Weilin Huang (whuang.org)
- Junchi Yan:SJTU-ReThinkLab 上海交通大学交想实验室
阵容比较豪华
创新点
该论文想做的事情是电商领域的图搜,即用户上传实拍图,在商品库里检索相关的商品。商品包含图像和标题等图文信息,是典型的多模态数据,所以本文将上述任务建模成“图像到多模态的检索(image-to-multi-modal-retrieval,IMMR)”
实际工业场景存在如下问题:
- 数据倾斜及噪声:电商场景中,一般通过用户日志来构造训练数据。而用户日志存在数据倾斜问题。用户日志量和商品曝光量一般呈正相关,大部分商品曝光量不高,导致用户日志难以刻画量级更多的中、低曝光商品。另外,用户日志描述用户行为,用户行为存在随机性,所以肯定有噪声。
- 难以同时建模实拍图和商品图文信息:常见的跨模态检索方法仅考虑单一模态,例如图像检索文本,或者文本检索图像,忽视图像检索图文。另外,如何做图文融合也是一大难点,电商图搜场景,图像的信息更丰富,需要在图文融合时,维持丰富的图像信息。
- 难以高效实现大规模训练:电商场景,数据规模非常大,实际商品量可能有几十亿,图像数百亿,商品类别有千万、亿的规模,怎么做高效训练?
该论文对上述问题做了解答:
- 不仅利用日志信息,也利用商品内多图信息,非监督聚类等方式,构建训练数据。
- 设计双塔模型,query塔建模实拍图信息,doc塔建模商品多模态信息,通过类别约束,训练双塔模型。
- 为实现千万乃至亿的大规模分类,采用partial fc +knn softmax的训练方式。
图像到多模态的检索(IMMR)本质是学习到query图到doc图文多模态的表征,再计算表征相似度来实现。问题在于如何训练query图表征和doc图文多模态表征。
数据构建
原始数据构建策略为:用户上传一张query图,拍立淘系统会返回商品列表,列表中被用户点击的商品(图文多模态信息)将作为正样本,未被点击的商品(图文多模态信息)将作为负样本,如下图所示:
这个方法问题比较多,
- 数据倾斜问题:拍立淘系统返回的商品列表会参考商品的是否为热品来给出,用于促进转化率;另一方面,用户也会参考商品的销量等信息来决定是否点击。这样会导致热品的点击数据天然更多。
- 数据噪声问题:在拍立淘系统返回的商品列表中,用户是否点击这个商品,存在一定的随机性。可能用户点击的商品和上传的query图一点都不像。
这种数据构建方法应该遍布于互联网的各个角落,包括推荐、搜索、广告等各个场景。所以,长尾问题是互联网行业需要解决的重点问题。
最新方法怎么做的呢:
- 确定分类的度量学习范式:原始方法一般采用对比损失、三元组损失来优化表征;新方法采用分类学习来优化表征。本质上,区别不大,但是分类学习一般收敛更快。
- doc图文数据中,将单个商品内的多个图文对样本放到同一个类中。例如
,红框图 I 1 I_1 I1和标题 T T T构成一个图文多模态样本 < I 1 , T > <I_1, T> <I1,T>,绿框图 I 2 I_2 I2和标题 T T T构成一个图文多模态样本 < I 2 , T > <I_2, T> <I2,T>。这两个图文多模态样本放到一个类中。 - 通过用户行为,将query图和doc图文放到一个类中。
用户上传实拍图,在拍立淘系统返回的商品列表中,点击了某个商品,将商品图文样本和实拍图放到一个类中。 - 非监督聚类。单个类里有query图样本和doc图文样本,有来自query实拍图,也有doc商品图,内容杂乱。通过多种聚类方法(基于图像聚类),过滤掉类内的噪声样本,合并描述同一商品的异类类别。
基于上述处理逻辑,一般会得到类别数巨大的分类数据,紧接着,通过分类损失来优化。
模型架构
模型架构是一个典型的双塔模型,query塔处理用户实拍图,doc塔处理商品图文。
在query塔,需要处理用户上传的实拍图。通过image encoder、Gloval Avg Pooling以及FC+BN处理,得到图像表征。
在doc塔,需要处理商品的图像和文本。
- 对于商品图像:由于商品图和用户上传实拍图存在domain gap,用的image encoder和query塔用的参数不共享。
- 对于商品文本:首先采用text encoder提取文本表征,再利用external attention重点关注文本中的风格、颜色等属性词。
- 对于图文融合:利用典型的qkv的attention结构,q是文本表征,kv分别是图像表征,相当于用图像表征来重建文本表征,得到融合的图文表征。由于v是图像表征,doc塔中图像表征更重要。
在损失函数层面,query塔输出query图像特征以及类别标签,doc塔输出doc图文特征以及类别标签,均通过分类损失函数进行训练。上图中的margin、proxy vector、ID Center是分类损失中参数、类别中心和类别标签。
高效训练
训练策略较成熟,有:
- 全连接层分类器之前,对该部分做数据并行
- 全连接层分类器因类别数过大,占用显存多,对该部分做模型并行
- 为进一步优化全连接层分类器的训练效率,通过knn softmax,拒绝全量更新负类别中心,而是选择和正类别中心最相似的10%负类别中心,更新这些负类别中心。
前两个策略为partial fc,最后一个策略为knn softmax。
最终效果
数据集
AliProduct是从阿里电商平台收集的大规模细粒度商品数据集,包含服装、化妆品、食品、玩具等多个类目。总体而言,训练集包括1200万商品,11亿图片和1200万文本;验证集有24万正负样本对;测试集有1500个query,每个query有100个候选商品,query到候选商品间存在是否匹配的标签。
Taobao Live指自淘宝直播的多模态数据集,名为Watch and Buy(WAB)。直播过程中,主播展示衣服(直播中的图为query),该衣服会被关联到具体商品(关联到的商品为doc)。对于每张直播图和关联上的商品数据,通过打标签,来获得高质量数据。数据集规模包含1,042,178张图像,70%用于训练,10%用于评估,20%用于测试。
实验结果
在AliProduct和Taobao Live数据集上,分别和其他方法进行比较。
有以下观察:
- 本文提出方法效果最好(没有和siglip做比较哦!!! siglip也是同期工作)
- Ours-I表示模型中doc塔仅用图像,效果下降明显,表明doc侧的文本信息非常重要。
- Ours-E表示模型中doc塔图文表征的获取方式是对图像表征和文本表征取平均,效果不好。表明本文提出的特征融合策略比较重要。
生产环境实验结果
将本文的方法用于实际拍立淘系统中,做A/B实验,和base模型相比,提升非常显著。
base模型指的是
- 数据:仅通过用户日志获取三元组训练数据,即用户上传一张query图,拍立淘系统会返回商品列表,列表中被用户点击的商品(图文多模态信息)将作为正样本,未被点击的商品(图文多模态信息)将作为负样本
- 模型:结构和本文一致,但doc塔图文表征的获取方式是对图像表征和文本表征取平均
- 损失:三元组损失,而非分类损失
整体实验包括线下评测和线上评测。
线下评测有Identical/Relavance。用户上传实拍图,拍立淘系统返回的商品列表,人工为商品列表中每个商品打上identical/relevant/irrelevant标签,表示该商品和用户上传实拍图商品的三个关系——同款、相似款和不相关,分别统计三个关系的准确率。
线上评测有CTR(点击率),CVR(转换率),deal number(成交数量)
总结
本文是典型的工业场景算法落地实践,具备一定的创新性,在业务上获得巨大提升。个人认为最大的创新点是数据侧突破了用户日志天然长尾噪声的限制,使得算法能够真实刻画实际数据分布,难能可贵。但整体模型、损失等方面,中规中矩,不过这也是工业界的特色。
上述工作最难的是抛弃原有实现逻辑(用户日志–>三元损失),开辟一条全新的实现策略(商品图文建类+用户日志+非监督聚类–>分类损失),需要有相信自己的眼光和坚持自己的勇气,不然,难以面对他人的质疑。