【GAN优化】详解GAN中的一致优化问题
GAN的訓練是一個很難解決的問題,上期其實只介紹了一些基本的動力學概念以及與GAN的結(jié)合,并沒有進行過多的深入。動力學是一門比較成熟的學科,有很多非常有用的結(jié)論,我們將嘗試將其用在GAN上,來得到一些有意義的結(jié)果,指導一下我們怎么訓練GAN。
作者&編輯 | 小米粥
本期我們將首先介紹一個有關(guān)于動力學的收斂性命題,然后將GAN運用到上面,接著進行深入分析達到收斂的條件并最終引出了一個比較好的優(yōu)化算法:一致優(yōu)化。
1 一個重要的命題
先不談GAN,先介紹一個特別重要的與動力學收斂性相關(guān)的命題,考慮一個如下形式的函數(shù):
其中h大于0。有這樣一個命題:如果存在一個比較特殊的點(不動點)使得:
而且在該不動點,函數(shù)F(x)的雅可比矩陣F'(x)的所有特征值(非對稱矩陣的特征值為復數(shù))的絕對值均小于1,則從該不動點的一小鄰域內(nèi)的任意一點開始,使用如下形式的數(shù)值迭代法:
則F最終會收斂至:?
為了直觀描述,上述的數(shù)值迭代過程其實是在使用數(shù)值迭代的方式求:y=x和y=x+hG(x)兩個函數(shù)的交點,如下示意:
非常難得有一個好的關(guān)于收斂性的結(jié)論,而且其數(shù)值迭代的方式與實際的GAN訓練方式也吻合,我們考慮將GAN對接到這個結(jié)論中。
2 對接GAN
上一期中,我們已經(jīng)給出了GAN的動力學系統(tǒng)的介紹,為了方便起見,我們將生成器和判別器的目標函數(shù)均寫成max的形式:?
那么對應(yīng)于第一小節(jié)的式子,x對應(yīng)為GAN的參數(shù):
而h可以對應(yīng)為訓練時候的學習速率,G(x)則對應(yīng)為矢量場v:
這樣看來,式子表達的意思就是使用同時梯度下降法進行參數(shù)更新(由于將目標函數(shù)寫成max形式,準確來說是梯度上升法,無傷大雅):
將一般形式與GAN對接起來后,再次考慮之前關(guān)于收斂性的結(jié)論,即如果存在滿足如下形式的點(即不動點),并且在不動點,矢量場v的雅可比矩陣的所有特征值的絕對值均小于1,則從該不動點的某一個鄰域內(nèi)任意一點開始迭代,最終會進入收斂狀態(tài)。
其實前一個條件無非就是說在不動點,v=0,即損失函數(shù)的梯度為0。那么我們可以對GAN的訓練過程進行“檢查”,當出現(xiàn)一個梯度為0的參數(shù)點時,“檢查”其矢量場的雅可比矩陣的特征值是否都在單位圓內(nèi),如果在則GAN的迭代最終會收斂進該點。
3 特征值分析
訓練GAN要找到梯度為0似乎不是那么困難,但是實現(xiàn)第二個條件:在不動點的矢量場v的雅可比矩陣的所有特征值的絕對值均小于1 可能比較困難,我們來詳細分析一下。考慮一般情況下的表達式:
F(x)的雅可比矩陣為:?
對其進行特征值分解,單位矩陣I的特征值是實數(shù)1,而考慮到一般情況下矩陣G'(x)是非對稱矩陣,則其特征值必然是復數(shù),設(shè)G'(x)分解出的特征值為:
F'(x)分解出的特征值為:
通常情況如下圖所示:
特征值很容易跑出到單位圓之外。要保證其絕對值小于1(即在單位圓里),首先要保證a小于0,(a大于等于0時,該條件不可能滿足),如下所示:
即G'(x)分解出的特征值的實部為負數(shù),此時:
也就是說,要想進入收斂狀態(tài),特征值的實部要為負數(shù),且同時要求學習速率h一定要足夠小!其上界取決于特征值。但是這里有一個矛盾點,如果你將學習速率設(shè)置得太小,你的訓練時長將會變得特別長。
同樣地,在GAN中,需要保證矢量場v的雅可比矩陣
的所有特征值的實部為負數(shù)。但是實際中,這個條件是不太可能達到的,尤其是存在實部幾乎為0而虛部的值比較大的情況,而且學習速率要設(shè)置的足夠小。
注意到矢量場v的雅可比矩陣是與生成器和判別器的目標函數(shù)f、g相關(guān)的,考慮調(diào)整一下f和g,使得在不動點處的特征值的實部為負數(shù)。
4 一致優(yōu)化
一致優(yōu)化(Conseensus Optimization)是一種理論上比較好的方法,它做了一點“手腳”使得特征值的實部盡量為負數(shù)。先考慮一般的形式:
其中, γ 大于0,A為可逆矩陣,表達式為:
嚴謹起見,需要說明一下:如果某個x是
的一個不動點,則該x也是
的不動點,這里并沒有因為在式子中添加A(x)而影響了不動點,之前可能在哪里收斂,之后還是可能在那個點收斂。而且在該不動點,
可以看出,相比于第3部分的表達式,新增加的一項會使得特征值向?qū)崝?shù)部的負數(shù)方向偏移(新增項為負定矩陣,其特征值必然為負實數(shù)),如圖所示
如果超參數(shù)γ設(shè)置比較合理,“有希望”保證特征值均落在單位圓內(nèi)。
現(xiàn)在,我們將上述方式對接到GAN中,將生成器和判別器的目標函數(shù)修改為:
其中,?
可以寫成如下形式:
化簡可有:
其雅可比矩陣的表達式為:
根據(jù)之前的結(jié)論,如果γ設(shè)置比較合理,學習速率h足夠小,則其特征值均會落入單位圓內(nèi),參數(shù)隨著不斷更新迭代會進入不動點,也就是說進入納什均衡的狀態(tài)。添加的正則項雖然沒有解決要求足夠小的學習速率的問題,但是“保證”了特征值盡可能落入單位圓中。
最后說明一下,一般GAN中,生成器和判別器的目標函數(shù)符號是相反的,但是我們同時對它們增加相同符號的正則項,在正則項部分上,它們的優(yōu)化目標是一致的,故稱之為一致優(yōu)化。
[1]?Mescheder L , Nowozin S , Geiger A . The Numerics of GANs[J]. 2017.
[2]?Nagarajan V, Kolter J Z, Nagarajan V, et al. Gradient descent GAN optimization is locally stable[J]. 2017.
總結(jié)
這篇文章承接上一篇文章,在GAN中利用動力學的成熟知識,添加了一個正則項,保證了GAN在足夠小的學習速率的情況下能收斂進入納什均衡狀態(tài),是一項非常有價值的工作。下一期的任務(wù)將繼續(xù)延此路線展開。
下期預告:GAN訓練中的正則項
GAN群
有三AI建立了一個GAN群,便于有志者相互交流。感興趣的同學也可以微信搜索xiaozhouguo94,備注"加入有三-GAN群"。
有三AI夏季劃
有三AI夏季劃進行中,歡迎了解并加入,系統(tǒng)性成長為中級CV算法工程師。
轉(zhuǎn)載文章請后臺聯(lián)系
侵權(quán)必究
往期精選
【GAN優(yōu)化】GAN優(yōu)化專欄上線,首談生成模型與GAN基礎(chǔ)
【GAN的優(yōu)化】從KL和JS散度到fGAN
【GAN優(yōu)化】詳解對偶與WGAN
【GAN優(yōu)化】詳解SNGAN(頻譜歸一化GAN)
【GAN優(yōu)化】一覽IPM框架下的各種GAN
【GAN優(yōu)化】GAN優(yōu)化專欄欄主小米粥自述,腳踏實地,莫問前程
【GAN優(yōu)化】GAN訓練的幾個問題
【GAN優(yōu)化】GAN訓練的小技巧
【GAN優(yōu)化】從動力學視角看GAN是一種什么感覺?
【技術(shù)綜述】有三說GANs(上)
【模型解讀】歷數(shù)GAN的5大基本結(jié)構(gòu)
總結(jié)
以上是生活随笔為你收集整理的【GAN优化】详解GAN中的一致优化问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【杂谈】工程能力差,C++水平菜?CUD
- 下一篇: 【每周CV论文推荐】 初学深度学习图像分