「GAN優化」詳解SNGAN(頻譜歸一化GAN)
今天將和大家一起學習具有很高知名度的SNGAN。之前提出的WGAN雖然效能優越,但是留下一個難以解決的1-Lipschitz問題,SNGAN便是解決該問題的一個優秀方案。我們將先花大量精力介紹矩陣的最大特徵值、奇異值,然後給出一個簡單例子來說明如何施加1-Lipschitz限制,最後一部分講述SNGAN。
作者 | 小米粥
編輯 | 小米粥
在GAN中,Wasserstein距離比f散度擁有更好的數學性質,它處處連續,幾乎處處可導且導數不為0,所以我們更多的使用Wasserstein距離。在上一期的結尾,我們得到critic(判別器)的目標函式為:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/2e0e29d7ead58f4e8d1af574e8e4a5d7d6f2a32ada27f4f1b1251207cc8929ae.jpg)
本篇所講的SNGAN便是一種“嚴格”地解決了判別器1-Lipshcitz約束的方法。
1 最大特徵值(奇異值)
我們從矩陣的特徵值、奇異值開始說起。線上性代數中,Ax=b表示對向量x做矩陣A對應的線性變換,可以得到變換後的向量b。如果x為矩陣A對應的特徵向量,則有:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/9b06f053df89ac854419fce15eccc0ced4b8c671345bf3f5ccdbfcf573dcde0c.jpg)
即對特徵向量x做矩陣A對應的線性變換的效果是:向量方向不變,僅長度伸縮λ 倍!比如,對
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/75d49ae118520fce99898ac3d629e73d0ce0a6873d8995fc682028712118fa3d.jpg)
兩個特徵值、特徵向量分別為:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/8357a86dec82212c0a12f34fdebe31b3aa0ea0db0a098b31fd87566a9016334f.jpg)
線性變換作用在特徵向量的效果如下:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/78a86bf4566df24102753fe83a4325ba09821251ebd87dc48e5f0b31f991ccc4.jpg)
對於一般向量x,對其線性變換的中間運算過程可以分解為三步。例如對於計算Ax,其中x=[0,1],先將x分解到兩個特徵向量上:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/8f4fb6e0ea482e50c3fd265450687e499fc127efc49d7cff21c05d104d9ce433.jpg)
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/c8d5acdbdd0c8a89d6a9a6d8417f64caa3df804b64142f87bd6e6e7badc63932.jpg)
然後在兩個特徵向量方向上分別進行伸縮變換,有:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/e20f4bccbeaeaa6bac114c9572fb2b054d63b1763d69f99c3496640725997a24.jpg)
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/61912822f5afbad7ab20aeeb917efae25d2f5664f4d59e458167a4cf9566dbed.jpg)
最後再進行簡單的向量合成,可有:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/9f7d09f536d44d25f120c42b8493e260705f7e10d16950d36b77d6d8215d1653.jpg)
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/e0d0e11ab88e41408027e42b43951e34b91b3b83cc9c3c3ba69f213b9a735f51.jpg)
一般的,對於非奇異n階方陣,有n個特徵向量和與之對應的特徵值,故n階方陣A對應的線性變換操作其實可以分解成三步:將向量x先分解到n個特徵向量對應的方向上(本質是求解x在以特徵向量組成的基上的表示),分別進行伸縮變換(在特徵向量組成的基上進行伸縮變換),最後進行向量合成(本質是求解得到的新向量在標準基上的表示)。這其實就是在描述熟悉的矩陣特徵值分解:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/ea2c4547391a36e89eb789b6ade880414e75c21f24117bf36f6338893ab3bebf.jpg)
特徵值是對應於方陣的情況,將其推廣至一般矩陣,便可引出奇異值。奇異值分解形式為:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/37765304d976f68fa312ec5ccdf03ca35eca816720663df892f399b2649cb8e7.jpg)
簡單說,特徵值分解其實是對線性變換中旋轉、縮放兩種效應的歸併,奇異值分解正是對線性變換的旋轉、縮放和投影三種效應的一個析構(當V的維度大於U的維度時存在投影效應)。
說了這麼多,其實是為了直觀地解釋一個問題,對於任意單位向量x,Ax的最大值(這裡使用向量的2範數度量值的大小)是多少?顯然,x為特徵向量v2時其值最大,因為這時的x全部“投影”到伸縮係數最大的特徵向量上,而其他單位向量多多少少會在v1方向上分解出一部分,在v1方向上只有2倍的伸縮,不如在v2方向上4倍伸縮的值來的更大。這樣,我們可以得到一個非常重要的式子:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/7009c3ea9901da53802aff3362b694c54002417dfde85cc779f62c0c90850ac5.jpg)
其中σ (A)表示A的最大特徵值(奇異值),也稱為A的譜範數。
2 Lipshcitz限制
所謂Lipshcitz限制,在最簡單的一元函式中的形式即:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/ef4a095204ae9acb8880909bc758965b5aab3765b51c678fce93e3cbbd301221.jpg)
或者也可以寫成:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/5246a0d48386b8f0d12bc0d05e1b9fb5cc853c5c79c55a3f1075873695fb21b8.jpg)
直觀上看,它要求f(x)任意兩點之間連線的“斜率”絕對值小於Lipshcitz常數k。在WGAN中要求k=1,1-Lipshcitz限制要求保證了輸入的微小變化不會導致輸出產生較大變化。我們常見的函式,比如分段線性函式|x|,連續函式sin(x)都顯而易見的滿足該限制:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/cbf4993d65cd66b1731894da2233da3bf9b68b6ab06c0fdf8054aeeed356d5c0.jpg)
我們以一個最簡單的例子來展示一下,如何使用譜範數施加1-Lipshcitz限制。考慮f(x)=Wx,其中
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/dc9657ccc9cb32eb3ef947b3def32065efb36b121e7cd967df49872b1c083786.jpg)
顯然,f(x)=Wx不滿足1-Lipshcitz限制,利用第一部分的結論,考慮到
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/a47568eaa3a8ae5735ee423b56f06e50bca501090153e0654bc9f7358c392eff.jpg)
那麼若將W整體縮小4倍,
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/0d7133f7db08d1d46279e316119f995a2337aad6dc99cb03265f5bf1cf177918.jpg)
即可以得到:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/2cc35119667029fe8a1a03297fa777ce1ff799fef6e56a8d4d7f5ae04a753929.jpg)
可以看出,雖然線性函式f(x)=Wx不滿足1-Lipshcitz限制,但是可使用譜範數將W的”縮放大小“限定為小於等於1,(有點類似於向量的歸一化操作)這樣處理後的f*(x)可以滿足1-Lipshcitz限制。接下來,我們將對這條思路進行補充、推廣,最後得到SNGAN將是顯而易見的事情了。
3 SNGAN
通常在神經網路中的每一層,先進行輸入乘權重的線性運算,再將其送入啟用函式,由於通常選用ReLU作為啟用函式,ReLu啟用函式可以用對角方陣D表示,如果Wx的第i維大於0,則D的第i個對角元素為1,否則為0,需要注意D的具體形式與W,x均有關係,但是D的最大奇異值必然是1。
因此,一般而言,即使神經網路的輸出是非線性的,但是在x的一個足夠小的鄰域內,它一個表現為線性函式Wx,W的具體形式與x有關。真實的判別器f(x)的函式影像在比較小的尺度上來看應該是類似這種形式的分段函式:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/9a2cef554b9b304a3b5fbc2df8fe7ddb0986f2eb1083aa8bc366c623e9de9e27.jpg)
考慮到對於任意給定的x,均有:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/9a34b7c411f5aefe59d6a54d73546f34ea81f004dd6ce601bcacebc850cc48c1.jpg)
整體標記判別器各層的權值、偏置項:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/a65efc0b9a1afdc7652bf0eb852976f29f605c8cf17bfe2a64aab92421a3cf75.jpg)
那麼可以得到:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/9cdceef0b0c2832335e6b7a51645cacba6ab52eca1d626209f1e65fa045e8211.jpg)
根據:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/b95ec1ec8b46e9395b7c47b0d00ba8da46519b6ffcf501b9227e13e73416cef5.jpg)
可得到:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/b285a92e7dffb376fc0db7f72b95ac9173bfd0ee5c33c2c369aba5a327022c57.jpg)
不必像第二部分所描述辦法整體求解W的譜範數,充分利用上述不等式,我們只需要計算每層的權值矩陣的最大奇異值,即可完成1-Lipshcitz限制。
對於每層的權值矩陣,處理為:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/fed8ee2a48dea9e0c491560076006e3541f1cfdb3c20fce7c6298e08a0c3339a.jpg)
綜上,有結論:對於任意x
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/4d06c4f5cb7f7665e35ea853ec1a34e83994df066a3cb13aa2be8c6b8a1d6f7f.jpg)
為了嚴格起見,需要說明,f(x)在x的任意鄰域內都滿足1-Lipshcitz限制,則f(x)在定義域上滿足1-Lipshcitz限制。
其實這裡有一個遺留的小問題,如何快速求解超大矩陣A的最大奇異值。在原論文中使用了一種冪方法(power method),隨機給兩個初始變數,然後令:
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/85ffb5915040b630577faef77d16bc1cac287dbd2f7db9d7ea41387db03ffaa7.jpg)
則經過數次迭代,便有
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/6b87647dbd6e025f7075be6b873f99a8647b00e7164667fd4619f173bc2fd5bc.jpg)
我們用求最大特徵值的例子來輔助理解一下,A對向量x的線性變換的實質是對x在不同的特徵向量方向進行伸縮,由於在不同的特徵向量方向進行伸縮的幅度不同,造成的結果是:不斷對x做A對應的線性變換,則x的方向不斷靠近伸縮幅度最大的特徵向量的方向,如下圖
![「GAN優化」詳解SNGAN(頻譜歸一化GAN)](https://i.iter01.com/images/111ef297b604c0405ffea9ba41ba816ac33f1723339a95d7d2e620a40c5651d7.jpg)
則經過足夠次數的迭代,得到的新的向量方向與伸縮幅度最大的特徵向量的方向重合,故每次迭代結果只差一個常數,即最大特徵值。
[1] Yoshida, Yuichi , and T. Miyato . "Spectral Norm Regularization for Improving the Generalizability of Deep Learning." (2017).
[2] Miyato, Takeru , et al. "Spectral Normalization for Generative Adversarial Networks." (2018).
[3]Wasserstein GAN and the Kantorovich-Rubinstein Duality. https://vincentherrmann.github.io/blog/wasserstein/
總結
這篇文章帶領大家一起學習了SNGAN,學習了特徵值和奇異值相關問題,學習如何使用譜範數解決1-Lipschitz限制,並推導了SNGAN,最後給出了一個快速求解矩陣最大奇異值的方法。下一期的內容將比較“數學”一點,介紹一個個人非常喜歡的統一理論,它將WGAN和諸多GAN納入一個框架。
https://www.toutiao.com/a6717657249738654222/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2655032/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 「GAN優化」GAN訓練的小技巧優化
- 「GAN優化」如何選好正則項讓你的GAN收斂優化
- 「GAN優化」從動力學視角看GAN是一種什麼感覺?優化
- 優化GAN的分佈的梯度問題,WGAN優化梯度
- 解讀生成對抗網路(GAN) 之U-GAN-IT
- 「GAN優化」什麼是模式崩潰,以及如何從優化目標上解決這個問題優化模式
- GAN實戰筆記——第一章GAN簡介筆記
- Wasserstein GAN
- GAN入門
- MySQL之SQL優化詳解(一)MySql優化
- GAN原理,優缺點、應用總結
- 李弘毅老師GAN筆記(三),Unsupervised Conditional GAN筆記
- GAN網路從入門教程(二)之GAN原理
- 能量視角下的GAN模型:GAN=“挖坑”+“跳坑”模型
- GAN歸來:模型大幅簡化,訓練更穩定,逆襲擴散模型,AI社群瘋傳模型AI
- 能量視角下的GAN模型(二):GAN=“分析”+“取樣”模型
- 李巨集毅GAN學習(四)GAN的基本理論
- 論文解讀(GAN)《Generative Adversarial Networks》
- 「完結」12篇GAN的優化文章大盤點,濃濃的數學味兒優化
- 令人拍案叫絕的 Wasserstein GAN,徹底解決GAN訓練不穩定問題
- MongoDB索引優化詳解MongoDB索引優化
- BAIR提出MC-GAN,使用GAN實現字型風格遷移AI
- 【雜談】GAN最成功的3個商業化落地領域,你是否瞭解過?
- GAN生成影象綜述
- GAN生成影像綜述
- GAN實戰筆記——第三章第一個GAN模型:生成手寫數字筆記模型
- MongoDB索引與優化詳解MongoDB索引優化
- 利用NAS尋找最佳GAN:AutoGAN架構搜尋方案專為GAN打造架構
- GAN 論文大彙總
- GAN訓練技巧彙總
- CNN,GAN,AE和VAE概述CNN
- Wasserstein GAN and the Kantorovich-Rubinstein Duality
- 下一個GAN?OpenAI提出可逆生成模型GlowOpenAI模型
- 氣泡排序及優化詳解排序優化
- [MySQL 優化] Explain 之 type 詳解MySql優化AI
- MySQL之SQL優化詳解(二)MySql優化
- MySQL之SQL優化詳解(三)MySql優化
- 影像歸一化