目录

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. org.apache.hadoop.hive.ql.metadata.HiveException: Internal Error: cannot generate all output rows for a Partition解决

    自己在路径访问明细表开发时,写的sql如下 SELECT guid, sessionid, event['url'] as page, `timestamp` as ts, row_number() ...

  2. Linux学习 - 目录表

    目录名 作用 权限 说明 /bin/ 存放系统命令的目录 所有用户 存放在/bin/下的命令单用户模式下也可以执行 /sbin/ 保存和系统环境设置相关的命令 root                 ...

  3. linux查询健康状态,如何直观的判断你的Linux系统是否健康

    一提到对于查看系统运行的健康状况,可能大多数朋友考虑到的就是查看进程或者打开任务管理器,但是对于应用在真实生产环境中服务器的linux系统来说,以上两种方式都不是***效的查看方式,那么今天就给大家推 ...

  4. Reactor之发射器(Flux、Mono)转换操作函数

    数据合并函数 由于业务需求有的时候需要将多个数据源进行合并,Reactor提供了concat方法和merge方法: concat public static <T> Flux<T&g ...

  5. Mysql资料 查询条件

    目录 一.计算 二.比较 三.逻辑运算符 四.位运算符 五.优先顺序 一.计算 二.比较 三.逻辑运算符 四.位运算符 五.优先顺序 实际上,很少有人能将这些优先级熟练记忆,很多情况下我们都是用&qu ...

  6. 带你尝鲜LiteOS 组件EasyFlash

    摘要:EasyFlash是一个开源的轻量级嵌入式闪存库. 本文分享自华为云社区<LiteOS组件尝鲜-玩转EasyFlash>,作者:Lionlace . 基本介绍 EasyFlash是一 ...

  7. Table.Combine追加…Combine(Power Query 之 M 语言)

    数据源: 销量表和部门表 目标: 其中一表的数据追加到另一表后面,相同列直接追加,不同列增加新列 操作过程: 选取销量表>[主页]>[追加查询]/[将查询追加为新查询]>选择要追加的 ...

  8. 在【自定义列】中使用M函数(Power Query 之 M 语言)

    数据源: "品名"一列 目标: 提取品名中的首字符,生成新列:"品名简称" 解决方案: 在[自定义列]中使用M函数Text.Start 步骤: 打开[自定义列] ...

  9. CF734B Anton and Digits 题解

    Content 有 \(k_2\) 个 \(2\).\(k_3\) 个 \(3\).\(k_5\) 个 \(5\) 和 \(k_6\) 个 \(6\),你可以用这里面的数字来组成 \(256,32\) ...

  10. CF1065A Vasya and Chocolate 题解

    Content 小 V 有 \(s\) 块钱,商店里有巧克力卖,每块巧克力 \(c\) 块钱,现在商店给出优惠:购买 \(a\) 块巧克力可以免费获得 \(b\) 块巧克力,求小 V 最多能够买到的巧 ...