新智元推薦 來源:OpenAI 編譯:文強 【新智元導讀】OpenAI最新提出的可逆生成模型Glow,可以使用相對少的數(shù)據(jù),快速生成高清的逼真圖像,具有GAN和VAE所不具備的精確操作潛在變量、需要內(nèi)存少等優(yōu)勢。 OpenAI剛剛在博客介紹了他們的最新成果——Glow,一種使用可逆1x1卷積的可逆生成模型。 Glow 可以生成逼真的高分辨率圖像,支持高效采樣,并且可以自動學習圖像中屬性特征,比如人的五官。 先來看效果,加了胡子的Hinton,笑容調(diào)到最高,眼神也看起來更亮: 下圖是使用Glow操縱兩名研究人員面部圖像的屬性。模型在訓練的時候并沒有給出眼睛、年齡等屬性標簽,但自己學習了一個潛在空間,其中某些方向?qū)?yīng)胡須密度,年齡,發(fā)色等屬性的變化。 人臉混合過度的效果也十分自然: 這是使用30,000個高分辨率面部數(shù)據(jù)集進行訓練后,Glow模型中的樣本,可以說很逼真了。如果不說明,應(yīng)該有不少人會覺得是真人照片。 再放大來看,這個效果至少是不輸給GAN的: Glow模型生成一個256 x 256的樣本,在NVIDIA 1080 Ti GPU上只需要大約130ms。使用 reduced-temperature模型采樣結(jié)果更好,上面展示的例子是溫度0.7的結(jié)果。 Glow是一種可逆生成模型(reversible generative model),也被稱為基于流的生成模型(flow-based generative model)。目前,學界還很少關(guān)注基于流的生成模型,因為GAN和VAE這些顯而易見的原因。 OpenAI的研究人員在沒有標簽的情況下訓練基于流的模型,然后將學習到的潛在表示用于下游任務(wù),例如操縱輸入圖像的屬性。這些屬性可以是面部圖像中的頭發(fā)顏色,也可以是音樂的音調(diào)或者文本句子的情感。 上述過程只需要相對少量的標記數(shù)據(jù),并且可以在模型訓練完成后完成(訓練時不需要標簽)。使用GAN的工作需要單獨訓練編碼器。而使用VAE的方法僅能確保解碼器和編碼器數(shù)據(jù)兼容。Cycle-GAN雖然可以直接學習表示變換的函數(shù),但每次變換都需要進行重新訓練。 訓練基于流的生成模型操縱屬性的簡單代碼: OpenAI研究人員表示,這項工作是建立在非線性成分估計(Dinh L. et, NICE: Non-linear Independent Components Estimation)和RealNVP(Dinh L. et, Density estimation using Real NVP)的基礎(chǔ)上。 他們的主要貢獻是增加了可逆的1x1卷積,并且刪除了RealNVP的其他組件,從而簡化了整體架構(gòu)。 RealNVP架構(gòu)包含兩種類型的層:一種是有棋盤格masking的層,一種是有channel-wise masking的層。OpenAI去掉了前一種棋盤格masking,簡化了整體結(jié)構(gòu)。 在Glow模型的工作中,具有channel-wise masking的層不斷重復下列步驟:
將這些層鏈接起來,讓A更新B,B更新A,然后A再更新B,以此往復。這種雙向信息流非常rigid。研究人員發(fā)現(xiàn),通過將步驟(1)的反向排列改變?yōu)椋ü潭ǖ模﹕huffle 排列還能改善模型性能。 使用1x1卷積的效果要顯著好于逆轉(zhuǎn)和Shuffle 此外,他們還將批歸一化(BN)換成了一個激活歸一化層(activation normalization layer)。這個層能夠轉(zhuǎn)變和放大激活。因此,能將大圖像最小的批量大小縮小到1,并擴大模型的大小。 這個架構(gòu)結(jié)合了多種優(yōu)化,例如梯度檢查點(gradient checkpointing),使研究人員能夠比平常更大規(guī)模地訓練基于流的生成模型。他們還使用Horovod在多臺機器的集群上訓練模型,上面演示中使用的模型在5臺機器上訓練,每臺有8個GPU。使用這種設(shè)置,他們訓練了具有超過一億個參數(shù)的模型。 OpenAI研究人員表示,他們在這項工作中表明,可以訓練基于流的模型(flow-based)來生成逼真的高分辨率圖像,并且學習可以輕松用于下游任務(wù)(如數(shù)據(jù)操作)的潛在表示。 基于流的生成模型有以下優(yōu)點:
他們建議未來可以繼續(xù)探索這兩個方向: 自回歸模型和VAE在對數(shù)似然性方面比基于流的模型表現(xiàn)更好,但它們分別具有采樣低效和推理不精確的缺點。未來,可以將基于流的模型、VAE和自回歸模型結(jié)合起來,權(quán)衡彼此優(yōu)勢,這將是一個有趣的方向。 改進架構(gòu)來提高計算效率和參數(shù)效率。為了生成逼真的高分辨率圖像,面部生成模型使用200M規(guī)模參數(shù)和大約600個卷積層,這需要花費很高的訓練成本。深度較小的模型在學習長時間依賴(long-range dependencies)方面表現(xiàn)較差。使用self attention結(jié)構(gòu),或者用漸進式訓練擴展到高分辨率,可以讓訓練流模型的計算成本更低。 編譯來源:https://blog./glow/ |
|