譜歸一化(Spectral Normalization)的理解
《Spectral Normalization for Generative Adversarial Networks》【1】是Takeru Miyato在2018年2月發表的一篇將譜理論應用於Gan上的文章,在2017年,本文的第3作者Yuichi Yoshida就發表了一篇著名的譜範數正則(Spectral Norm Regularization)的文章【2】,如有興趣也可參看我的上一篇Blog:https://blog.csdn.net/StreamRock/article/details/83539937 【1】、【2】兩篇文章從不同的角度討論了:引數矩陣的譜範數對多層神經網路的泛化的影響,並分別給出了兩個不同的應對方法:前者對Discriminator矩陣引數進行歸一化處理,後者可以加入任意多層網路(在更新梯度時加入了譜範數正則項)。本文將在【1】的閱讀理解基礎上,探討其實現時的方法。
一、Gan的Lipschitz穩定性約束
Gan好是好,但訓練難,主要體現在:1)模式坍塌,即最後生成的物件就只有少數幾個模式;2)不收斂,在訓練過程中,Discriminator很早就進入了理想狀態,總能perfectly分辨出真假,因此無法給Generator提供梯度資訊,而導致訓練無法進行下去。Martin Arjovsky在《Towards principled methods for training generative adversarial networks》【4】、《Wasserstein GAN》【5】文章中,對Gan難訓練的原因做了詳細的討論,並給出一種新的Loss定義,即Wasserstein Distance: 實際Wasserstein Distance的計算是通過它的變形來完成的: (2)式只要求 滿足Lipschitz約束即可,在Gan中,判別器的對映函式可充當(2)式中的 ,於是加入此一約束的Gan網路有了一個新的名稱:WGan。 引入Wasserstein Distance,將傳統Gan轉變為WGan是有許多好處的,因為Wasserstein Distance具有如下優點: 1、, 等號在分佈完全重合時成立; 2、是對稱的,較常用的 KL Divergence 的不對稱,有優勢; 3、即使兩個分佈 的支撐不相交,亦可以作為衡量差異的距離,並在滿足一定條件下可微,具備了後向傳輸的能力。 當 WGan 的 Discriminator 採用了這種距離來訓練後,可以消除傳統Gan訓練時出現的收斂問題,使訓練過程變得穩定。另外,要實施此策略也很簡單,只需在傳統Gan的Discriminator的引數矩陣上加上Lipschitz約束即可,其它的幾乎不用改。
Lipschitz約束簡單而言就是:要求在整個 的定義域內有 其中,M是一個常數。滿足公式(3)的函式,具體表現為:函式變化不會太快,其梯度總是有限的,即使最劇烈時,也被限制在小於等於M的範圍。
WGan首先提出Discriminator的引數矩陣需要滿足Lipschitz約束,但其方法比較簡單粗暴:直接對引數矩陣中元素進行限制,不讓其大於某個值。這種方法,是可以保證Lipschitz約束的,但在削頂的同時,也破壞了整個引數矩陣的結構——各引數之間的比例關係。針對這個問題,【1】提出了一個既滿足Lipschitz條件,又不用破壞矩陣結構的方法——Spectral Normalization。
二、多層神經網路的分析
為簡便分析,可將Discriminator看作是多層網路,因為CNNs可看作是特殊的多層網路。對於多層網路的第n層,其輸入與輸出關係可以表示為: 其中, 是該層網路的非線性啟用函式,可採用ReLU; 是網路引數矩陣, 是網路的偏置,為推導方便,對 進行省略處理,則(4)式可寫為: 其中 是對角矩陣,表示ReLU的作用,當其對應輸入為負數時,對角元素為0;當其對應輸入為正數時,對角元素為1。於是,多層神經網路(假設是N層)輸入輸出關係可以寫成: Lipschitz約束是對 的梯度提出的要求: 此處 表示矩陣W的譜範數,它的定義如下: 是矩陣W的最大奇異值,表示為,對於對角矩陣D,有 ,由此,(7)可表示為: 為使 滿足Lipschitz約束,可對(7)進行歸一化: