Kim M., Tack J. & Hwang S. Adversarial Self-Supervised Contrastive Learning. In Advances in Neural Information Processing Systems, 2020.
这篇文章提出了对比学习结合adversarial training的一个思路.
对比学习的强大之处在于正负样本对的构造, 一个结合adversarial training的很自然的思路是, 将普通样本与其相对应的对抗样本作为一组正样本对. 令 x ∈ X x \in \mathcal{X} x∈X为样本, t ∈ T t \in \mathcal{T} t∈T为一augmentation, 则 ( x , t ( x ) ) (x, t(x)) (x,t(x))便构成了一正样本对, 再假设有一组负样本 { x n e g } \{x_{neg}\} {xneg}, 则
L c o n ( x , t ( x ) , { x n e g } ) = − log exp ( z T z p o s / τ ) exp ( z T z p o s / τ ) + ∑ z n e g exp ( z T z n e g / τ ) , \mathcal{L}_{con} (x, t(x), \{x_{neg}\}) = -\log \frac{\exp (z^T z_{pos}/\tau)}{\exp (z^T z_{pos}/\tau)+\sum_{z_{neg}}\exp(z^Tz_{neg}/\tau)}, Lcon(x,t(x),{xneg})=−logexp(zTzpos/τ)+∑znegexp(zTzneg/τ)exp(zTzpos/τ),
其中 z z z是经过标准化的特征, τ \tau τ是temperature. 很自然的, 我们可以通过上面的损失构造 x x x的对抗样本 x a d v x_{adv} xadv:
x a d v : = ∏ B ( x ; ϵ ) ( x + α ⋅ s i g n ( ∇ x a d v L c o n ( x , x a d v , { x n e g } ) ) . x_{adv} := \prod_{B(x;\epsilon)} (x+\alpha \cdot \mathrm{sign} (\nabla_{x_{adv}} \mathcal{L}_{con}(x, x_{adv}, \{x_{neg}\})). xadv:=B(x;ϵ)∏(x+α⋅sign(∇xadvLcon(x,xadv,{xneg})).
稍有不同的是, 作者实际采用的是利用 L c o n ( t ( x ) , t ′ ( x ) , { x n e g } ) \mathcal{L}_{con}(t(x), t'(x), \{x_{neg}\}) Lcon(t(x),t′(x),{xneg})来构建对抗样本, 最后的用于训练的损失是
L R o C L : = L c o n ( t ( x ) , { t ′ ( x ) , t ( x ) a d v } , { t ( x ) n e g } ) L t o t a l : = L R o C L + λ L c o n ( t ( x ) a d v , t ′ ( x ) , { t ( x ) n e g } ) , \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}\}), LRoCL:=Lcon(t(x),{t′(x),t(x)adv},{t(x)neg})Ltotal:=LRoCL+λLcon(t(x)adv,t′(x),{t(x)neg}),
多的项即希望对抗样本和其他样本区别开来.
注:
L c o n ( x , { t ( x ) , t ′ ( x ) } , { x n e g } ) = − log ∑ z p o s exp ( z T z p o s / τ ) ∑ z p o s exp ( z T z p o s / τ ) + ∑ z n e g exp ( z T z n e g / τ ) . \mathcal{L}_{con} (x, \{t(x), t'(x)\}, \{x_{neg}\}) = -\log \frac{\sum_{z_{pos}}\exp (z^T z_{pos}/\tau)}{\sum_{z_{pos}}\exp (z^T z_{pos}/\tau)+\sum_{z_{neg}}\exp(z^Tz_{neg}/\tau)}. Lcon(x,{t(x),t′(x)},{xneg})=−log∑zposexp(zTzpos/τ)+∑znegexp(zTzneg/τ)∑zposexp(zTzpos/τ).
因为自监督只是单纯提取了特征, 一般用于下游的分类任务需要再训练一个线性分类器, 很自然的, 作者选择在训练下游分类器的时候同样使用adversarial training:
arg min ψ E ( x , y ) ∼ D [ max δ ∈ B ( x , ϵ ) L c e ( ψ , x + δ , y ) ] , \arg \min_{\psi} \mathbb{E}_{(x, y) \sim \mathbb{D}} [\max_{\delta \in B(x, \epsilon)} \mathcal{L}_{ce}(\psi, x+\delta,y)] , argψminE(x,y)∼D[δ∈B(x,ϵ)maxLce(ψ,x+δ,y)],
其中 ψ \psi ψ为线性分类器 l ( ⋅ ) l(\cdot) l(⋅)的的参数.
另外, 作者还融合的随机光滑的技巧, 即在估计的时候
S ( x ) = arg max c ∈ Y E t ∈ T ( l c ( f ( t ( x ) ) ) = c ) , S(x) = \arg \max_{c \in Y} \mathbb{E}_{t \in \mathcal{T}} (l_c(f(t(x)))=c), S(x)=argc∈YmaxEt∈T(lc(f(t(x)))=c),
一般的随机光滑是对样本随机加噪声, 这里的随机光滑是随机选择augmentation, 这倒是很让人眼前一亮.
原文代码