InfoGAN-无监督式GAN

1. InfoGAN简介:

       普通的GAN存在无约束、不可控、噪声信号z很难解释等问题,2016年发表在NIPS顶会上的文章InfoGAN:Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets,提出了InfoGAN的生成对抗网络。InfoGAN 主要特点是对GAN进行了一些改动,成功地让网络学到了可解释的特征,网络训练完成之后,我们可以通过设定输入生成器的隐含编码来控制生成数据的特征。

        作者将输入生成器的随机噪声分成了两部分:一部分是随机噪声Z, 另一部分是由若干隐变量拼接而成的latent code c。其中,c会有先验的概率分布,可以离散也可以连续,用来代表生成数据的不同特征。例如:对于MNIST数据集,c包含离散部分和连续部分,离散部分取值为0~9的离散随机变量(表示数字),连续部分有两个连续型随机变量(分别表示倾斜度和粗细度)。

        为了让隐变量c能够与生成数据的特征产出关联,作者引入了互信息来对c进行约束,因为c对生成数据G(z, c)具有可解释性,那么c和G(z, c)应该具有较高的相关性,即它们之间的互信息比较大。互信息是两个随机变量之间依赖程度的度量,互信息越大就说明生成网络在根据c的信息生成数据时,隐编码c的信息损失越低,即生成数据保留的c的信息越多。因此,我们希望c和G(z, c)之间的互信息I(c; G(z, c))越大越好,故模型的目标函数变为:

min_{G} max_{D} V_{1} (D, G)=V(D,G)-\lambda I(c: G(z, c))

        但是由于在c与G(z, c)的互信息的计算中,真实的P(c|x)难以获得,因此在具体的优化过程中,作者采用了变分推断的思想,引入了变分分布Q(c|x)来逼近P(c|x),它是基于最优互信息下界的轮流迭代实现最终的求解,于是InfoGAN的目标函数变为:

min_{G} max_{D} V_{InfoGAN} (D, G, Q)=V(D,G)-\lambda L_{1} (G, Q)


2. InfoGAN的基本结构为:

InfoGAN的基本结构

        其中,真实数据Real_data只是用来跟生成的Fake_data混合在一起进行真假判断,并根据判断的结果更新生成器和判别器,从而使生成的数据与真实数据接近。生成数据既要参与真假判断,还需要和隐变量C_vector求互信息,并根据互信息更新生成器和判别器,从而使得生成图像中保留了更多隐变量C_vector的信息。

        因此可以对InfoGAN的基本结构进行如下的拆分,其中判别器D和Q共用所有卷积层,只是最后的全连接层不同。从另一个角度来看,G-Q联合网络相当于是一个自编网络,G相当于一个编码器,而Q相当于一个解码器,生成数据Fake_data相当于对输入隐变量C_vector的编码。

InfoGAN的拆分结构

生成器G的输入为:(batch_size, noise_dim + discrete_dim + continuous_dim),其中noise_dim为输入噪声的维度,discrete_dim为离散隐变量的维度,continuous_dim为连续隐变量的维度。生成器G的输出为(batch_size, channel, img_cols, img_rows)。

判别器D的输入为:(batch_size, channel, img_cols, img_rows),判别器D的输出为:(batch_size, 1)。

判别器Q的输入为:(batch_size, channel, img_cols, img_rows),Q的输出为:(batch_size, discrete_dim + continuous_dim)


3. InfoGAN的优化目标函数为:

        InfoGAN的目标函数变为:     

        对于判别器D而言,优化目标函数为:  max [logD_{real}+log(1-D_{fake} ) ]  

D_real, _, _ = Discriminator(real_imgs)        #  real_imgs为用于训练的真实图像

gen_imgs = Generator(noise, c_discrete, c_continuous)        #  c_discrete为输入的离散型隐变量, c_continuous为输入的连续型隐变量  

D_fake, _, _ = Discriminator(gen_imgs) 

D_real_loss = torch.nn.BCELoss(D_real, y_real)          #  y_real 真实图像的标签,都为1

D_fake_loss = torch.nn.BCELoss(D_fake, y_fake)         # y_fake为生成图像的标签,都为0

D_loss = D_real_loss + D_fake_loss

        对于生成器G而言,优化目标函数为: min[log(1-D_{fake} )]

gen_imgs = Generator(noise, c_discrete, c_continuous)                   #  c_discrete为输入的离散隐变量,c_continuous为输入的连续隐变量

D_fake, D_continuous, D_discrete = Discriminator(gen_imgs) 

G_loss = torch.nn.BCELoss( D_fake, y_real)                #  y_real 真实图像的标签,都为1

         对于G-Q联合网络而言,它的优化目标函数为:  maxL_{I}(G, Q) , 其中             L_{I}(G, Q) =c*logQ(c|x)+H(c) 因此,maxL_{I}(G, Q) \Leftrightarrow max[c*logQ(c|x)]

discrete_loss = torch.nn.CELoss(D_discrete, c_discrete)

continuous_loss = torch.nn.MSELoss(D_continuous, c_continuous)

info_loss = discrete_loss + continuous_loss

info_loss.backward()

info_optimizer.step()       # 其中,info_optimizer = optim.Adam(itertools.chain(Generator.parameters(), Discriminator.parameters()), lr = learning_rate, betas=(beta1, beta2))

       简而言之,InfoGAN中单独判别器D的优化目标函数只有对抗损失,单独生成器G的优化目标函数也只有对抗损失,生成器G和辅助判别器Q联合网络的优化目标函数是info损失,包含离散损失和连续损失两个部分。其中,判别器D和辅助判别器Q共用卷积层,只是最后的全连接层不同。


参考链接:http://aistudio.baidu.com/aistudio/projectdetail/29156 中山大学黄涛对论文InfoGAN:Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets的复现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容