InforGAN笔记

InforGAN笔记


Purpose
: 通过非监督学习得到可分解的特征表示.


Motivation:
由于G使用噪声z的时候没有加任何的限制, 所以1z是在以一种高度混合的方式被使用, 2z的任何一个维度都没有被明显的表示数据的一个特征(即我们不知道什么样的噪声可以生成数字1,什么样的噪声可以生成数字3...)


Solution:
作者在生成器的输入中, 除了z之外还增加了一个隐含编码c(也是随机的), 提出了InfoGAN. 

 

为了使x与c中间关联密切, 在原来的损失函数中加入了一个正则项, 则互信息

 

熵是随机变量不确定性的度量. 互信息定义为两个熵的插值, H(c)是先验分布的熵, H(c|x)是后验分布的熵. I(c,x)=H(c)-H(c|x)是观测到x值而造成的c的不确定性的减小(类似决策树中的信息增益). 如果c和x没有相关性, 则互信息为0, 如果有相关性, 则互信息不为0.

计算互信息的值时, 需要用到后验分布, 但这是一个很难采样和估计的值.
作者采用变分推断的思想, 通过定义一个辅助分布Q(c|x)来逼近后验分布P(c|x)(注意, 这里P是分布, H是信息熵, 对应信息熵H(c|x)的分布, 即类似H(c|x)=-logP(c|x)).
加入辅助分布后发现, 辅助分布的网络Q可以与判别器D共享权值, 从而不需要额外的存储和开销.
(具体推导网上搜)
经过一番推导后, 得出
I(c,x)=H(c)-H(c|x)
>=E[LnQ(c, x)]+H(c)
论文中讲了, H(c)不包含优化的变量, 被视作一个常数, 最终的目标函数是


Implementation
具体的实现中, Q和D共享所有卷积层, 在D的最后增加了一个全连接层来输出Q(c|x).
对于c, 
1, 如果是条件隐编码c_dis, 就用softmax分类层来表示Q(c|x),
2, 如果是连续隐编码c_con, 就用高斯分布来表示, 具体的, 添加一个全连接层, 输出作为Q的均值, 如果标准差不是人工设定的话, 再添加一个并行的全连接层, 输出作为标准差; 高斯分布中的x就是预先定义的连续隐变量c_con, 不是Q的输出.




论文地址:InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets
源码(不确定这个是不是源码)
第三方Pytorch实现
 

BTW, StarGAN中在D后面加一个分类层对输入进行分类, 跟InfoGAN中用条件隐编码c_dis好像啊..., 只是StarGAN的D在优化时, 同时对real data进行分类, 而且fake data虽然计算D的分类损失, 但这个损失不参与D的优化. 而在InforGAN的Tensorflow源码中可以发现, fake data计算的互信息损失同时优化G, D, Q



参考博文: 
https://blog.csdn.net/u011699990/article/details/71599067
https://blog.csdn.net/wspba/article/details/54808833

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值