Contrastive Generative Adversarial Networks
Kang M., Park J. Contrastive Generative Adversarial Networks. arXiv preprint arXiv 2006.12681, 2020.
概
如何将对比损失和GAN结合在一起呢?
主要内容

还是老问题, 结合对比学习就是如何构造正负样本的问题.
首先看图c, 本文ContraGAN提取特征的方式为\(D_{\phi_1}(x)\), 这部分是判别器的encoder部分, 即除最后一个全连接层的部分. 之后再经过projection (h)(这个是从SimCLR中启发得来的东西)得到最后的用于计算对比损失的特征\(l(x)=h(G_{\phi_1}(x))\). 另一部分的特征是直接通过样本标签得来的, 通过一个class embedding (e), 获得对应的特征\(e(y)\).
于是第一阶段的"对比损失"就出炉了
\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)},
\]
其中\(x_i, x_k\)来自于一个batch的数据\(\{x_1, \ldots, x_m\}\), \(\tau\)代表temperature. 此对比损失与SimCLR中的差别仅在正样本对上, SimCLR中构造正样本对是\(l(\mathcal{T}(x_i))\), \(l(\mathcal{T}'(x_i))\), 即通过augmentation来构造正样本对. 这里的话是通过标签来构造正样本对. 显然最小化(7)式需要使得\(x_i\)的特征靠近\(e(y_i)\), 以及不同样本特征远离彼此. 这就造成了一个问题, 实际上作者是希望同一类的样本的特征是靠近的, 但(7)是的分母部分是背离这一点的(虽然分子是符合这一点的), 为此, 作者又在分子上加了他们的cosine相似度:
\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)}.
\]
说白了, 这不就是彻彻底底的希望最大化类间距离, 最小化类内距离, 连类内中心都选好了(\(e(y_i)\), 虽然这个中心是可学习的).
作者说是这个idea受到一个互信息理论下界的启发, 但是我感觉没啥特别的意义, 这里就不贴了.

注: 总感觉没有体现出contrastive的特点, 从算法中可以看到, 计算训练损失, 真实的样本和伪造的样本是独立的. 但是仔细想想, 我们的目的不是训练一个好的生成器, 使其构造的图片和真实图片相近, 所以怎么也应该是真实图片和构造图片之间的对比. 当然, 困难在于我们不知道生成器所生成的图片所对应的真实的图片是怎样的, 不过我始终觉得这种处理方法没有发挥出contrastive的作用.
代码
作者整理了许多GAN模型.
Contrastive Generative Adversarial Networks的更多相关文章
- CIAGAN: Conditional Identity Anonymization Generative Adversarial Networks阅读笔记
CIAGAN: Conditional Identity Anonymization Generative Adversarial Networks 2020 CVPR 2005.09544.pdf ...
- StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks 论文笔记
StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks 本文将利 ...
- 论文笔记之:Semi-Supervised Learning with Generative Adversarial Networks
Semi-Supervised Learning with Generative Adversarial Networks 引言:本文将产生式对抗网络(GAN)拓展到半监督学习,通过强制判别器来输出类 ...
- 《Self-Attention Generative Adversarial Networks》里的注意力计算
前天看了 criss-cross 里的注意力模型 仔细理解了 在: https://www.cnblogs.com/yjphhw/p/10750797.html 今天又看了一个注意力模型 < ...
- Paper Reading: Perceptual Generative Adversarial Networks for Small Object Detection
Perceptual Generative Adversarial Networks for Small Object Detection 2017-07-11 19:47:46 CVPR 20 ...
- (转)Introductory guide to Generative Adversarial Networks (GANs) and their promise!
Introductory guide to Generative Adversarial Networks (GANs) and their promise! Introduction Neural ...
- SalGAN: Visual saliency prediction with generative adversarial networks
SalGAN: Visual saliency prediction with generative adversarial networks 2017-03-17 摘要:本文引入了对抗网络的对抗训练 ...
- Generative Adversarial Networks,gan论文的畅想
前天看完Generative Adversarial Networks的论文,不知道有什么用处,总想着机器生成的数据会有机器的局限性,所以百度看了一些别人 的看法和观点,可能我是机器学习小白吧,看完之 ...
- 论文笔记之:UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS
UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS ICLR 2 ...
随机推荐
- swift 实现QQ好友列表功能
最近项目中有类似QQ好友列表功能,整理了一下,话不多说,直接上代码 import UIKit class QQFriend: NSObject { var name: String? var intr ...
- Linux学习 - 修改、查询文件内容
一.显示文件内容 cat [-n] [文件名] 正向显示 -n 显示行号 tac [文件名] 反向显示 more [文件名] 可实现分页显示 (空格)或(f) 翻页 (Enter) 换行 (q ...
- Mysql 常见报错和疑问汇总
1.初始化数据库的时候报错 error while loading shared libraries: libstdc++.so.5: cannot open shared object file: ...
- 【编程思想】【设计模式】【行为模式Behavioral】registry
Python版 https://github.com/faif/python-patterns/blob/master/behavioral/registry.py #!/usr/bin/env py ...
- 【C/C++】C++ warning: control reaches end of non-void function return
控制到达非void函数的结尾. 一些本应带有返回值的函内数到容达结尾后可能并没有返回任何值. 这时候,最好检查一下是否每个控制流都会有返回值. 我是ostream声明的时候没有写return out; ...
- 面渣逆袭:Java集合连环三十问
大家好,我是老三.上期发布了一篇:面渣逆袭:HashMap追魂二十三问,反响很好! 围观群众纷纷表示 不写,是不可能不写的,只有卷才能维持了生活这样子. 当然,我写的这一系列,不是背诵版,是理解版,很 ...
- 数据挖掘实战 - 天池新人赛o2o优惠券使用预测
数据挖掘实战 - o2o优惠券使用预测 一.前言 大家好,家人们.今天是2021/12/14号.上次更新是2021/08/29.上篇文章中说到要开两个专题,果不其然我鸽了,这一鸽就是三个多月.今天,我 ...
- iOS-启动项目(一)设置 rootViewController
摘要 刚创建一个新的项目,在 AppDelegate 中设置 rootViewController 来确定应用的首页是一个最基本的处理,因为是不常操作的处理,所以容易忽略其中的某个步骤,导致无法设置成 ...
- jarvisoj_tell_me_something
下载文件,首先checksec检查一下保护,发现只开启了NX 堆栈不可执行. 接下来我们拖进IDA看一下程序的主要流程. 很简洁的程序,可以看到read函数存在栈溢出. 再来看看有什么后门函数可以利用 ...
- IDT系统中断描述表以及绕过Xurtr检测的HOOK姿势
什么是中断? 指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程.即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个 ...