C-Mixup: Improving Generalization in Regression
- 前言
- C-Mixup
- References
前言
Mixup方法是针对分类任务的, 这篇方法相当于时提出了regression版本的Mixup, 实验证实能够大幅提升在regression task上的泛化能力.
C-Mixup
是否可以把Mixup直接用于Regression task呢?
在原始的用于classification task的Mixup 中, 每次随机选择两个sample-label进行插值, 在回归任务中可以这样做吗? 答案是不可以, 作者举了如下的例子:
这是一个姿势预测任务,旨在预测对象相对于其规范方向的当前方向, 可以发现: mixup的随机采样产生三种混合样本的概率相等, 然而第2,3个pairs生成的sample的label实际上是没有意义的, 只有第1个pair产生的新样本是合理的 (pair1 中两个待查核自样本的label很接近), 此外利用input feature来计算距离发现pair1 和pair3的采样概率近似相等,这也是不合理的. 我们希望: pair 1产生的样本被采样的概率远大于其余两个.
看来随机选择样本进行插值不可取, 那么C-mixup时怎么做的?
给定样本
(
x
i
,
y
i
)
(x_{i}, y_{i})
(xi,yi), 首先基于label distance,采用正态核来计算其余样本被采样的概率,具体如下:
这样一来,对于每个样本
(
x
i
,
y
i
)
(x_{i}, y_{i})
(xi,yi), 都可以得到
{
P
(
(
x
j
,
y
j
)
∣
(
x
i
,
y
i
)
)
∣
∀
j
}
\{P((x_{j},y_{j}) | (x_{i},y_{i})) | \forall j\}
{P((xj,yj)∣(xi,yi))∣∀j}概率向量, 在进行归一化之后就得到概率分布, 然后按照这个概率分布进行采样.
到这里为止, C-mixup方法与Mixup不一样的地方已经讲完了. 插值的过程与Mixup完全一样, 如下:
利用插值后的样本训练模型也和Mixup一样, 如下:
C-mixup的伪代码如下:
方法部分已经讲完了, 对理论感兴趣的直接看原文就行.
注:此处C-mixup的C应该是continuous label的意思,
References
- C-Mixup: Improving Generalization in Regression, NeurIPS,2022.
- 官方代码链接, https://github.com/huaxiuyao/C-Mixup.