Adversarial Self-Supervised Contrastive Learning

Kim M., Tack J. & Hwang S. Adversarial Self-Supervised Contrastive Learning. In Advances in Neural Information Processing Systems, 2020.

这篇文章提出了对比学习结合adversarial training的一个思路.

主要内容

对比学习的强大之处在于正负样本对的构造, 一个结合adversarial training的很自然的思路是, 将普通样本与其相对应的对抗样本作为一组正样本对. 令(x in mathcal{X})为样本, (t in mathcal{T})为一augmentation, 则((x, t(x)))便构成了一正样本对, 再假设有一组负样本({x_{neg}}), 则

[mathcal{L}_{con} (x, t(x), {x_{neg}}) = -log frac{exp (z^T z_{pos}/ au)}{exp (z^T z_{pos}/ au)+sum_{z_{neg}}exp(z^Tz_{neg}/ au)}, ]

其中(z)是经过标准化的特征, ( au)是temperature. 很自然的, 我们可以通过上面的损失构造(x)的对抗样本(x_{adv}):

[x_{adv} := prod_{B(x;epsilon)} (x+alpha cdot mathrm{sign} ( abla_{x_{adv}} mathcal{L}_{con}(x, x_{adv}, {x_{neg}})). ]

稍有不同的是, 作者实际采用的是利用(mathcal{L}_{con}(t(x), t'(x), {x_{neg}}))来构建对抗样本, 最后的用于训练的损失是

[mathcal{L}_{RoCL} := mathcal{L}_{con}(t(x), {t'(x), t(x)_{adv}}, {t(x)_{neg}}) \ mathcal{L}_{total}:= mathcal{L}_{RoCL} + lambda mathcal{L}_{con}(t(x)^{adv},t'(x), {t(x)_{neg}}), ]

多的项即希望对抗样本和其他样本区别开来.

注:

[mathcal{L}_{con} (x, {t(x), t'(x)}, {x_{neg}}) = -log frac{sum_{z_{pos}}exp (z^T z_{pos}/ au)}{sum_{z_{pos}}exp (z^T z_{pos}/ au)+sum_{z_{neg}}exp(z^Tz_{neg}/ au)}. ]

Linear Part

因为自监督只是单纯提取了特征, 一般用于下游的分类任务需要再训练一个线性分类器, 很自然的, 作者选择在训练下游分类器的时候同样使用adversarial training:

[arg min_{psi} mathbb{E}_{(x, y) sim mathbb{D}} [max_{delta in B(x, epsilon)} mathcal{L}_{ce}(psi, x+delta,y)] , ]

其中(psi)为线性分类器(l(cdot))的的参数.

另外, 作者还融合的随机光滑的技巧, 即在估计的时候

[S(x) = arg max_{c in Y} mathbb{E}_{t in mathcal{T}} (l_c(f(t(x)))=c), ]

一般的随机光滑是对样本随机加噪声, 这里的随机光滑是随机选择augmentation, 这倒是很让人眼前一亮.

代码

原文代码

原文地址:https://www.cnblogs.com/MTandHJ/p/13905157.html