生成對抗網路(GAN)的不穩定性,一直都是一個研究熱點。本文通過分析GAN的「健忘「現象,總結出了一個GAN不穩定的原因,最後採用了一個簡單的非監督學習方法來提升GAN的穩定性。
Discriminator可以看作是一個簡單的分類器,區分出真、假兩種類型。為了實現這個目的,直覺上,discriminator必須很好的理解輸入圖片。具體來說,discriminator需要學會如何從輸入圖片中提取出好的feature,幫助其完成分類任務。
實際上,GAN這種獨特的訓練模式,對discriminator分器來說,不是很友好。由於generator在訓練過程中在不斷地更新,導致discriminator的輸入,也在不斷的更新。對於不同分布的輸入圖片,discriminator可能會學出來不同的策略來提取feature。例如,假設generator剛開始只學會了如何生成總體輪廓結構為真的sample(細節紋理還沒學會),此時discriminator可能只會從輪廓結構方面對真假進行判斷。隨著訓練的不斷進行,generator不斷的更新,不同時刻的generator可能偏重的重點不一樣,導致生成的圖片的分布不一樣,最後導致discriminator提取feature的策略可能也不一樣。
從discriminator的角度來看,它要不斷地「忘掉」已經學到的提取feature的方法,不斷地學習新的提取feature的方法。似乎也不能完全怪discrimiator,因為在舊分布圖片集上學到的feature提取方法,在新分布圖片集上,可能已經不再適用了, 所以只能「忘掉」。這可能是GAN不穩定的一個重要原因。
作者用兩個實驗來說明問題
藍色表示GAN的測試結果,綠色表示添加了自監督學習任務的方法(後面會介紹)。
從實驗結果可以看出,從500k開始,藍色表示的discriminator似乎開始「健忘」,性能也開始下降。說明discriminator學到的feature提取方法很不穩定。
2. 跟實驗1的方式相同,修改為在CIFAR10上訓練一個分類器,訓練的時候,依次用CIFAR10中的10個類來訓練,每個類訓練1k個iterations。實驗結果如下:
左圖表示GAN的測試結果,右圖表示添加了自監督學習任務的方法(後面會介紹)。
從左邊的實驗結果可以看出,每次訓練圖片的類型發生變化時,分類器的性能明顯下降。10k個iterations後,看上去像是從頭開始學習,之前學到的方法好像已經全部「忘掉」了。
如何讓discriminator能夠比較穩定的學習出一種feature提取方法,而不是不斷忘記舊方法、學習新方法?
作者受《Unsupervised Representation Learning by Predicting Image Rotations》這篇ICLR 2018文章的啟發,在discriminator中加入了判斷圖片旋轉的無監督分類器,來引導discriminator學出來一個好一點的feature提取方法,提升GAN的穩定性。
具體實現:
從前面給出的實驗結果來看,加上Unsupervised分類器後,性能有所提升。
為何加了判斷圖片旋轉角度的分類器後,網路可以更好的提feature?
《Unsupervised Representation Learning by Predicting Image Rotations》論文的作者假設:如果網路不能很好的理解圖片中包含的信息,網路就不可能很好的判斷出圖片旋轉的角度。
在GAN中,對於discriminator來說,通過約束discriminator讓它能識別出旋轉角度,有助於讓discriminator更好、更全面的理解圖片中包含的信息,從而間接引導discriminator學出來一個通用、穩定的feature提取方法。
文章通過GAN的「健忘現象」進行分析,得出導致「健忘」的一個原因是:discriminator沒有學到一個穩定的特徵提取方法,最後通過引入「預測圖片旋轉角度」這個輔助任務(pretext task)來幫助discriminator學到一個好的提取特徵的方法,提高GAN的穩定性。