Conditional Adversarial Nets 詳解
簡(jiǎn)介
本文提出在利用 GAN(對抗網(wǎng)絡(luò ))的方法時(shí),在生成模型G和判別模型D中都加入條件信息來(lái)引導模型的訓練,并將這種方法應用于跨模態(tài)問(wèn)題,例如圖像自動(dòng)標注等。
Generative Adversarial Nets
GAN,生成對抗式網(wǎng)絡(luò )是是Ian Goodfellow經(jīng)典的大作,引起了很大的轟動(dòng),后面的各種GAN也層出不窮。追根溯源,為了了解GAN,需要從這篇開(kāi)山之作說(shuō)起。那GAN到底是什么?簡(jiǎn)單來(lái)說(shuō),GAN由兩個(gè)模型組成,一個(gè)是生成模型G,一個(gè)是判別模型D,G負責從給定訓練數據中學(xué)習數據的概率分布而D負責判別G生成出來(lái)的數據是不是符合真實(shí)數據的樣本概率分布。兩個(gè)網(wǎng)絡(luò )是非合作關(guān)系,對于D來(lái)說(shuō),是要最大化能夠判別出G生成的數據是假的的概率,而對于G來(lái)說(shuō),是要最小化被D判別出來(lái)的概率,在這個(gè)不斷博弈的過(guò)程中,兩個(gè)模型的能力都在變強,最后得到一個(gè)均衡。
模型G和D同時(shí)訓練:固定判別模型D,調整G的參數使得 log(1 ? D(G(z))的期望最小化;固定生成模型G,調整D的參數使得logD(X) + log(1 ? D(G(z)))的期望最大化。這個(gè)優(yōu)化過(guò)程可以歸結為一個(gè)“二元極小極大博弈(minimax two-player game)”問(wèn)題:
D(x)為分類(lèi)器, G(x)為生成器
D(x)的輸入為真實(shí)數據或生成數據, G(x)的輸入為隨機高斯噪聲z
對于D(x)來(lái)說(shuō)應該最大化損失函數
對于G(x)來(lái)說(shuō)應該最小化損失函數
相當于兩個(gè)模塊的博弈,而最后D(x)的預測概率為1/2則是達到了納什均衡,也是最優(yōu)解
算法訓練過(guò)程
Conditional Adversarial Nets
由于GAN這種不需要預先建模的方法太過(guò)自由,如果對于較大圖片,較多像素的情形,這種基于GAN的方法就太不可控了。
為了解決上述問(wèn)題,自然就想到給GAN模型加入一些條件約束,也就有了本文的工作Conditional Generative Adversarial Nets(CGAN)。在生成模型G和判別模型D中同時(shí)加入條件約束y來(lái)引導數據的生成過(guò)程。條件可以是任何補充的信息,如類(lèi)標簽,其它模態(tài)的數據等,這樣使得GAN能夠更好地被應用于跨模態(tài)問(wèn)題,例如圖像自動(dòng)標注。
把噪聲z和條件y作為輸入同時(shí)送進(jìn)生成器,生成跨域向量,再通過(guò)非線(xiàn)性函數映射到數據空間。
把數據x和條件y作為輸入同時(shí)送進(jìn)判別器,生成跨域向量,并進(jìn)一步判斷x是真實(shí)訓練數據的概率。
算法簡(jiǎn)單流程:
條件對抗網(wǎng)絡(luò )損失函數:
參考文檔
Generative Adversarial Nets
Conditional Generative Adversarial Nets
