订阅
纠错
加入自媒体

码隆科技提出跨越时空的样本配对,解决深度度量学习痛点

2020-07-16 09:48
将门创投
关注

三、方法梗概

我们发现,虽然在训练的前 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 的前向计算的结果,计算资源的需求很小。

<上一页  1  2  3  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

人工智能 猎头职位 更多
扫码关注公众号
OFweek人工智能网
获取更多精彩内容
文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号