InfoGAN的概念最早來自論文InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets敏沉,發(fā)表于NIPS 2016才菠。
motivation
在標準的GAN中速妖,生成數(shù)據(jù)的來源一般是一段連續(xù)單一的噪聲z,這樣帶來的一個問題是椎眯,Generator往往會將z高度耦合處理,我們無法通過控制z的某些維度來控制生成數(shù)據(jù)的語義特征胳岂,也就是說盅视,z是不可解釋的。比如旦万,假設我們打算生成像MNIST那樣的手寫數(shù)字圖像闹击,每個手寫數(shù)字可以分解成多個維度特征:代表的數(shù)字、傾斜度成艘、粗細度等等赏半,在標準GAN的框架下,我們無法在上述維度上具體指定Generator生成什么樣的手寫數(shù)字淆两。
為了解決這一問題断箫,文章對GAN的目標函數(shù)進行了一些小小的改進,成功讓網(wǎng)絡學習到了可解釋的特征表示(即論文題目中的interpretable representation)秋冰。
latent code
這個trick的關(guān)鍵是latent code的應用仲义。
既然原始的噪聲是雜亂無章的,那就人為地加上一些限制剑勾,于是作者把原來的噪聲輸入分解成兩部分:一是原來的z埃撵;二是由若干個latent variables拼接而成的latent code c,這些latent variables會有一個先驗的概率分布虽另,且可以是離散的或連續(xù)的暂刘,用于代表生成數(shù)據(jù)的不同特征維度,比如MNIST實驗的latent variables就可以由一個取值范圍為0-9的離散隨機變量(用于表示數(shù)字)和兩個連續(xù)的隨機變量(分別用于表示傾斜度和粗細度)構(gòu)成捂刺。
但僅有這個設定還不夠谣拣,因為GAN中Generator的學習具有很高的自由度,它很容易找到一個解族展,使得
森缠,導致c完全不起作用。
mutual information
作者從信息論中得到啟發(fā)仪缸,提出了基于互信息(mutual information)的正則化項贵涵。c的作用是對生成數(shù)據(jù)的分布施加影響,于是需要對這兩者的關(guān)系建模,在信息論中独悴,互信息I(X;Y)用來衡量“已知Y的情況下可獲取多少有關(guān)X的信息”例书,計算公式為:
其中H表示計算entropy,H(X|Y)衡量的是“給定Y的情況下刻炒,X的不確定性”决采。從公式可以得知,當X和Y毫無關(guān)聯(lián)時坟奥,H(X|Y) = H(X)树瞭,I(X;Y) = 0,取得最小值爱谁;當X和Y有明確的關(guān)聯(lián)時晒喷,已知Y時,X沒有不確定性访敌,因而H(X|Y) = 0凉敲,此時I(X;Y)取得最大值。
所以寺旺,現(xiàn)在優(yōu)化目標就很明確了:要讓c和Generator分布G(z, c)的互信息達到最大值∫ィ現(xiàn)在目標函數(shù)可改寫為:
Variational Mutual Information Maximization
上述的推導看似已經(jīng)很充足了,然而上面互信息的計算涉及后驗概率分布P(c|x)阻塑,而后者在實際中是很難獲取的蓝撇,所以需要定義一個輔助性的概率分布Q(c|x),采用一種叫作Variational Information Maximization的技巧對互信息進行下界擬合:
再經(jīng)過一番數(shù)學推導陈莽,可把這個下界轉(zhuǎn)化成如下的形式:
這里的
很容易在現(xiàn)有的框架中進行優(yōu)化渤昌,當它取得最大值H(c)時,我們也獲得了互信息的最大值走搁,達到最優(yōu)結(jié)果独柑。
現(xiàn)在目標函數(shù)改為:
網(wǎng)絡模型概覽
最終的網(wǎng)絡模型示意圖為:
網(wǎng)絡是基于DC-GAN(Deep Convolutional GAN)的,G和D都由CNN構(gòu)成朱盐。在此基礎上群嗤,Q和D共享卷積網(wǎng)絡,然后分別通過各自的全連接層輸出不同的內(nèi)容:Q輸出對應于fake data的c的概率分布兵琳,D則仍然判別真?zhèn)巍?p>