目录

Chen X., Duan Y., Houthooft R., Schulman J., Sutskever I., Abbeel P. InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets. arXiv preprint arXiv 1606.03657, 2016.

既然都能生成图片了, 那至少得能够抓住数据的特征信息, 解耦.

主要内容

一些GAN的输入会包括\((z, c)\), 其中\(z\)是噪声, 而\(c\)是一些别的信息, 比如标签信息, 一个很自然的问题是, 怎么保证GAN会利用这部分信息呢? 换言之, 怎么保证生成器生成的图片\(G(z, c)\)与\(c\)有不可否认的关联呢?

衡量两个随机变量关联性的指标, 经典的便是互信息

\[I(X, Y) = H(X) - H(X|Y),
\]

在这个问题里就是

\[I(c,G(z,c)) = H(c) - H(c|G(z,c)).
\]

直接估计互信息是很困难的, 利用变分方法可以得到一个有效的下界(这也是VAE的灵魂):

\[\begin{array}{ll}
I(c,G(z,c)) & = \mathbb{E}_{x \sim P_G} \mathbb{E}_{P(c|x)} \log P(c|x) + H(c) \\
& = \mathbb{E}_{x \sim P_G} [\mathrm{KL}(P(c|x) \| Q(c|x)) + \mathbb{E}_{P(c|x)}\log Q(c|x)] + H(c) \\
& \ge \mathbb{E}_{x \sim P_G}\mathbb{E}_{P(c|x)}\log Q(c|x) + H(c)=: L_{I}(G, Q).
\end{array}
\]

其中\(Q\)是我们用来近似\(P(c|x)\)的. 上述还是存在一个问题, 即\(P(c|x)\)依然无法处理, 不过注意到

\[L_I(G, Q) = \mathbb{E}_{c \sim P(c), x \sim G(z, c)}[\log Q(c|x)] + H(c).
\]

我们可以给出一个合理的先验分布.

当\(c \in \mathcal{C}\)是离散的时候, 令\(Q\)的输出向量的长度为\(|\mathcal{C}|\), 可直接令该向量的softmax后的向量为概率向量;

当\(c\)是连续的时候, 倘若\(x=G(z, c^*)\), 则可以假设\(Q(c|x) \sim \mathcal{N}(c^*, \sigma^2 I)\), 此时

\[\log Q(c|x) \propto \log \exp(-\frac{\|c-c^*\|_2^2}{2\sigma^2}) \propto -\|c-c^*\|_2^2.
\]

最后的损失便为

\[\min_{G, Q} \max_D V_{\mathrm{InfoGAN}} (D, G, Q) = V(D, G) - \lambda \cdot L_I(G, Q).
\]

其中\(V(D, G)\)是普通的GAN的损失.

看一些InfoGAN的实现: \(z\)服从[0, 1]均匀分布, 类别标签服从均匀分布(\(1/K\)), 其他的用于描述角度宽度的\(c\)服从[-1, 1]的均匀分布.

实际上, 应该还是有一个超参数\(\sigma^2\)的, 但是当我们假设其与\(x\)无关的时候, 在损失部分其为一常数, 所以就不用管了(这和VAE在decoder部分的处理也是一致的).

估计是没弄好啊, 这没看出变化来.

InfoGAN的更多相关文章

  1. 学习笔记GAN003:GAN、DCGAN、CGAN、InfoGAN

    ​GAN应用集中在图像生成,NLP.Robt Learning也有拓展.类似于NLP中的Actor-Critic. https://arxiv.org/pdf/1610.01945.pdf . Gen ...

  2. 深度学习-InfoGAN论文理解笔记

    在弄清楚InfoGAN之前,可以先理解一下变分推断目的以及在概率论中的应用与ELBO是什么,以及KL散度 https://blog.csdn.net/qy20115549/article/detail ...

  3. InfoGan笔记

    InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets ...

  4. 0.读书笔记之The major advancements in Deep Learning in 2016

    The major advancements in Deep Learning in 2016 地址:https://tryolabs.com/blog/2016/12/06/major-advanc ...

  5. 深度|OpenAI 首批研究成果聚焦无监督学习,生成模型如何高效的理解世界(附论文)

    本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载,原文. 选自 Open AI 作者:ANDREJ KARPATHY, PIETER ABBEEL, GREG BRO ...

  6. (转) The major advancements in Deep Learning in 2016

    The major advancements in Deep Learning in 2016 Pablo Tue, Dec 6, 2016 in MACHINE LEARNING DEEP LEAR ...

  7. [译]2016年深度学习的主要进展(译自:The Major Advancements in Deep Learning in 2016)

    译自:The Major Advancements in Deep Learning in 2016 建议阅读时间:10分钟 https://tryolabs.com/blog/2016/12/06/ ...

  8. 一些相关的github

    https://github.com/LTS4/DeepFool 貌似是说可以愚弄深度神经网络? https://github.com/tflearn/tflearn TF学习指南 http://gi ...

  9. (转)【重磅】无监督学习生成式对抗网络突破,OpenAI 5大项目落地

    [重磅]无监督学习生成式对抗网络突破,OpenAI 5大项目落地 [新智元导读]"生成对抗网络是切片面包发明以来最令人激动的事情!"LeCun前不久在Quroa答问时毫不加掩饰对生 ...

随机推荐

  1. Ecshop 后台导出订单Excel时, 内存溢出的解决方法

    今天继续跟大家分享一下,在我配置Ecshop时的问题. 今天的问题是在后台想要导出订单列表Excel时出现的内存溢出.错误提示如下 问题:  Fatal error: Allowed memory s ...

  2. 案例 stm32单片机,adc的双通道+dma 内部温度

    可以这样理解 先配置adc :有几个通道就配置几个通道. 然后配置dma,dma是针对adc的,而不是针对通道的. 一开始我以为一个adc通道对应一个dma通道.(这里是错的,其实是我想复杂了) 一个 ...

  3. ClassLoad类加载器与双亲委派模型

    1. 类加载器 Class类描述的是整个类的信息,在Class类中提供的方法getName()是根据ClassPath配置的路径来进行类加载的.若类加载的路径为文件.网络等时则必须进行类加载这是就需要 ...

  4. GO 通过进程号输出运行运行信息

    操作系统应用可以使用PID来查找关于进程本身的信息.当进程失败时获取到的PID就非常有价值,这样就可以使用PID跟踪整个系统中的系统日志,如/var/log/messages./var/log/sys ...

  5. Android 实现微信QQ分享以及第三方登录

    集成准备 在微信开放平台创建移动应用,输入应用的信息,包括移动应用名称,移动应用简介,移动应用图片信息,点击下一步,选择Android 应用,填写信息提交审核. 获取Appkey 集成[友盟+]SDK ...

  6. OpenStack之七: compute服务(端口8774)

    注意此处的bug,参考o版 官网地址 https://docs.openstack.org/nova/stein/install/controller-install-rdo.html 控制端配置 # ...

  7. js处理title超长问题

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  8. logstash 正则表达式

    正则表达式 3. 使用给定好的符号去表示某个含义 4. 例如.代表任意字符 5. 正则符号当普通符号使用需要加反斜杠 正则的发展 6. 普通正则表达式 7. 扩展正则表达式 普通正则表达式 . 任意一 ...

  9. 【JS】toLocaleString 日期格式,千分位转换

    https://blog.csdn.net/Seven521m/article/details/108866881 类似于c里printf(m%)的意思 可以指定整数最少位数,小数最少与最多位数,有效 ...

  10. 【Python】数据处理分析,一些问题记录

    不用造轮子是真的好用啊 python中单引号双引号的区别 和cpp不一样,cpp单引号表示字符,双引号表示字符串,'c'就直接是ascii值了 Python中单引号和双引号都可以用来表示一个字符串 单 ...