通過DCGAN的判別器可以反向得到近似的隱空間表達向量Z嗎?

我們知道訓練有素的GAN的生成器(以DCGAN為例)可以將均勻分布的隱空間向量Z一路反卷積生成最終的圖片,那麼理論上是否可以輸入任意一張圖片得到該圖片在該模型下的隱空間向量呢?我的理解,卷積運算本來就有降維的概念,就意味著丟失信息,那麼就很難通過一張源圖片得到初始的隱變數表達吧?求大神們點點燈。


謝邀,常見套路是:

第一步,用訓練好的生成器g生成很多對z和x=g(z)的樣本對,用它們訓練一個g的近似反函數f,使得z=f(x)。

第二步,來一張新圖片x,用f反求出其近似對應的z,但是它未必很准。

第三步,對這個z進一步梯度下降優化,使得||x - g(z)||最小化,收斂後就得到最對應x的z。

@羅若天大大的回答相當於對z隨機初始化完就直接做第三步,但是有的論文就會加上前兩步,目的是為了獲得一個更好的z初始化。


一種做法是通過generator來找,即優化隱變數z最小化生成圖片和given圖片的差異。缺點是非常容易陷入local minimum, 這可以通過選多個初始點z或者用另一個CNN來訓練一個圖片到latent code的映射作為初始解來緩解(如[1609.03552] Generative Visual Manipulation on the Natural Image Manifold文中fig. 3的hybrid method)。還有ICLR17 workshop這篇文章([1702.04782] Precise Recovery of Latent Vectors from Generative Adversarial Networks)提出一種stochastic clipping的方法似乎取得了不錯的效果(能有效跳出局部解)。

另一種做法是將「圖片到code」的映射結合到GAN中一起train, 參見ICLR17的BiGAN([1605.09782] Adversarial Feature Learning)和另一篇([1606.00704] Adversarially Learned Inference)。 這種做法的好處是看上去更elegant,又能feed-forward地直接生成code而不用再去解一個優化問題,然而BiGAN的實驗中(fig. 4)發現找到的z並不能非常準確地還原given image。


謝邀

最簡單就是做一個優化問題

min_z ||G(z)- I ||

I 是image

你也可以用cogan啊,cyclegan,可以同時獲得兩個方向的網路

補充:

。。。。。媽蛋

老是把cogan和bigan記錯。。。。傻逼了。。應該是bigan


就是在卷積層和反卷積層間加一個編碼器的意思吧?

有將變分編碼器和GAN結合的工作應該滿足你的要求。


推薦閱讀:

如何評價 On Unifying Deep Generative Models 這篇 paper?

TAG:生成對抗網路GAN |