日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

详解GAN的谱归一化(Spectral Normalization)

發布時間:2024/10/8 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解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(不考慮兩個特征值相等的情況,因為太少見了)。可知,經過 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。