乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      生成模型新突破,簡單修改讓gan的判別器變成編碼器

       2016xing 2019-04-05

      這是一個(gè)推薦、解讀、討論和報(bào)道人工智能前沿論文成果的學(xué)術(shù)平臺,致力于讓國內(nèi)外優(yōu)秀科研工作得到更為廣泛的傳播和認(rèn)可。

      本文來給大家分享一下筆者最近的一個(gè)工作:通過簡單地修改原來的 GAN 模型,就可以讓判別器變成一個(gè)編碼器,從而讓 GAN 同時(shí)具備生成能力和編碼能力,并且?guī)缀醪粫黾佑?xùn)練成本。

      這個(gè)新模型被稱為 O-GAN(正交 GAN,即 Orthogonal Generative Adversarial Network),因?yàn)樗腔趯ε袆e器的正交分解操作來完成的,是對判別器自由度的最充分利用。

      ▲ FFHQ線性插值效果圖

      背景

      筆者掉進(jìn)生成模型的大坑已經(jīng)很久時(shí)間了,不僅寫了多篇有關(guān)生成模型的文章,而且還往 arXiv 上也提交了好幾篇跟生成模型相關(guān)的小 paper。自掉坑以來,雖然說對生成模型尤其是 GAN 的理解漸深,有時(shí)也覺得自己做出了一點(diǎn)改進(jìn)工作(所以才提交到 arXiv上),但事實(shí)上那些東西都是無關(guān)痛癢的修修補(bǔ)補(bǔ),意義實(shí)在不大。

      而本文要介紹的這個(gè)模型,自認(rèn)為比以往我做的所有 GAN 相關(guān)工作的價(jià)值總和還要大:它提供了目前最簡單的方案,來訓(xùn)練一個(gè)具有編碼能力的 GAN 模型。

      現(xiàn)如今,GAN 已經(jīng)越來越成熟,越做越龐大,諸如 BigGAN 、StyleGAN 等算是目前最先進(jìn)的 GAN 模型也已被人熟知,甚至玩得不亦樂乎。不過,這幾個(gè)最先進(jìn)的 GAN 模型,目前都只有生成器功能,沒有編碼器功能,也就是說可以源源不斷地生成新圖片,卻不能對已有的圖片提取特征。

      當(dāng)然,帶有編碼器的 GAN 也有不少研究,甚至本人就曾做過。但不管有沒有編碼能力,大部分 GAN 都有一個(gè)特點(diǎn):訓(xùn)練完成后,判別器都是沒有用的。因?yàn)槔碚撋显接?xùn)練,判別器越退化(比如趨于一個(gè)常數(shù))。

      做過 GAN 的讀者都知道,GAN 的判別器和生成器兩個(gè)網(wǎng)絡(luò)的復(fù)雜度是相當(dāng)?shù)模ㄈ绻€有編碼器,那么復(fù)雜度也跟它們相當(dāng)),訓(xùn)練完 GAN 后判別器就不要了,那實(shí)在是對判別器這個(gè)龐大網(wǎng)絡(luò)的嚴(yán)重浪費(fèi)!

      一般來說,判別器的架構(gòu)跟編碼器是很相似的,那么一個(gè)很自然的想法是能不能讓判別器和編碼器共享大部分權(quán)重?

      據(jù)筆者所知,過去所有的 GAN 相關(guān)的模型中,只有 IntroVAE 做到了這一點(diǎn)。但相對而言 IntroVAE 的做法還是比較復(fù)雜的,而且目前網(wǎng)上還沒有成功復(fù)現(xiàn) IntroVAE 的開源代碼,筆者也嘗試復(fù)現(xiàn)過,但也失敗了。

      而本文的方案則極為簡單——通過稍微修改原來的GAN模型,就可以讓判別器轉(zhuǎn)變?yōu)橐粋€(gè)編碼器,不管是復(fù)雜度還是計(jì)算量都幾乎沒有增加。

      模型

      事不宜遲,馬上來介紹這個(gè)模型。首先引入一般的 GAN 寫法:

      為了不至于混淆,這里還是不厭其煩地對符號做一些說明。其中,p(x) 是真實(shí)圖片集的“證據(jù)分布”,q(z) 是噪聲的分布(在本文中,它是元標(biāo)準(zhǔn)正態(tài)分布);而自然就是生成器和判別器了,f, g, h 則是一些確定的函數(shù),不同的 GAN 對應(yīng)著不同的 f, h, g。

      有時(shí)候我們會加一些標(biāo)準(zhǔn)化或者正則化手段上去,比如譜歸一化或者梯度懲罰,簡單起見,這些手段就不明顯地寫出來了。 

      然后定義幾個(gè)向量算符:

      寫起來貌似挺高大上的,但其實(shí)就是向量各元素的均值、方差,以及標(biāo)準(zhǔn)化的向量。特別指出的是,當(dāng) nz≥3 時(shí)(真正有價(jià)值的 GAN 都滿足這個(gè)條件),[avg(z),std(z),N(z)] 是函數(shù)無關(guān)的,也就是說它相當(dāng)于是原來向量 z 的一個(gè)“正交分解”。

      接著,我們已經(jīng)說了判別器的結(jié)構(gòu)其實(shí)和編碼器有點(diǎn)類似,只不過編碼器輸出一個(gè)向量而判別器輸出一個(gè)標(biāo)量罷了,那么我可以把判別器寫成復(fù)合函數(shù):

      這里 E 是的映射,而 T 是的映射。不難想象,E 的參數(shù)量會遠(yuǎn)遠(yuǎn)多于 T 的參數(shù)量,我們希望 E(x) 具有編碼功能。

      怎么實(shí)現(xiàn)呢?只需要加一個(gè) loss:Pearson 相關(guān)系數(shù)

      其中:

      如果 λ=0,那么就是普通的 GAN 而已(只不過判別器被分解為兩部分 E 和 T 兩部分)。加上了這個(gè)相關(guān)系數(shù),直觀上來看,就是希望 z 和 E(G(z)) 越線性相關(guān)越好。為什么要這樣加?我們留到最后討論。

      顯然這個(gè)相關(guān)系數(shù)可以嵌入到任意現(xiàn)成的 GAN 中,改動量顯然也很?。ú鸱忠幌屡袆e器、加一個(gè) loss),筆者也做了多種 GAN 的實(shí)驗(yàn),發(fā)現(xiàn)都能成功訓(xùn)練。

      這樣一來,GAN 的判別器 D 分為了 E 和 T 兩部分,E 變成了編碼器,也就是說,判別器的大部分參數(shù)已經(jīng)被利用上了。但是還剩下 T,訓(xùn)練完成后 T 也是沒用的,雖然 T 的參數(shù)量比較少,這個(gè)浪費(fèi)量是很少的,但對于有“潔癖”的人(比如筆者)來說還是很難受的。

      能不能把 T 也省掉?經(jīng)過筆者多次試驗(yàn),結(jié)論是:還真能!因?yàn)槲覀兛梢灾苯佑?avg(E(x)) 做判別器

      這樣一來整個(gè)模型中已經(jīng)沒有 T 了,只有純粹的生成器 G 和編碼器 E,整個(gè)模型沒有絲毫冗余的地方,潔癖患者可以不糾結(jié)了。

      實(shí)驗(yàn)

      這樣做為什么可以?我們放到最后再說。先看看實(shí)驗(yàn)效果,畢竟實(shí)驗(yàn)不好的話,原理說得再漂亮也沒有意義。

      注意,理論上來講,本文引入的相關(guān)系數(shù)項(xiàng)并不能提高生成模型的質(zhì)量,所以實(shí)驗(yàn)的目標(biāo)主要有兩個(gè)

      1)這個(gè)額外的 loss 會不會有損原來生成模型的質(zhì)量?

      2)這個(gè)額外的 loss 是不是真的可以讓 E 變成一個(gè)有效的編碼器?

      這個(gè)方法可以嵌入到任意 GAN 中,這次實(shí)驗(yàn)用的是 GAN 是我之前的 GAN-QP 的變種:

      其中:

      數(shù)據(jù)集上,這次的實(shí)驗(yàn)做得比較完整,在 CelebA HQ、FFHQ、LSUN-churchoutdoor、LSUN-bedroom 四個(gè)數(shù)據(jù)集上都做了實(shí)驗(yàn),分辨率都是 128 × 128 (其實(shí)還做了一點(diǎn) 256 × 256 的實(shí)驗(yàn),結(jié)果也不錯(cuò),但是沒放到論文上)。模型架構(gòu)跟以往一樣都是 DCGAN ,其余細(xì)節(jié)直接看論文或者代碼吧。 

      上圖:

      ▲ CelebA HQ隨機(jī)生成

      ▲ CelebA HQ重構(gòu)效果

      ▲ CelebA HQ線性插值

      ▲ FFHQ隨機(jī)生成

      ▲ FFHQ重構(gòu)效果

      ▲ FFHQ線性插值

      ▲ LSUN-church隨機(jī)生成

      ▲ LSUN-church重構(gòu)效果

      ▲ LSUN-church線性插值

      ▲ LSUN-bedroom隨機(jī)生成

      ▲ LSUN-bedroom重構(gòu)效果

      ▲ LSUN-bedroom線性插值

      不管你們覺得好不好,反正我是覺得還好了。

      1. 隨機(jī)生成效果還不錯(cuò),說明新引入的相關(guān)系數(shù)項(xiàng)沒有降低生成質(zhì)量;

      2. 重構(gòu)效果還不錯(cuò),說明 E(x) 確實(shí)提取到了 x 的主要特征;

      3. 線性插值效果還不錯(cuò),說明 E(x) 確實(shí)學(xué)習(xí)到了接近線性可分的特征。

      原理

      好,確認(rèn)過眼神,哦不對,是效果,就可以來討論一下原理了。

      很明顯,這個(gè)額外的重構(gòu)項(xiàng)的作用就是讓 z 盡可能與 E(G(z)) “相關(guān)”,對于它,相信大多數(shù)讀者的第一想法應(yīng)該是 mse 損失而非本文用的 ρ(z,E(G(z)))。但事實(shí)上,如果加入那么訓(xùn)練基本上都會失敗。那為什么 ρ(z,E(G(z))) 又會成功呢?

      根據(jù)前面的定義,E(x) 輸出一個(gè)維的向量,但是 T(E(x)) 只輸出一個(gè)標(biāo)量,也就是說,E(x) 輸出了個(gè)自由度,而作為判別器,T(E(x)) 至少要占用一個(gè)自由度(當(dāng)然,理論上它也只需要占用一個(gè)自由度)。

      如果最小化,那么訓(xùn)練過程會強(qiáng)迫 E(G(z)) 完全等于 z,也就是說個(gè)自由度全部被它占用了,沒有多余的自由度給判別器來判別真假了,所以加入大概率都會失敗。

      但是 ρ(z,E(G(z))) 不一樣,ρ(z,E(G(z))) 跟 avg(E(G(z))) 和 std(E(G(z))) 都沒關(guān)系(只改變向量 E(G(z)) 的 avg 和 std,不會改變 ρ(z,E(G(z))) 的值,因?yàn)?ρ 本身就先減均值除標(biāo)準(zhǔn)差了),這意味著就算我們最大化 ρ(z,E(G(z))),我們也留了至少兩個(gè)自由度給判別器。

      這也是為什么在 (6) 中我們甚至可以直接用 avg(E(x)) 做判別器,因?yàn)樗粫?ρ(z,E(G(z))) 的影響的。

      一個(gè)相似的例子是 InfoGAN 。InfoGAN 也包含了一個(gè)重構(gòu)輸入信息的模塊,這個(gè)模塊也和判別器共享大部分權(quán)重(編碼器),而因?yàn)?InfoGAN 事實(shí)上只重構(gòu)部分輸入信息,因此重構(gòu)項(xiàng)也沒占滿編碼器的所有自由度,所以 InfoGAN 那樣做是合理的——只要給判別器留下至少一個(gè)自由度。

      另外還有一個(gè)事實(shí)也能幫助我們理解。因?yàn)槲覀冊趯褂?xùn)練的時(shí)候,噪聲是的,當(dāng)生成器訓(xùn)練好之后,那么理論上對所有的,G(z) 都會是一張逼真的圖片,事實(shí)上,反過來也是成立的,如果 G(z) 是一張逼真的圖片,那么應(yīng)該有(即位于 N(0,Inz) 的高概率區(qū)域)。

      進(jìn)一步推論下去,對于,我們有 avg(z)≈0 以及 std(z)≈1。那么,如果 G(z) 是一張逼真的圖片,那么必要的條件是 avg(z)≈0 以及 std(z)≈1。

      應(yīng)用這個(gè)結(jié)論,如果我們希望重構(gòu)效果好,也就是希望 G(E(x)) 是一張逼真的圖片,那么必要的條件是 avg(E(x))≈0 以及 std(E(x))≈1。

      這就說明,對于一個(gè)好的 E(x),我們可以認(rèn)為 avg(E(x)) 和 std(E(x)) 都是已知的(分別等于 0 和 1),既然它們是已知的,我們就沒有必要擬合它們,換言之,在重構(gòu)項(xiàng)中可以把它們排除掉。而事實(shí)上:

      也就是說在 mse 損失中排除掉 avg(E(x)) 和 std(E(x)) 的話,然后省去常數(shù),它其實(shí)就是 ?ρ(z,E(G(z))),這再次說明了 ρ(z,E(G(z))) 的合理性。并且由這個(gè)推導(dǎo),重構(gòu)過程并不是 G(E(x)) 而是:

      最后,這個(gè)額外的重構(gòu)項(xiàng)理論上還能防止 mode collapse 的出現(xiàn)。其實(shí)很明顯,因?yàn)橹貥?gòu)質(zhì)量都不錯(cuò)了,生成質(zhì)量再差也差不到哪里去,自然就不會怎么 mode collapse 了。

      非要說數(shù)學(xué)依據(jù)的話,我們可以將 ρ(z, E(G(z))) 理解為 Z 和 G(Z) 的互信息上界,所以最小化 ?ρ(z, E(G(z))) 事實(shí)上在最大化 Z 與 G(Z) 的互信息,這又等價(jià)于最大化 G(Z) 的熵。而 G(Z) 的熵大了,表明它的多樣性增加了,也就遠(yuǎn)離了 mode collapse。

      結(jié)語

      本文介紹了一個(gè)方案,只需要對原來的 GAN 進(jìn)行簡單的修改,就可以將原來 GAN 的判別器轉(zhuǎn)化為一個(gè)有效的編碼器。多個(gè)實(shí)驗(yàn)表明這樣的方案是可行的,而對原理的進(jìn)一步思考得出,這其實(shí)就是對原始判別器(編碼器)的一種正交分解,并且對正交分解后的自由度的充分利用,所以模型也被稱為“正交 GAN(O-GAN)”。

      小改動就收獲一個(gè)編碼器,何樂而不為呢?歡迎大家試用。

      后記

      事后看,本文模型的思想其實(shí)本質(zhì)上就是“直徑和方向”的分解,并不難理解,但做到這件事情不是那么輕松的。 

      最開始我也一直陷入到的困境中,難以自拔,后來我想了很多技巧,終于在的重構(gòu)損失下也穩(wěn)定住了模型(耗了幾個(gè)月),但模型變得非常丑陋(引入了三重對抗 GAN),于是我著手簡化模型。后來我嘗試用 cos 值用重構(gòu)損失,發(fā)現(xiàn)居然能夠簡單地收斂了,于是我思考背后的原理,這可能涉及到自由度的問題。 

      接著我嘗試將 E(x) 分解為模長和方向向量,然后用模長 ||E(x)|| 做判別器,用 cos 做重構(gòu)損失,判別器的 loss 用 hinge loss。這樣做其實(shí)幾何意義很明顯,說起來更漂亮些,部分?jǐn)?shù)據(jù)集是 work 的,但是通用性不好(CelebA 還行,LSUN 不行),而且還有一個(gè)問題是 ||E(x)|| 非負(fù),無法嵌入到一般的 GAN,很多穩(wěn)定 GAN 的技巧都不能用。 

      然后我想怎么把模長變成可正可負(fù),開始想著可以對模長取對數(shù),這樣小于 1 的模長取對數(shù)后變成負(fù)數(shù),大于 1 的模長取對數(shù)變成正數(shù),自然達(dá)成了目的。但是很遺憾,效果還是不好。后來陸續(xù)實(shí)驗(yàn)了諸多方案都不成功,最后終于想到可以放棄模長(對應(yīng)于方差)做判別器的 loss,直接用均值就行了。所以后來轉(zhuǎn)換成 avg(E(x)),這個(gè)轉(zhuǎn)變經(jīng)歷了相當(dāng)長的時(shí)間。 

      還有,重構(gòu)損失一般認(rèn)為要度量 x 和 G(E(x)) 的差異,而我發(fā)現(xiàn)只需要度量 z 和 E(G(z)) 的差異,這是最低成本的方案,因?yàn)橹貥?gòu)是需要額外的時(shí)間的。最后,我還做過很多實(shí)驗(yàn),很多想法哪怕在 CelebA上都能成功,但LSUN上就不行。所以,最后看上去簡單的模型,實(shí)際上是艱難的沉淀。 

      整個(gè)模型源于我的一個(gè)執(zhí)念:判別器既然具有編碼器的結(jié)構(gòu),那么就不能被浪費(fèi)掉。加上有 IntroVAE 的成功案例在先,我相信一定會有更簡單的方案實(shí)現(xiàn)這一點(diǎn)。前前后后實(shí)驗(yàn)了好幾個(gè)月,跑了上百個(gè)模型,直到最近終于算是完整地解決了這個(gè)問題。 

      對了,除了 IntroVAE,對我啟發(fā)特別大的還有 Deep Infomax  這篇論文,Deep Infomax 最后的附錄里邊提供了一種新的做 GAN 的思路,我開始也是從那里的方法著手思考新模型的。

      論文地址:

      https://www./papers/2870

      參考文獻(xiàn)

      [1] Andrew Brock, Jeff Donahue, Karen Simonyan, Large Scale GAN Training for High Fidelity Natural Image Synthesis, arXiv:1809.11096.

      [2] Tero Karras, Samuli Laine, Timo Aila, A Style-Based Generator Architecture for Generative Adversarial Networks, arXiv:1812.04948.

      [3] Huaibo Huang, Zhihang Li, Ran He, Zhenan Sun, Tieniu Tan, ntroVAE: Introspective Variational Autoencoders for Photographic Image Synthesis, NeurIPS 2018.

      [4] Alec Radford, Luke Metz, Soumith Chintala, Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, ICLR 2016.

      [5] Xi Chen, Yan Duan, Rein Houthooft, John Schulman, Ilya Sutskever, Pieter Abbeel, InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets, NIPS 2016.

      [6] R Devon Hjelm, Alex Fedorov, Samuel Lavoie-Marchildon, Karan Grewal, Phil Bachman, Adam Trischler, Yoshua Bengio, Learning deep representations by mutual information estimation and maximization, ICLR 2019.

      編輯:劉楊珂

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多