「GAN優化」詳解SNGAN(頻譜歸一化GAN)

AIBigbull2050發表於2019-08-27



今天將和大家一起學習具有很高知名度的SNGAN。之前提出的WGAN雖然效能優越,但是留下一個難以解決的1-Lipschitz問題,SNGAN便是解決該問題的一個優秀方案。我們將先花大量精力介紹矩陣的最大特徵值、奇異值,然後給出一個簡單例子來說明如何施加1-Lipschitz限制,最後一部分講述SNGAN。

作者 | 小米粥

編輯 | 小米粥

在GAN中,Wasserstein距離比f散度擁有更好的數學性質,它處處連續,幾乎處處可導且導數不為0,所以我們更多的使用Wasserstein距離。在上一期的結尾,我們得到critic(判別器)的目標函式為:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

本篇所講的SNGAN便是一種“嚴格”地解決了判別器1-Lipshcitz約束的方法。

1 最大特徵值(奇異值)

我們從矩陣的特徵值、奇異值開始說起。線上性代數中,Ax=b表示對向量x做矩陣A對應的線性變換,可以得到變換後的向量b。如果x為矩陣A對應的特徵向量,則有:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

即對特徵向量x做矩陣A對應的線性變換的效果是:向量方向不變,僅長度伸縮λ 倍!比如,對

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

兩個特徵值、特徵向量分別為:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

線性變換作用在特徵向量的效果如下:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

對於一般向量x,對其線性變換的中間運算過程可以分解為三步。例如對於計算Ax,其中x=[0,1],先將x分解到兩個特徵向量上:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

然後在兩個特徵向量方向上分別進行伸縮變換,有:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

最後再進行簡單的向量合成,可有:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

一般的,對於非奇異n階方陣,有n個特徵向量和與之對應的特徵值,故n階方陣A對應的線性變換操作其實可以分解成三步:將向量x先分解到n個特徵向量對應的方向上(本質是求解x在以特徵向量組成的基上的表示),分別進行伸縮變換(在特徵向量組成的基上進行伸縮變換),最後進行向量合成(本質是求解得到的新向量在標準基上的表示)。這其實就是在描述熟悉的矩陣特徵值分解:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

特徵值是對應於方陣的情況,將其推廣至一般矩陣,便可引出奇異值。奇異值分解形式為:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

簡單說,特徵值分解其實是對線性變換中旋轉、縮放兩種效應的歸併,奇異值分解正是對線性變換的旋轉、縮放和投影三種效應的一個析構(當V的維度大於U的維度時存在投影效應)。

說了這麼多,其實是為了直觀地解釋一個問題,對於任意單位向量x,Ax的最大值(這裡使用向量的2範數度量值的大小)是多少?顯然,x為特徵向量v2時其值最大,因為這時的x全部“投影”到伸縮係數最大的特徵向量上,而其他單位向量多多少少會在v1方向上分解出一部分,在v1方向上只有2倍的伸縮,不如在v2方向上4倍伸縮的值來的更大。這樣,我們可以得到一個非常重要的式子:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

其中σ (A)表示A的最大特徵值(奇異值),也稱為A的譜範數。

2 Lipshcitz限制

所謂Lipshcitz限制,在最簡單的一元函式中的形式即:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

或者也可以寫成:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

直觀上看,它要求f(x)任意兩點之間連線的“斜率”絕對值小於Lipshcitz常數k。在WGAN中要求k=1,1-Lipshcitz限制要求保證了輸入的微小變化不會導致輸出產生較大變化。我們常見的函式,比如分段線性函式|x|,連續函式sin(x)都顯而易見的滿足該限制:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

我們以一個最簡單的例子來展示一下,如何使用譜範數施加1-Lipshcitz限制。考慮f(x)=Wx,其中

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

顯然,f(x)=Wx不滿足1-Lipshcitz限制,利用第一部分的結論,考慮到

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

那麼若將W整體縮小4倍,

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

即可以得到:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

可以看出,雖然線性函式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)

考慮到對於任意給定的x,均有:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

整體標記判別器各層的權值、偏置項:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

那麼可以得到:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

根據:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

可得到:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

不必像第二部分所描述辦法整體求解W的譜範數,充分利用上述不等式,我們只需要計算每層的權值矩陣的最大奇異值,即可完成1-Lipshcitz限制。

對於每層的權值矩陣,處理為:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

綜上,有結論:對於任意x

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

為了嚴格起見,需要說明,f(x)在x的任意鄰域內都滿足1-Lipshcitz限制,則f(x)在定義域上滿足1-Lipshcitz限制。

其實這裡有一個遺留的小問題,如何快速求解超大矩陣A的最大奇異值。在原論文中使用了一種冪方法(power method),隨機給兩個初始變數,然後令:

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

則經過數次迭代,便有

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

我們用求最大特徵值的例子來輔助理解一下,A對向量x的線性變換的實質是對x在不同的特徵向量方向進行伸縮,由於在不同的特徵向量方向進行伸縮的幅度不同,造成的結果是:不斷對x做A對應的線性變換,則x的方向不斷靠近伸縮幅度最大的特徵向量的方向,如下圖

「GAN優化」詳解SNGAN(頻譜歸一化GAN)

則經過足夠次數的迭代,得到的新的向量方向與伸縮幅度最大的特徵向量的方向重合,故每次迭代結果只差一個常數,即最大特徵值。

[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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章