今天看啥  ›  专栏  ›  jiangweijie1981

文献阅读·InfoGAN

jiangweijie1981  · 简书  ·  · 2020-02-19 15:38

简介

Infogan: Interpretable representation learning by information maximizing generative adversarial nets.NIPS-2016.Cited-1625.推荐个开源: infogan ,这大佬的仓库里一堆的gan及变种,Star-5.5k。

关键字

无监督学习,特征解耦,GAN,深度学习,机器学习

正文

1. 任务和思路

GAN模型使用生成器 G 噪声 z 生成目标数据集的类似样本 x=G(z) ,这里的 z 没有任何要求,只是一个符合假设分布的随机向量,但是通过 G(z) 生成的 x 却可能有着不同的属性,如MNIST中的不同数字,数字的不同粗细和角度等等,这说明一个事实就是那些隐含的属性都包含在了随便向量 z 中,且和生成样本不同属性间共有的信息混合和纠缠在一起了。基于以上的问题,infogan希望能够把这些隐含的信息和共有的必要信息分离,也就是从 z 中解耦出一个隐变量特征 cz 用来生成图片的必要信息, c 可以指示图像的具体属性,包括离散的属性(如类别)和连续的属性(如角度)。

把输入随机向量拆成两个部分 (z,c) ,不代表就能够自然的把共有信息 z 和特征属性 c 自动的分离出来,需要有个机制来达到这一点,那就是在生成后的样本 x=G(z,c) 中含有 c 的信息,因此希望这个两个变量之间有较大的关联,infogan采用互信息 I=(c;G(z,c)) 来度量和表达两个信息间的关联程度,希望生成的样本能够和 c 之间有尽量大的互信息。产生如下的任务目标:

\min _G\max_DV_I(D,G)=V(D,G)-\lambda I(c;G(z,c))

2. 具体目标函数

上面给出的互信息不好优化,在于缺乏条件概率 p(c\mid x) ,老规矩使用变分,得到一个可以优化的下界,具体过程见原文吧,这里直接给出结果:

\min_{G,Q}\max_DV_{InfoGAN}(D,G,Q)=V(D,G)-\lambda L_I(G,Q)

其中, Q(c\mid x) 是用来拟合 c 在证据(真实样本) x 下的后验 p(c\mid x)L_I(G,Q) 表示互信息下界的近似目标,具体为:

L_I(G,Q)=E_{x\sim G(z,c)}[E_{c'\sim P(c\mid x)}[\log Q(c'\mid x)]]+H(c)

上面具体的目标函数第1项和原始GAN一样,第2项的 E_{x\sim G(z,c)} 可以用蒙特卡罗近似,里头的期望实际上是个交叉熵,如果是离散值就用交叉熵损失来计算,如果是连续值就用 L_2 来计算。

3. 实现

上面的过程中要计算第二项,所以增加离散值和连续值两类输出,这些可以通过再设置一个学习器 Q 来完成这些工作, Q 针对K类的离散值输出一个K维向量,针对连续值输出均值和方差(假设符合高斯),利用上面的输出值来计算损失。学习器 Q 的设置上,我看不少开源既有和 D 共享参数的,也有和 D 独立的参数设置,从原文计算代价的描述来看,个人理解上更倾向于共享参数。

具体到训练过程,更新 D 参数时,使用真假样本的判别损失;更新 G 参数时使用判别器的假样本损失+离散值损失+连续值损失。

4. 效果

上个有代表性的MNIST效果(文献Figure2):

MNIST效果.png

参考资料

[1] Chen, Xi, et al. "Infogan: Interpretable representation learning by information maximizing generative adversarial nets." Advances in neural information processing systems. 2016.




原文地址:访问原文地址
快照地址: 访问文章快照