Sampling Matters in Deep Embdding Learning论文研究

深度嵌入学习中的采样策略
探讨在深度嵌入学习中,采样策略如何影响模型性能,对比contrast loss和triplet loss,提出distance weighted sampling及margin based loss,旨在提高模型的泛化能力和训练效率。
部署运行你感兴趣的模型镜像

声明:

  1. 论文链接Sampling Matters in Deep Embdding Learning

Sampling Matters in Deep Embdding Learning

  这是基于one-shot learning中的metric learning范畴做的研究。metric learning通过将样本对映射到嵌入空间,在嵌入空间中比较样本之间的相似性来进行分类。

主要创新点

  • 分析了metric learning的发展
  • 指出episode抽样的重要性,并提出有效的抽样方法
  • 分析contrast loss和triplet loss的特点并作出改进

episode解释: metric learning通过比较的方式进行训练,不同的网络模型的输入形式不同,可能是样本对、样本三元组或者样本集合,本文统一用episode表示metric learning中不同模型的输入。

Preliminaries

符号说明

符号意义
R N R^N RNN维样本空间
x i x_i xi样本
R D R^D RD嵌入空间
f ( x i ) f(x_i) f(xi) x i x_i xi的映射,映射函数用network表示
Θ \Theta Θ网络参数
∥ ⋅ ∥ \| \cdot\| 欧氏距离
y i j y_{ij} yiji与j同类, y i j y_{ij} yij=1,反之为0

contrast loss

L c o n t r a s t ( i , j ) : = y i j D i j 2 + ( 1 − y i j ) [ α − D i j ] + 2 L_{contrast} (i, j) :=y_{ij} D_{ij}^2 + (1-y_{ij})[\alpha - D_{ij}]_+^2 Lcontrast(i,j):=yijDij2+(1yij)[αDij]+2,其中 D i j : = ∥ f ( x i ) − f ( x j ) ∥ D_{ij}:=\|f(x_i) - f(x_j)\| Dij:=f(xi)f(xj)

contrast loss有两个缺点:

  • 不同类别的样本之间的 α \alpha α是固定的
  • 同类别的样本会聚集为一点,忽视了同类样本之间的多样性

triplet loss

L t r i p l e t ( a , p , n ) : = [ D a p 2 − D a n 2 + α ] + L_{triplet}(a, p, n):=[D_{ap}^2 - D_{an}^2 + \alpha]_+ Ltriplet(a,p,n):=[Dap2Dan2+α]+其中, a p ap ap表示同类样本(anchor和positive), a n an an表示异类样本(anchor和negative)。该损失迫使同类样本间的距离要小于异类样本间的距离。由于嵌入后的向量也是高维的,triplet loss能够容许嵌入向量在高维空间中有任意的形状。

采样方法

随机采样:
  一般来说,我们为了使损失最小,会训练网络使得contrast loss或triplet loss在所有样本对/三元组(pairs/triplets)中的和最小。
R ( ⋅ ) : = ∑ t ∈ a l l p a i r s / t r i p l e t s l ( ⋅ ) ( t ) R^{(\cdot) }:=\sum_{t\in {all pairs/triplets}} l^{(\cdot)} (t) R():=tallpairs/tripletsl()(t)在监督学习中,通常是计算一个batch的损失和。
hard negative采样方法:
  在metric learning中,无采样的方法是不可行的。以contrast loss对应的模型为例,该模型的输入是pairs,pairs的构成有两种可能:

  1. 同类样本(类别A与类别A),正例(positive pairs)
  2. 不同类样本(类别A与类别B),反例(negative pairs)

第二种情况下,类别A与类别B可能差距很大,容易分辨(甚至在原始空间中就分布很远),称之为easy negative;类别A与类别B也可能差距很小(这些pairs是影响模型学习的难点,也是提升预测准确率的关键),称之为hard negative。

上图中类别9在一开始就容易分辨,故不需要构造太多类别9与其他类别的pairs用于训练。

  对样本进行采样可以规避无效episode(这些episode对模型的训练作用甚微),增加对hard negative episodes的关注,意义如下:

  • 增加对hard negative episodes采样即增加了模型对它们的训练次数,相当于提高了这部分episodes的权重,类似于Adaboost。
  • 减少无用训练,加快模型收敛速度。

在contrast loss模型中已将启发式算法应用到episodes采样中——每次训练选择hard negative pairs,并取得了更好的效果。但这种方法用于triplet loss会导致collapsed model(模型崩坏,train loss将一直处于高水平不在下降)。hard negative的采样方式反映到刚刚的损失函数上就是: R ( ⋅ ) : = ∑ t ∈ h a r d n e g a t i v e p a i r s / t r i p l e t s l ( ⋅ ) ( t ) R^{(\cdot) }:=\sum_{t\in {\bf hard negative pairs/triplets}} l^{(\cdot)} (t) R():=thardnegativepairs/tripletsl()(t)

semi-hard negative mining:
  FaceNet这篇文章提出了semi-hard negative mining方法: n a p ∗ : = a r g m i n n : D ( a , n ) > D ( a , p ) D a n n_{ap}^* :=argmin_{n:D(a, n) > D(a, p)} D_{an} nap:=argminn:D(a,n)>D(a,p)Dan

semi-hard: hard but not too hard

详细介绍请参考我的另一篇博客[译]Tensorflow实现Triplet Loss

  简而言之,sampling matters。 它通过挑选样本(加权样本)的方式定义了一个启发式的损失函数。 启发式算法总是与当前问题和数据集强相关,难以推广。下面本文将做进一步分析,然后提出更有效更实用的采样方法。

Distance Weighted Margin-Based Loss

新的采样方法

对嵌入空间中样本间距离的分析:
  假设metric learning的嵌入空间是n维,则以该n维空间中任一样本为中心,其他样本到中心样本的距离为半径,可以获得一个超球面 S n − 1 S^{n-1} Sn1。其他样本到中心的距离的随机分布为(参考The sphere game in n dimensions.): q ( d ) ∝ d m − 2 [ 1 − 1 4 d 2 ] n − 3 2 q(d) \propto d^{m-2} [1-\frac 14 d^2]^{\frac {n-3}{2}} q(d)dm2[141d2]2n3

有上图可以看出,随着超球面维度n的增加,距离的分布趋近于正态分布—— N ( 2 , 1 2 n ) N(\sqrt2, \frac {1}{2n}) N(2 ,2n1)

噪声对hard negative episode的影响:
  以contrast loss为例,如果我们对pairs随机采样,那么它们的距离在 2 \sqrt2 2 左右。假设contrast loss的 α = 2 \alpha=\sqrt2 α=2 ,将有一半的pairs没有损失,即对模型的训练没有帮助。
hard negative:
  对于异类pairs t : = ( a , n ) t:=(a, n) t:=(a,n)或者triplet t : = a , p , n t:={a, p, n} t:=a,p,n,其损失对嵌入网络 f ( x n ) f(x_n) f(xn)的梯度为: ∂ f ( x n ) l ( ⋅ ) = h a n ∥ h a n ∥ w ( t ) \partial_{f(x_n)} l^{(\cdot)} = \frac {h_{an}}{\|h_{an}\|} w(t) f(xn)l()=hanhanw(t)其中 h a n : = f ( x a ) − f ( x n ) h_{an} :=f(x_a) - f(x_n) han:=f(xa)f(xn)。样本中总存在一些噪声 z z z,这些噪声会影响 h a n h_{an} han的取值,使其上下波动,特别是在 h a n h_{an} han较小时影响更大(而 h a n h_{an} han较小的样本使最需要重视的样本)。从下图可以看出:

  • 噪声越小( σ \sigma σ越小),梯度的协方差越小,即噪声对梯度的影响越小。
  • h a n h_{an} han越小(横坐标越小),梯度的协方差越大,即梯度越容易受到噪声的影响。注意:此时的样本正是hard negative episode。

不同的采样方法:

上图是不同的采样方法下,$h_{an}$的分布。
  • Uniform sampling即随机采样,根据前文对超球面的分析, h a n h_{an} han多集中在 2 \sqrt 2 2 左右。
  • Hard negative mining采样难以分辨的anchor sample和negative sample,其 h a n h_{an} han分布在靠近0值的地方,容易受到噪声的影响。
  • Semi-hard negative mining比上两个方法都要好。但却难以使网络收敛。因为在模型接近收敛之后,需要hard negative episode来进一步迫使它得到全局最优解,semi-hard negative mining取不到这些episode。
  • 本文提出Distance weighted sampling,能够在 h a n h_{an} han的距离尺度上均匀采样,兼顾以上多种采样方式的优点: P r ( n ∗ = n ∣ a ) ∝ m i n ( λ , q − 1 ( D a n ) ) Pr(n^* = n|a) \propto min(\lambda, q^{-1}(D_{an})) Pr(n=na)min(λ,q1(Dan))

在给定anchor的情况下,我们选择这样的negative sample:

  1. D a n D_{an} Dan(也就是 h a n h_{an} han)越小,采样它的概率越高
  2. λ \lambda λ为界,排除那些easiest negative episode( D a n D_{an} Dan特别特别大)和hardest negative( D a n D_{an} Dan特别特别小,这种样本原始概率就很小,即使乘上距离的倒数也不能咸鱼翻身)

作者认为:Distance weighted sampling offers a wide range of examples, and thus steadily produce informative examples while controlling the variance.

新的损失函数

损失函数概览

  其中,蓝线是正例(anchor和positive)的损失,绿线是反例(anchor和negative)的损失:

  • (a)contrast loss对所有样本对只有一个阈值 α \alpha α,不能应对样本的多样性。
  • (b)Triplet loss l 2 2 l_2^2 l22中的平方项使得loss函数是曲线,特别是在hard negative处(绿线接近0的地方)梯度为0,这必然会导致对hard negative episode的学习困难。
  • ( c) Triplet loss l 2 l_2 l2避免了(b)中的梯度问题

更进一步,本文提出了更好的损失函数。

Margin based loss

l m a r g i n ( i , j ) : = ( α + y i j ( D i j − β ) ) − l^{margin}(i, j):=(\alpha + y_{ij} (D_{ij} - \beta))_- lmargin(i,j):=(α+yij(Dijβ))其中, β \beta β D a n D_{an} Dan D a p D_{ap} Dap之间的边界, α \alpha α是hardest D a n D_{an} Dan D a p D_{ap} Dap到边界的距离,就像是SVC一样。

   β \beta β足够灵活,与当前类别(class)和当前样本(image)有关: β ( i ) : = β ( 0 ) + β c ( i ) ( c l a s s ) + β i ( i m g ) \beta(i):=\beta^{(0)} + \beta_{c(i)}^{(class)} + \beta_i^{(img)} β(i):=β(0)+βc(i)(class)+βi(img) β \beta β不仅是一个trainable variable,同时也作为损失函数的正则项: m i n i m i z e ∑ ( i , j ) l ( m a r g i n ) ( i , j ) + v β ( i ) minimize \sum_{(i, j)}l^{(margin)} (i, j) + v\beta (i) minimize(i,j)l(margin)(i,j)+vβ(i)

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### 对比能量预测在离线强化学习中的应用 对比能量预测(Contrastive Energy Prediction, CEP)是一种用于改进离线强化学习中策略优化的技术。它通过引入一种新的能量函数来指导扩散采样过程,从而提高样本效率和策略性能[^1]。 #### 能量引导扩散采样的核心概念 在离线强化学习中,数据集通常是固定的,无法通过与环境交互获取新数据。因此,如何高效利用已有数据成为关键挑战之一。CEP 方法的核心在于设计了一种基于对比学习的能量模型,该模型能够评估状态-动作对的质量并生成高质量的动作分布。 具体而言,精确能量引导扩散采样(Exact Energy-Guided Diffusion Sampling)旨在通过对动作空间进行连续调整,使得最终采样到的动作更接近最优解。这一过程依赖于一个精心设计的能量函数,其作用类似于传统强化学习中的奖励信号,但更加灵活且适用于静态数据集场景。 以下是实现此方法的一个简化伪代码示例: ```python def contrastive_energy_prediction(state, action_candidates): # 计算每个候选动作的能量值 energies = compute_energies(state, action_candidates) # 使用对比损失训练能量模型 loss = contrastive_loss(energies, positive_action_index) optimize(loss) return energies def exact_energy_guided_diffusion_sampling(state, initial_distribution): current_sample = initial_distribution for t in range(diffusion_steps): noise_level = schedule_noise(t) # 更新当前样本以降低能量 gradient = estimate_gradient(current_sample, state, noise_level) current_sample -= step_size * gradient return current_sample ``` 上述代码展示了两个主要部分:一是 `contrastive_energy_prediction` 函数负责计算给定状态下不同动作的能量;二是 `exact_energy_guided_diffusion_sampling` 实现了一个逐步减少噪声的过程,在每一步都尝试使样本向低能量区域移动。 #### 技术优势 相比传统的离线强化学习算法,CEP 和精确能量引导扩散采样具有以下几个显著优点: - **更高的样本利用率**:由于采用了精细调优的扩散机制,即使面对有限的数据也能有效提取有用信息。 - **更强泛化能力**:通过构建通用型能量函数而非特定参数化的策略网络,可以更好地适应未见过的状态输入。 - **易于扩展至复杂环境**:这种方法天然支持高维连续控制任务,并且理论上可推广到多种不同的领域问题上。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值