论文地址:https://arxiv.org/abs/2011.14670
论文代码:https://github.com/bismex/MetaBIN.
预备知识:meta-learning[李宏毅老师的讲解笔记]
BN(batch normalization)
:图像增强方法,相对于IN来说是增强了不同域间的差异
IN( instance normalization)
:DG(Domain generation)中常用的方法,用来消除域之间的风格差异
我们可以从描述中看出BN与IN是对立的存在,单独使用BN与IN会分别带来Under-style-normalization以及Over-style-normalization问题如下图所示:
从图中我们看出BN过度分离了domain A 与 domain B ,而IN则使domain A 与 domain B 靠的太近了,但是我们如果能很好的结合BN以及IN,就会很好避免上述的两种问题。这便是我们此篇论文需要讨论的问题,为此此篇论文提出了一个新的方法,我们叫做MetaBIN(Meta Batch-Instance Normalization)。
MetaBIN的核心思想就是利用meta-learning的思想,模拟下图过程
通过对BN与IN的相互偏移,达到一个适中的效果。
其中下标B和I表示关于BN和IN的变量,x是经过标准化后的结果,γ, β是仿射变换参数。而
ρ使平衡BN和IN的参数(注意ρ是所有归一化层的每个通道的的平衡参数,这个参数是可学习的)
对与上述的这种使用可学习ρ会带来一个严重的问题就是它会过拟合源域风格,什么意思呢?就是说使用这种方式我们完全是按照源域的风格来平衡参数,并没有考虑不可见的未知域。
为了解决这个问题我们提出了我们的MetaBIN framework
论文的实现分为两部分,一个是Base model updates,另一个则是meta-learning部分。
我们先来看一下实现的过程中所需要的参数,为了清晰方便我贴上原文:
在此阶段我们更新了所有参数除了平衡参数θρ,因为这个参数是要在meta-learning进行更新的。在此过程中,首先我们从所有源域中聚集有标签的数据并从中取样一个小batch XB。在此过程中,我们使用了两个损失函数。
首先我们使用了交叉熵损失:
NB表示从batchXB中的采样数量。
除此之外我们使用了label-smoothing 的方法,因为我们有太多的数据,使用label-smoothing能有效的帮助我们避免过拟合。
其次我们使用了三元组损失:
参数详情:
三元组损失能更好拉近类内距离,和提高类间的分离性。
首先我们在每代随机将源域D分为meta-train domains Dmtr 和 meta-test domains Dmte 。这种分离是为了模拟真实的训练测试域转移,以提高我们标准化层的泛化能力。
我们注意这里所描述的过程
1.通过meta-train loss 来 inner-update 平衡参数 θρ
2.利用meta-test domain 来 validate 步骤一更新后的模型,并通过meta-test loss 更新 model。
为了解决f over-style-normalization,我们提出增强域内多样性,打乱域间分布。
intra-domain scatter loss:
参数详情:
这里说的domains其实就是我们李宏毅老师课程学的tasks。
除此之外我们还提出了:
inter-domain shuffle loss:
这个损失拉近了域间负样本的距离和推开域内负样本的距离。
同时为了进一步解决under-style-normalization我们又引入了三元组损失
所以总的损失为:
这样我们就是实现了1步骤中inner-update平衡参数的过程: