這篇文章簡單列舉一下我認為最近這段時間中比較重要的 GAN 進展論文,這基本也是我在學習 GAN 的過程中主要去研究的論文清單。
生成模型之味
GAN 是一個大坑,尤其像我這樣的業餘玩家,一頭扎進去很久也很難有什麼產出,尤其是各個大公司拼算力搞出來一個個大模型,個人幾乎都沒法玩了。但我總覺得,真的去碰了生成模型,才覺得自己碰到了真正的機器學習。這一點,不管在影像中還是文字中都是如此。所以,我還是願意去關注生成模型。
當然,GAN 不是生成模型的唯一選擇,卻是一個非常有趣的選擇。在影像中至少有 GAN、Flow、PixelRNN/PixelCNN 這幾種選擇,但要說潛力,我還是覺得 GAN 才是最具前景的,不單是因為效果,主要是因為它那對抗的思想。
而在文字中,事實上 Seq2Seq 機制就是一個機率生成模型了,而 PixelRNN 這類模型,實際上就是模仿著 Seq2Seq 來做的,當然也有用 GAN 做文字生成的研究(不過基本上都涉及到了強化學習)。也就是說,其實在 NLP 中,生成模型也有很多成果,哪怕你主要是研究 NLP 的,也終將碰到生成模型。
好了,話不多說,還是趕緊把清單列一列,供大家參考,也作為自己的備忘。
拿效果來說話
話在前頭
不嚴謹地說,目前在 GAN 中,基本上都是效果說話。不管你多麼完美的理論,只要你實驗不能生成高畫質圖,都很難被人接受;你再醜陋的結果,只要你實驗效果夠好,能生成高畫質大圖,大家都得圍著你轉。
GAN 模型的一個標誌性事件,是 NVIDIA 去年搞出來的 Progressive Growing GANs,它首次實現了 1024*1024 的高畫質人臉生成。要知道,一般的 GAN 在生成 128*128 人臉時就會有困難,所以 1024 解析度的生成稱得上是一個突破。而下面列舉的一些論文,都是在自己的實驗中做到了 1024 的人臉生成。單是這個實驗結果,就值得我們去關注一下這些論文。
當然,生成 1024 圖除了需要模型的進步,還需要很大的算力,因此一般人/實驗室都很難做到。關注這些論文,並不是要我們去復現這麼大的圖生成,而是因為這些模型能生成這麼大的圖,必然有它值得我們借鑑的地方,甚至我們可以從中明白到 GAN 的瓶頸所在,從而讓我們在自己的研究中少走彎路。
論文清單
這篇文章就是前面說的首次實現了 1024 人臉生成的 Progressive Growing GANs,簡稱 PGGAN,來自 NVIDIA。
顧名思義,PGGAN 透過一種漸進式的結構,實現了從低解析度到高解析度的過渡,從而能平滑地訓練出高畫質模型出來。論文還提出了自己對正則化、歸一化的一些理解和技巧,值得思考。當然,由於是漸進式的,所以相當於要串聯地訓練很多個模型,所以 PGGAN 很慢。
這篇文章有很多對 GAN 訓練穩定性的數學推導,最終得到了比 WGAN-GP 更簡單的梯度懲罰項,關注 GAN 訓練穩定性的同學可以參考。
除了 1024 人臉,這篇文章也做了很多其他資料集的實驗,效果都挺不錯,而且都是直接端到端訓練,不需要漸進式結構。我唯一困惑的是,這個懲罰項,不就是 WGAN-div 中的一個特例嗎?為什麼論文沒有提到這一點?
這是個會“反省”的 VAE,透過對抗來改進了 VAE,從而能生成高畫質圖片,並且能同時得到編碼器和生成器。
除了能生成1024的高畫質圖,更值得一提的是,這篇文章在構思上非常精妙。因為能同時得到編碼器和生成器的模型不算獨特,比如 BiGAN 就能做到,但是 IntroVAE 獨特之處在於它能直接利用了 encoder 作為判別器,不需要額外的判別器,也就是直接省去了 1/3 的引數量。這背後更深層次的原因,值得我們去細細分析和回味。
這就是大名鼎鼎的 BigGAN。這篇文章雖然沒有提供 1024 的人臉生成結果,但是它提供了 128、256、512 的自然場景圖片的生成結果。要知道自然場景圖片的生成可是比 CelebA 的人臉生成要難上很多倍,既然它連 512 的自然場景圖片都可以生成了,我們自然不懷疑它能輕鬆生成 1024 的人臉。
BigGAN 在網上已經有很多科普介紹了,不再重複。論文還提出了自己的一些正則化技巧,並分享了大量的調參經驗(調整哪些引數會有好的/壞的改變),非常值得參考。
這篇文章透過資訊瓶頸來控制判別器的擬合能力,從而起到正則作用,穩定了 GAN 的訓練。資訊瓶頸的簡介可以參考我的這篇文章。總的來說,在普通有監督訓練中一切防止過擬合的手段,理論上都可以用在判別器中,而資訊瓶頸也算是防止過擬合的一種手段。
當然,從標題就可以知道,論文也不滿足於只用在 GAN 中,除了 1024 的人臉圖生成實驗,論文還做了模擬學習、強化學習等實驗。
這就是前幾天發出來的新的 GAN 生成器架構,被很多文章稱之為 GAN 2.0,依舊是 NVIDIA,依舊是 PGGAN 的作者,依舊是 PGGAN 的模式。只不過生成器的架構換了,人家在一年前就已經生成了 1024 圖,這次肯定也不例外了。
這個新的生成器架構,據說是借鑑了風格遷移的模型,所以叫 Style-Based Generator。我讀了一下,其實它差不多就是條件 GAN(CGAN)的架構,但是把條件和噪聲互換了。簡單來說,就是把噪聲當作條件,把條件當作噪聲,然後代入到 CGAN 中。
看論文的效果圖,這種思維上的轉換的效果還是很不錯的,我自己也試著實現了一下,能 work,但是有點 mode collapse,大家還是等開源吧。
順便一提的是,一年前也是 PGGAN 的作者給我們帶來了 CelebA HQ 資料集,現在還是他們給我們帶來了新資料集 FFHQ。據說資料集和程式碼都將在明年一月開源,讓我們拭目以待。
穩住訓練再說
話在前頭
與有監督學習的任務不同,有監督學習中,一般只要設計好模型,然後有足夠多的資料,足夠的算力,就可以得到足夠好的模型;但 GAN 從來都不是設計模型就完事了,它是一個理論、模型、最佳化一體的事情。
從框架的角度來看,發展到 WGAN 後 GAN 的理論框架基本也就完備了,後面都只是不痛不癢的修補(包括我的 GAN-QP);從模型架構來看,DCGAN 奠定了基礎,後來發展的 ResNet + Upsampling 也成為了標準框架之一,至於剛出來的 Style-Based Generator 就不說了,所以說模型架構基本上也成熟了。
那剩下的是什麼呢?是最佳化,也就是訓練過程。我覺得,要想真正掌握 GAN,就得仔細研究它的最佳化過程,也許得從動力學角度來仔細分析它的訓練軌跡。這可能涉及到微分方程解的存在性、唯一性、穩定性等性質,也可能涉及到隨機最佳化過程的知識。總而言之,需要把最佳化過程也納入到 GAN 的分析中,GAN 才可能真正完備起來。
下面的這些論文,從不同的角度分析了 GAN 的訓練問題,並給出了自己的解決方案,值得一讀。
論文清單
本文透過加噪聲的方式推匯出了 GAN 的正則項,推導過程理論上適用於一切 f-GAN。從論文效果圖看,結果還是不錯的。
本文提出了 TTUR 的訓練策略,大概意思就是:原來我們每次迭代都是用相同的學習率將判別器和生成器交替訓練不同的次數,現在可以考慮用不同的學習率將各自訓練一次,這樣顯然訓練起來會更省時。
不過我粗略看了一下,儘管論文理論多,但是它理論基礎卻是另外一篇現成的文章 Stochastic approximation with two time scales [1],可以說論文只是反覆在用這個現成的理論基礎,略微單調。
在前面已經介紹過這篇文章了,但這裡還是再放一次,因為實在是太經典。感覺是研究 GAN 訓練穩定性必看的文章,作者從微分方程角度來理解 GAN 的訓練問題。
在穩定性分析的過程中,這篇文章主要還引用了兩篇文章,一篇是它的“前傳”(同一作者),叫做 The Numerics of GANs [2],另一篇是 Gradient descent GAN optimization is locally stable [3],都是經典之作。
本文透過譜歸一化給判別器實現 L 約束,應該說是目前實現 L 約束最漂亮的方法了。目前譜歸一化也用得很廣,所以值得一提。相關介紹也可以參考我之前的文章。
本文往 WGAN-GP 中新增了一個新的正則項,這個正則項的想法很樸素,就是直接把 L 約束(差分形式)作為正則項,跟 GAN-QP 的判別器多出來的二次項差不多。看論文的曲線圖,訓練比純 WGAN-GP 要穩定些。
歡迎繼續補充
這次的論文清單就這麼多了,剛好湊夠了十篇。限於筆者閱讀量,不排除有疏漏之處,如果還有其他推薦的,歡迎在評論中提出。
相關連結
[1] Vivek S.Borkar. Stochastic approximation with two time scales. Systems & Control Letters Volume 29, Issue 5, February 1997, Pages 291-294.
[2] Lars Mescheder, Sebastian Nowozin, Andreas Geiger. The Numerics of GANs. NIPS 2017.
[3] Vaishnavh Nagarajan, J. Zico Kolter. Gradient descent GAN optimization is locally stable. NIPS 2017.