Contrastive Generative Adversarial Networks

文章目录

Kang M., Park J. Contrastive Generative Adversarial Networks. arXiv preprint arXiv 2006.12681, 2020.

如何将对比损失和GAN结合在一起呢?

主要内容

在这里插入图片描述

还是老问题, 结合对比学习就是如何构造正负样本的问题.

首先看图c, 本文ContraGAN提取特征的方式为 D ϕ 1 ( x ) D_{\phi_1}(x) Dϕ1(x), 这部分是判别器的encoder部分, 即除最后一个全连接层的部分. 之后再经过projection (h)(这个是从SimCLR中启发得来的东西)得到最后的用于计算对比损失的特征 l ( x ) = h ( G ϕ 1 ( x ) ) l(x)=h(G_{\phi_1}(x)) l(x)=h(Gϕ1(x)). 另一部分的特征是直接通过样本标签得来的, 通过一个class embedding (e), 获得对应的特征 e ( y ) e(y) e(y).
于是第一阶段的"对比损失"就出炉了
ℓ ( x i , y i ; τ ) = − log ⁡ exp ⁡ ( l ( x i ) T e ( y i ) / τ ) exp ⁡ ( l ( x i ) T e ( y i ) / τ ) + ∑ k ≠ i m exp ⁡ ( l ( x i ) T l ( x k ) / τ ) , (7) \tag{7} \ell(x_i,y_i;\tau) =-\log \frac{\exp(l(x_i)^Te(y_i)/\tau)}{\exp(l(x_i)^Te(y_i)/\tau)+ \sum_{k\not= i}^m \exp(l(x_i)^Tl(x_k)/\tau)}, (xi,yi;τ)=logexp(l(xi)Te(yi)/τ)+k=imexp(l(xi)Tl(xk)/τ)exp(l(xi)Te(yi)/τ),(7)
其中 x i , x k x_i, x_k xi,xk来自于一个batch的数据 { x 1 , … , x m } \{x_1, \ldots, x_m\} {x1,,xm}, τ \tau τ代表temperature. 此对比损失与SimCLR中的差别仅在正样本对上, SimCLR中构造正样本对是 l ( T ( x i ) ) l(\mathcal{T}(x_i)) l(T(xi)), l ( T ′ ( x i ) ) l(\mathcal{T}'(x_i)) l(T(xi)), 即通过augmentation来构造正样本对. 这里的话是通过标签来构造正样本对. 显然最小化(7)式需要使得 x i x_i xi的特征靠近 e ( y i ) e(y_i) e(yi), 以及不同样本特征远离彼此. 这就造成了一个问题, 实际上作者是希望同一类的样本的特征是靠近的, 但(7)是的分母部分是背离这一点的(虽然分子是符合这一点的), 为此, 作者又在分子上加了他们的cosine相似度:
ℓ 2 C ( x i , y i ; τ ) = − log ⁡ exp ⁡ ( l ( x i ) T e ( y i ) / τ ) + ∑ k = 1 m 1 y k = y i exp ⁡ ( l ( x i ) T l ( x k ) / τ ) exp ⁡ ( l ( x i ) T e ( y i ) / τ ) + ∑ k ≠ i m exp ⁡ ( l ( x i ) T l ( x k ) / τ ) . (8) \tag{8} \ell_{2C}(x_i,y_i;\tau) =-\log \frac{\exp(l(x_i)^Te(y_i)/\tau)+ \sum_{k=1}^m 1_{y_k=y_i} \exp(l(x_i)^Tl(x_k)/\tau)}{\exp(l(x_i)^Te(y_i)/\tau)+ \sum_{k\not= i}^m \exp(l(x_i)^Tl(x_k)/\tau)}. 2C(xi,yi;τ)=logexp(l(xi)Te(yi)/τ)+k=imexp(l(xi)Tl(xk)/τ)exp(l(xi)Te(yi)/τ)+k=1m1yk=yiexp(l(xi)Tl(xk)/τ).(8)

说白了, 这不就是彻彻底底的希望最大化类间距离, 最小化类内距离, 连类内中心都选好了( e ( y i ) e(y_i) e(yi), 虽然这个中心是可学习的).

作者说是这个idea受到一个互信息理论下界的启发, 但是我感觉没啥特别的意义, 这里就不贴了.

在这里插入图片描述

注: 总感觉没有体现出contrastive的特点, 从算法中可以看到, 计算训练损失, 真实的样本和伪造的样本是独立的. 但是仔细想想, 我们的目的不是训练一个好的生成器, 使其构造的图片和真实图片相近, 所以怎么也应该是真实图片和构造图片之间的对比. 当然, 困难在于我们不知道生成器所生成的图片所对应的真实的图片是怎样的, 不过我始终觉得这种处理方法没有发挥出contrastive的作用.

代码

作者整理了许多GAN模型.

原文代码

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值