码隆科技提出跨越时空的样本配对,解决深度度量学习痛点
三、方法梗概
我们发现,虽然在训练的前 3K iterations,mini-batch 过去的提取特征与当前模型偏差很大,但是,随着训练时间的延长,过去的迭代里所提取过的特征,逐渐展示为当前模型的一个有效近似。我们要做的不过是把这些特征给存下来,每个特征不过是 128 个 float 的数组,即便我们存下了过去 100 个 mini-batch 的特征,不过是6400个(假设 batch size = 64)float 数组,所需要不过是几十 MB 的显存。而它带来的好处是显而易见的,我们能够组成的样本对的个数是仅仅利用当前 mini-batch 的一百倍。即便这些特征不能高精准地反映当前模型的信息,但是只要特征偏移在合理的范围内,这种数量上带来的好处,可以完全补足这种误差带来的副作用。 具体来看,我们的 XBM 的方法架构大致如下:
伪代码如下:
我们的 XBM 从结构上非常简单清晰。我们先训练一个 epoch 左右,等待特征偏移变小。然后,我们使用 XBM:一个特征队列去记忆过去 mini-batch 的特征,每次迭代都会把当前 mini-batch 提取出来的新鲜特征加入队列,并把最旧的特征踢出队列,从而保证 XBM 里的特征尽量是最新的。每次去构建样本队列的时候,我们将当前 mini-batch 和 XBM 里的所有特征都进行配对比较,从而形成了巨量的样本对。如果说 XBM 存储了过去 100 个 mini-batch,那么其所产生的样本对就是基于 mini-batch 方法的 100 倍。 不难发现,XBM 其实直接和过去基于样本对的方法结合,只需要把原来的 mini-batch 内的样本对换成当前 mini-batch 和 XBM 的特征构成的样本对就可以了。所以,我们通过 XBM 这种存储特征的机制,能够让不同时序的 mini-batch 的特征成功配对。
四、实 验
消融实验 ①
首先,我们在三个常用的检索数据集,和三个基于样本对的深度学习的方法上,使用 XBM 进行测试,同时控制其他的设置全部不变。我们发现,XBM 带来的效果很明显。尤其是在最基本的对比损失(Contrastive Loss)上,可以看到,本来这个方法只利用 mini-batch 内的样本时,其效果并不显著,但是 XBM 带来了显著的效果提升。在三个数据集, Recall@1 都至少提升 10 个点,尤其是 VehicleID 数据集的最大(Large)测试集,效果提升了 22 个点,从 70.0 到 92.5。
消融实验 ②
关于 mini-batch 的大小对结果的影响, 从上图可发现三点:1. 无论是否使用 XBM,mini-batch 越大,效果越好;2. XBM 方法即便是使用很小的 batch (16), 也比没有XBM 使用大的 batch (256) 效果好;3. 由于 XBM 本身可以提供正样本对,所以可以不一定要用 PK sampler 来生成 mini-batch,而是可以直接使用原始的 shuffle sampler,效果相似。
五、计算资源消耗
下图我们展示了在 SOP 上训练 XBM 时的计算资源消耗,即便把整个训练集(50K+)的特征都加载到 XBM,不过需要 0.2GB 的显存;而如果是使用增大 batch 的方法,会额外需要 15GB 显存,是 XBM 的 80 倍,但是效果的提升比 XBM 差很多。毕竟 XBM 仅仅需要存特征,特征也是直过去的 mini-batch 的前向计算的结果,计算资源的需求很小。
最新活动更多
-
11月28日立即报名>>> 2024工程师系列—工业电子技术在线会议
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
-
精彩回顾立即查看>> 2024 智能家居出海论坛
-
精彩回顾立即查看>> 【在线会议】多物理场仿真助跑新能源汽车
推荐专题
-
10 中国AI的“六便士”时刻
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论