详解GAN的谱归一化(Spectral Normalization)
作者丨尹相楠
學校丨里昂中央理工博士在讀
研究方向丨人臉識別、對抗生成網絡
本文主要介紹譜歸一化這項技術,詳細論文參考?Spectral Normalization for Generative Adversarial Networks。
本文主要對論文中的基礎知識和遺漏的細節做出補充,以便于更好地理解譜歸一化。部分內容參考并整合了如下兩篇博客。
http://kaiz.xyz/blog/posts/spectral-norm/
https://christiancosgrove.com/blog/2018/01/04/spectral-normalization-explained.html
Lipschitz Continuity
在 GAN 中,假設我們有一個判別器 D: I→R,其中 I 是圖像空間。如果判別器是 K-Lipschitz continuous 的,那么對圖像空間中的任意 x 和 y,有:
其中 || · || 為 L2 norm,如果 K 取到最小值,那么 K 被稱為 Lipschitz constant。?
直觀地來說,Lipschitz 條件限制了函數變化的劇烈程度,即函數的梯度。在一維空間中,很容易看出 y=sin(x) 是 1-Lipschitz 的,它的最大斜率是 1。?
那么,為什么要使判別器函數具有 Lipschitz continuity 呢?Wasserstein GAN 提出了用 wasserstein 距離取代之前的 KL 散度或者 JS 散度,作為 GAN 判別器的損失函數:
其中 Pr 和 Pg 分別為真實數據和生成數據的分布函數,Wasserstein 距離衡量了這兩個分布函數的差異性。
直觀地理解,就是根據這兩個分布函數分別生成一堆數據 x1, x2, ... , xn 和另一堆數據 y1, y2, ... , yn,然后計算這兩堆數據之間的距離。距離的算法是找到一種一一對應的配對方案 γ~∏(Pr, Pg),把 xi 移動到 yj,求總移動距離的最小值。
由于在 GAN 中, Pr 和 Pg 都沒有顯式的表達式,只能是從里面不停地采樣,所以不可能找到這樣的 γ,無法直接優化公式 (2) 。W-GAN 的做法是根據 Kantorovich-Rubinstein duality,將公式 (2) 轉化成公式 (3),過程詳見以下鏈接:
https://vincentherrmann.github.io/blog/wasserstein/
其中 f 即為判別器函數。只有當判別器函數滿足 1-Lipschitz 約束時,(2) 才能轉化為 (3)。除此之外,正如上文所說,Lipschitz continuous 的函數的梯度上界被限制,因此函數更平滑,在神經網絡的優化過程中,參數變化也會更穩定,不容易出現梯度爆炸,因此 Lipschitz continuity 是一個很好的性質。?
為了讓判別器函數滿足 1-Lipschitz continuity,W-GAN 和之后的 W-GAN GP 分別采用了 weight-clipping 和 gradient penalty 來約束判別器參數。這里的譜歸一化,則是另一種讓函數滿足 1-Lipschitz continuity 的方式。
矩陣的Lipschitz Continuity
眾所周知,矩陣的乘法是線性映射。對線性映射來說,如果它在零點處是 K-Lipschitz 的,那么它在整個定義域上都是 K-Lipschitz 的。
想象一條過零點的直線,它的斜率是固定的,只要它上面任何一點是 K-Lipschitz 的,那么它上面所有點都是 K-Lipschitz 的。因此,對矩陣來說,它滿足 K-Lipschitz 的充要條件是:
對其做如下變換:
其中 <·> 表示兩個向量的內積。由于矩陣是半正定矩陣,它的所有特征值均為非負。我們假設它的特征向量構成的基底為 v1, v2,..., vn,對應的特征值為 λ1, λ2,..., λn,令 x=x1·v1+x2·v2+ ... +xn·vn。那么,公式 (5) 的左半部分可以轉化為:
要使公式 (6) 對任意 xi 恒成立,且 λi 非負,則必有。若 λ1 為最大的特征值,只需要滿足,這里即為矩陣 A 的 spectral norm。?
綜上所述,映射滿足 K-Lipschitz 連續,K 的最小值為。那么,要想讓矩陣 A 滿足 1-Lipschitz 連續,只需要在 A 的所有元素上同時除以即可(觀察公式 (4) 左側是線性映射)。?
通過上面的討論,我們得出了這樣的結論:矩陣 A 除以它的 spectral norm(最大特征值的開根號)可以使其具有 1-Lipschitz continuity。
矩陣的奇異值分解
上文提到的矩陣的 spectral norm 的另一個稱呼是矩陣的最大奇異值。回顧矩陣的 SVD 分解:?
矩陣存在這樣的一種分解:
其中:?
U 是一個 m?× m 的單位正交基矩陣?
Σ 是一個 m?× n 的對角陣,對角線上的元素為奇異值,非對角線上的元素為 0?
V 是一個 n?× n 的單位正交基矩陣
▲?SVD分解
由于 U 和 V 都是單位正交基,因此可以把矩陣乘以向量分成三步:旋轉,拉伸,旋轉。一前一后的兩步旋轉不改變向量的模長,唯一改變向量模長的是中間的拉伸,即與 Σ 相乘的那一步。而矩陣的 Lipschitz continuity 關心的正是矩陣對向量模長的改變,不關心旋轉。
因此,只需要研究中間的 Σ 即可。而 Σ 又是一個對角矩陣,因此,它對向量的模長拉長的最大值,就是對角線上的元素的最大值。也就是說,矩陣的最大奇異值即為它的 spectral norm。?
根據公式 (7) ,以及 SVD 分解中 U 和 V 都是單位正交基,單位正交基的轉置乘以它本身為單位矩陣,有:
因此,只需要求出的最大特征值,再開根號,就求出了矩陣的最大奇異值,也就是矩陣的 spectral norm,和上一小節的推導殊途同歸。
神經網絡的Spectral Norm
對于復合函數,我們有這樣的定理:
而多層神經網絡,正是多個復合函數嵌套的操作。最常見的嵌套是:一層卷積,一層激活函數,再一層卷積,再一層激活函數,這樣層層包裹起來。
激活函數通常選取的 ReLU,Leaky ReLU 都是 1-Lipschitz 的,帶入到 (9) 中相乘不影響總體的 Lipschitz constant,我們只需要保證卷積的部分是 1-Lipschitz continuous 的,就可以保證整個神經網絡都是 1-Lipschitz continuous 的。?
而在圖像上每個位置的卷積操作,正好可以看成是一個矩陣乘法。因此,我們只需要約束各層卷積核的參數 W,使它是 1-Lipschitz continuous 的,就可以滿足整個神經網絡的 1-Lipschitz continuity。
我們已經知道,想讓矩陣滿足 1-Lipschitz continuous,只需要讓它所有元素同時除以它的最大奇異值,或者說是它的 spectural norm。因此,下一步的問題是如何計算 W 的最大奇異值。?
對大矩陣做 SVD 分解運算量很大,我們不希望在優化神經網絡的過程中,每步都對卷積核矩陣做一次 SVD 分解。一個近似的解決方案是 power iteration 算法。
Power Iteration
Power iteration 是用來近似計算矩陣最大的特征值(dominant eigenvalue 主特征值)和其對應的特征向量(主特征向量)的。?
假設矩陣 A 是一個 n?× n 的滿秩的方陣,它的單位特征向量為 v1, v2,..., vn,對應的特征值為 λ1, λ2,...,?λn。那么對任意向量 x=x1·v1+x2·v2+ ... +xn·vn,有:
我們經過 k 次迭代:
由于?λ1,?λ2,...,?λn(不考慮兩個特征值相等的情況,因為太少見了)??芍?#xff0c;經過 k 次迭代后。因此:
也就是說,經過 k 次迭代后,我們將得到矩陣主特征向量的線性放縮,只要把這個向量歸一化,就得到了該矩陣的單位主特征向量,進而可以解出矩陣的主特征值。?
而我們在神經網絡中,想求的是權重矩陣 W 的最大奇異值,根據上面幾節的推導,知道這個奇異值正是最大特征值的開方。因此,我們可以采用 power iteration 的方式求解的單位主特征向量,進而求出最大特征值 λ1。論文中給出的算法是這樣的:
如果單純看分子,我們發現這兩步合起來就是,反復迭代 (13) 中上下兩個式子 ,即可得到矩陣的單位主特征向量。只不過 (13) 的每算“半”步都歸一化一次。
其實這種歸一化并不影響向量的方向收斂到主特征向量的方向,而只影響特征向量前面的系數。而每步歸一化一次的好處是,每步都可以得到單位主特征向量的近似解。?
那么,知道的單位主特征向量后,如何求出最大特征值 λ1?呢?
而將公式 (13) 的第二個式子兩邊同時左乘:
最終,(15) 即為論文中提出的權重矩陣 W 的 spectral norm 公式。?
而在具體的代碼實現過程中,可以隨機初始化一個噪聲向量代入公式 (13) 。由于每次更新參數的 step size 很小,矩陣 W 的參數變化都很小,矩陣可以長時間維持不變。
因此,可以把參數更新的 step 和求矩陣最大奇異值的 step 融合在一起,即每更新一次權重 W ,更新一次和,并將矩陣歸一化一次(除以公式 (15) 近似算出來的 spectral norm)。?
具體代碼見:
https://github.com/christiancosgrove/pytorch-spectral-normalization-gan
點擊以下標題查看更多往期內容:?
Airbnb實時搜索排序中的Embedding技巧
圖神經網絡綜述:模型與應用
近期值得讀的10篇GAN進展論文
F-Principle:初探理解深度學習不能做什么
自然語言處理中的語言模型預訓練方法
兩行代碼玩轉Google BERT句向量詞向量
AI Challenger 2018 機器翻譯參賽總結
Google BERT應用之紅樓夢對話人物提取
深度長文:NLP的巨人肩膀(上)
NLP的巨人肩膀(下):從CoVe到BERT
#投 稿 通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢??答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
??來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
? 投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
?
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點擊 |?閱讀原文?| 獲取最新論文推薦
總結
以上是生活随笔為你收集整理的详解GAN的谱归一化(Spectral Normalization)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 能量视角下的GAN模型:GAN=“挖坑”
- 下一篇: Byte Cup 2018国际机器学习竞