首先ALI和BiGAN上本質上是一樣的,但是有一點區別,那就是ALI的encoder輸出是mu和sigma,然後隨機採樣出來編碼,而BiGAN則直接輸出一個確定的結果,沒有sample這一步。
看到這篇文章我又去補習了一下VAEGAN,BiGAN,因此這篇文章主要就是做一下對比吧。
VAEGAN:
從VAE的角度去理解,增加了判別器,來使得生成的圖片儘可能的逼真。
包含VAE中的所有loss,同時增加了一個判別器的損失項目(判斷圖片真假)
隨後提出了一個VAEGAN的變體,就是判別器的輸入有所不同,區別在於判別器的輸出爲三個類別(生成圖像,重構圖像,真實圖像),這裏這麼做的目的是爲了找出encoder生成的z和從先驗分佈中sample出來的z細微區別,能讓兩者更好的擬合。
BiGAN
BiGAN和VAEGAN結構上類似,有幾點不同。
將VAEGAN中的encoder和decoder拆開,可以看做是兩個GAN encoder和D,decoder和D
看做兩個GAN,也就取消了VAE中的kl約束,也就是不顯示的添加kl損失的loss項。
這樣p(x)通過encoder得到q(z‘),p(z)通過decoder得到q(x'),將x和z作爲一個joint的整體餵給判別器
這樣當判別器無法區分時,通過聯合概率的角度真實數據和生成的隱變量,以及sample出來的隱變量和生成的數據
p(x,z')和q(x',z)相同,也就是聯合概率分佈相同,最終使得生成數據與原始數據相同。
可見和VAEGAN的區別,一個是取消了loss,另一個是判別器的輸入是x,z而不是單獨的x