Adversarial Self-Supervised Contrastive Learning

文章目录

    • 主要内容
      • Linear Part
    • 代码

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} xX为样本, t ∈ T t \in \mathcal{T} tT为一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})=logzposexp(zTzpos/τ)+znegexp(zTzneg/τ)zposexp(zTzpos/τ).

Linear Part

因为自监督只是单纯提取了特征, 一般用于下游的分类任务需要再训练一个线性分类器, 很自然的, 作者选择在训练下游分类器的时候同样使用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)=argcYmaxEtT(lc(f(t(x)))=c),
一般的随机光滑是对样本随机加噪声, 这里的随机光滑是随机选择augmentation, 这倒是很让人眼前一亮.

代码

原文代码

你可能感兴趣的:(neural,networks)