虾皮图搜
虾皮图搜
方法
- query:纯图片,编码为 embedding
- item:召回项目,图片和对应文本单独 embedding,然后将两个 embedding 融合为一个 embedding
模型结构
- 图像编码器:Swin Transformer
- 文本编码器:Bert
- 模态融合模块:6 层 merge attention(论文说比 cross-attention 好)
交叉注意力机制适用于排序任务,但合并注意力机制可以更好地保留两种模态的信息,从而提高模态融合中的召回率
- 投影层:单层线性层,对于图像编码器投影(query),块级嵌入的平均值用作输入;对于融合编码器投影(item),[CLS] 标记的嵌入用作输入,从而生成最终的128维特征。
- 损失 AM-InfoNCE:原创损失,添加了两个超参数 γ 和 m,通过最小化类内方差和最大化类间方差来优化角度空间中的决策边界。γ 控制对数函数的整体大小,而 m 控制类间边界。
训练步骤
第一阶段:训练图文 embedding 模型
这一阶段融合模块不参与训练,对 query 和 text embedding 进行对齐,使用 AM-InfoNCE 损失
第二阶段:训练融合模块
Classbased sampling and Cross Batch Memory (XBM) (Wang et al. 2020)用于挖掘难负样本
XBM 是一种记忆过去迭代嵌入的机制,从而使模型能够在多个批次中收集足够的困难负样本对。通过将当前批次中的每个锚点与最近小批次中最近的嵌入连接起来,XBM 提供了大量的困难负样本。尽管 XBM 可以有效地挖掘困难负样本,但它仍然受到小批次训练的限制 (Wang et al. 2020)。
采用模态融合损失:
最终损失:
第三阶段:微调图像融合模块
在此过程中,步骤 2 中使用的损失函数和训练技术将保持不变。为了便于批量训练和推理,我们将商品图像数量固定为 K (K > 1)。
对于图像数量低于 K 的商品,我们会提供空图像以达到所需的 K 数量。相反,对于图像数量超过 K 的商品,我们会截断图像以匹配固定数量 K。
虾皮图搜
https://guokent.github.io/papernotes/shopee/