【GAN优化】详解SNGAN(频谱归一化GAN)
今天將和大家一起學(xué)習(xí)具有很高知名度的SNGAN。之前提出的WGAN雖然性能優(yōu)越,但是留下一個(gè)難以解決的1-Lipschitz問題,SNGAN便是解決該問題的一個(gè)優(yōu)秀方案。我們將先花大量精力介紹矩陣的最大特征值、奇異值,然后給出一個(gè)簡(jiǎn)單例子來說明如何施加1-Lipschitz限制,最后一部分講述SNGAN。
作者&編輯 | 小米粥
在GAN中,Wasserstein距離比f散度擁有更好的數(shù)學(xué)性質(zhì),它處處連續(xù),幾乎處處可導(dǎo)且導(dǎo)數(shù)不為0,所以我們更多的使用Wasserstein距離。在上一期的結(jié)尾,我們得到critic(判別器)的目標(biāo)函數(shù)為:
本篇所講的SNGAN便是一種“嚴(yán)格”地解決了判別器1-Lipshcitz約束的方法。
1 最大特征值(奇異值)
我們從矩陣的特征值、奇異值開始說起。在線性代數(shù)中,Ax=b表示對(duì)向量x做矩陣A對(duì)應(yīng)的線性變換,可以得到變換后的向量b。如果x為矩陣A對(duì)應(yīng)的特征向量,則有:
即對(duì)特征向量x做矩陣A對(duì)應(yīng)的線性變換的效果是:向量方向不變,僅長(zhǎng)度伸縮λ?倍!比如,對(duì)
兩個(gè)特征值、特征向量分別為:
線性變換作用在特征向量的效果如下:
對(duì)于一般向量x,對(duì)其線性變換的中間運(yùn)算過程可以分解為三步。例如對(duì)于計(jì)算Ax,其中x=[0,1],先將x分解到兩個(gè)特征向量上:
然后在兩個(gè)特征向量方向上分別進(jìn)行伸縮變換,有:
最后再進(jìn)行簡(jiǎn)單的向量合成,可有:
一般的,對(duì)于非奇異n階方陣,有n個(gè)特征向量和與之對(duì)應(yīng)的特征值,故n階方陣A對(duì)應(yīng)的線性變換操作其實(shí)可以分解成三步:將向量x先分解到n個(gè)特征向量對(duì)應(yīng)的方向上(本質(zhì)是求解x在以特征向量組成的基上的表示),分別進(jìn)行伸縮變換(在特征向量組成的基上進(jìn)行伸縮變換),最后進(jìn)行向量合成(本質(zhì)是求解得到的新向量在標(biāo)準(zhǔn)基上的表示)。這其實(shí)就是在描述熟悉的矩陣特征值分解:
特征值是對(duì)應(yīng)于方陣的情況,將其推廣至一般矩陣,便可引出奇異值。奇異值分解形式為:
簡(jiǎn)單說,特征值分解其實(shí)是對(duì)線性變換中旋轉(zhuǎn)、縮放兩種效應(yīng)的歸并,奇異值分解正是對(duì)線性變換的旋轉(zhuǎn)、縮放和投影三種效應(yīng)的一個(gè)析構(gòu)(當(dāng)V的維度大于U的維度時(shí)存在投影效應(yīng))。
說了這么多,其實(shí)是為了直觀地解釋一個(gè)問題,對(duì)于任意單位向量x,Ax的最大值(這里使用向量的2范數(shù)度量值的大小)是多少?顯然,x為特征向量v2時(shí)其值最大,因?yàn)檫@時(shí)的x全部“投影”到伸縮系數(shù)最大的特征向量上,而其他單位向量多多少少會(huì)在v1方向上分解出一部分,在v1方向上只有2倍的伸縮,不如在v2方向上4倍伸縮的值來的更大。這樣,我們可以得到一個(gè)非常重要的式子:
其中σ (A)表示A的最大特征值(奇異值),也稱為A的譜范數(shù)。
2?Lipshcitz限制
所謂Lipshcitz限制,在最簡(jiǎn)單的一元函數(shù)中的形式即:
或者也可以寫成:
直觀上看,它要求f(x)任意兩點(diǎn)之間連線的“斜率”絕對(duì)值小于Lipshcitz常數(shù)k。在WGAN中要求k=1,1-Lipshcitz限制要求保證了輸入的微小變化不會(huì)導(dǎo)致輸出產(chǎn)生較大變化。我們常見的函數(shù),比如分段線性函數(shù)|x|,連續(xù)函數(shù)sin(x)都顯而易見的滿足該限制:
我們以一個(gè)最簡(jiǎn)單的例子來展示一下,如何使用譜范數(shù)施加1-Lipshcitz限制。考慮f(x)=Wx,其中
顯然,f(x)=Wx不滿足1-Lipshcitz限制,利用第一部分的結(jié)論,考慮到
那么若將W整體縮小4倍,
即可以得到:
可以看出,雖然線性函數(shù)f(x)=Wx不滿足1-Lipshcitz限制,但是可使用譜范數(shù)將W的”縮放大小“限定為小于等于1,(有點(diǎn)類似于向量的歸一化操作)這樣處理后的f*(x)可以滿足1-Lipshcitz限制。接下來,我們將對(duì)這條思路進(jìn)行補(bǔ)充、推廣,最后得到SNGAN將是顯而易見的事情了。
3 SNGAN
通常在神經(jīng)網(wǎng)絡(luò)中的每一層,先進(jìn)行輸入乘權(quán)重的線性運(yùn)算,再將其送入激活函數(shù),由于通常選用ReLU作為激活函數(shù),ReLu激活函數(shù)可以用對(duì)角方陣D表示,如果Wx的第i維大于0,則D的第i個(gè)對(duì)角元素為1,否則為0,需要注意D的具體形式與W,x均有關(guān)系,但是D的最大奇異值必然是1。
因此,一般而言,即使神經(jīng)網(wǎng)絡(luò)的輸出是非線性的,但是在x的一個(gè)足夠小的鄰域內(nèi),它一個(gè)表現(xiàn)為線性函數(shù)Wx,W的具體形式與x有關(guān)。真實(shí)的判別器f(x)的函數(shù)圖像在比較小的尺度上來看應(yīng)該是類似這種形式的分段函數(shù):
考慮到對(duì)于任意給定的x,均有:
整體標(biāo)記判別器各層的權(quán)值、偏置項(xiàng):
那么可以得到:
根據(jù):
可得到:
不必像第二部分所描述辦法整體求解W的譜范數(shù),充分利用上述不等式,我們只需要計(jì)算每層的權(quán)值矩陣的最大奇異值,即可完成1-Lipshcitz限制。
綜上,有結(jié)論:對(duì)于任意x
為了嚴(yán)格起見,需要說明,f(x)在x的任意鄰域內(nèi)都滿足1-Lipshcitz限制,則f(x)在定義域上滿足1-Lipshcitz限制。
其實(shí)這里有一個(gè)遺留的小問題,如何快速求解超大矩陣A的最大奇異值。在原論文中使用了一種冪方法(power method),隨機(jī)給兩個(gè)初始變量,然后令:
則經(jīng)過數(shù)次迭代,便有
我們用求最大特征值的例子來輔助理解一下,A對(duì)向量x的線性變換的實(shí)質(zhì)是對(duì)x在不同的特征向量方向進(jìn)行伸縮,由于在不同的特征向量方向進(jìn)行伸縮的幅度不同,造成的結(jié)果是:不斷對(duì)x做A對(duì)應(yīng)的線性變換,則x的方向不斷靠近伸縮幅度最大的特征向量的方向,如下圖
則經(jīng)過足夠次數(shù)的迭代,得到的新的向量方向與伸縮幅度最大的特征向量的方向重合,故每次迭代結(jié)果只差一個(gè)常數(shù),即最大特征值。
[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/
總結(jié)
這篇文章帶領(lǐng)大家一起學(xué)習(xí)了SNGAN,學(xué)習(xí)了特征值和奇異值相關(guān)問題,學(xué)習(xí)如何使用譜范數(shù)解決1-Lipschitz限制,并推導(dǎo)了SNGAN,最后給出了一個(gè)快速求解矩陣最大奇異值的方法。下一期的內(nèi)容將比較“數(shù)學(xué)”一點(diǎn),介紹一個(gè)個(gè)人非常喜歡的統(tǒng)一理論,它將WGAN和諸多GAN納入一個(gè)框架。
下期預(yù)告:IPM與xGAN
GAN群
有三AI建立了一個(gè)GAN群,便于有志者相互交流。感興趣的同學(xué)也可以微信搜索xiaozhouguo94,備注"加入有三-GAN群"。
知識(shí)星球推薦
有三AI知識(shí)星球由言有三維護(hù),內(nèi)設(shè)AI知識(shí)匯總,AI書籍,網(wǎng)絡(luò)結(jié)構(gòu),看圖猜技術(shù),數(shù)據(jù)集,項(xiàng)目開發(fā),Github推薦,AI1000問八大學(xué)習(xí)板塊。
有三AI知識(shí)星球官宣,BAT等大咖等你來撩
【知識(shí)星球】千奇百怪的網(wǎng)絡(luò)結(jié)構(gòu)板塊更新到哪里了?
轉(zhuǎn)載文章請(qǐng)后臺(tái)聯(lián)系
侵權(quán)必究
往期精選
【GAN優(yōu)化】GAN優(yōu)化專欄上線,首談生成模型與GAN基礎(chǔ)
【GAN的優(yōu)化】從KL和JS散度到fGAN
【GAN優(yōu)化】詳解對(duì)偶與WGAN
【技術(shù)綜述】有三說GANs(上)
【模型解讀】歷數(shù)GAN的5大基本結(jié)構(gòu)
【完結(jié)】深度學(xué)習(xí)CV算法工程師從入門到初級(jí)面試有多遠(yuǎn),大概是25篇文章的距離
【完結(jié)】?jī)?yōu)秀的深度學(xué)習(xí)從業(yè)者都有哪些優(yōu)秀的習(xí)慣
【完結(jié)】給新手的12大深度學(xué)習(xí)開源框架快速入門項(xiàng)目
【完結(jié)】總結(jié)12大CNN主流模型架構(gòu)設(shè)計(jì)思想
【AI不惑境】數(shù)據(jù)壓榨有多狠,人工智能就有多成功
【AI不惑境】網(wǎng)絡(luò)深度對(duì)深度學(xué)習(xí)模型性能有什么影響?
【AI不惑境】網(wǎng)絡(luò)的寬度如何影響深度學(xué)習(xí)模型的性能?
【AI不惑境】學(xué)習(xí)率和batchsize如何影響模型的性能?
【AI不惑境】殘差網(wǎng)絡(luò)的前世今生與原理
【AI不惑境】移動(dòng)端高效網(wǎng)絡(luò),卷積拆分和分組的精髓
總結(jié)
以上是生活随笔為你收集整理的【GAN优化】详解SNGAN(频谱归一化GAN)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【知识星球】做作业还能赢奖金,传统图像/
- 下一篇: 【图像分割应用】医学图像分割(三)——肿