【GAN优化】从动力学视角看GAN是一种什么感觉?
今天講述的內容是GAN與動力學,這是一個非常好玩、非常新鮮的視角。考慮到很多人微積分和線性代數等知識的涉獵不多,我將會對涉及的內容都做出基本說明,也并不會涉及過深入的東西,然后爭取串成一個故事,擴展一下大家的視野。
作者&編輯 | 小米粥
最近這幾期我們都一直在講GAN的訓練,最開始說明了實際訓練GAN面臨的幾個理論和實踐上的問題,然后接著從博弈論角度解釋了GAN和納什均衡,還說了幾個幫助網絡收斂的技巧。
這期將從動力學的視角看一下GAN,首先介紹基本概念常微分方程和歐拉法,然后介紹非常經典的梯度下降動力學系統,最后將GAN表示成動力學系統,并給出了一些比較好的結論。其實無論是什么視角,都是為了能更好的解決訓練收斂的問題。
1 常微分方程與歐拉法
很多人平時接觸的方程大部分是代數方程、超越方程等等,比如:
其解是一個或幾個數值,例如上式的解為:
而微分方程是一種稍微“抽象”的方程,它是表示未知函數y(x)、未知函數的導數y`(x)以及自變量x關系的方程,比如:
其解(如果可解)應是一個函數或者函數族,例如上式的解析解為:
未知函數y(x)是一元函數的稱為常微分方程,若是多元函數則稱為偏微分方程。方便起見,將自變量x寫成時間t,則可以用微分方程來表示某些隨時間變化的規律或者動力學系統:
需要說明,對于常微分方程,只有某些特殊類型的方程能求得解析解,大部分是很難求得解析解的,所以實際中主要依靠數值法來近似計算求得數值解,以一個簡單的具有初始值常微分方程為例:
其解析解為:?
而數值解只能給出部分、離散的自變量、因變量近似數值對,例如
歐拉法便是一種非常經典的一階數值方法。給定初始值和一系列固定間隔h的離散時間點,則可迭代計算:
得到微分方程的數值解。根據遞推關系:
可以看出,歐拉法是先從初始點開始,在每一點做切線并沿當前切線推進至下一點,最后連接成一條折線,這種比較“粗糙”的方式精度是比較差的。上面的例子使用歐拉法得到的解如藍線所示:
2 梯度下降法
在機器學習或者神經網絡中,我們大量使用梯度下降法,其實它也可以看作是一個動力系統。給定關于訓練集的某種損失函數:
一般情況下,對相當復雜的損失函數,不太可能一步到位直接求解參數的最優解,只能通過某些算法“慢慢地”去尋找最優解,比如使用經典的梯度下降算法,參數不斷更新,在參數空間留下一條美妙的軌跡,其行為與動力系統十分相像。
考慮一個由常微分方程表示的動力系統:
使用歐拉法求解該動力系統,則有如下迭代關系:
如果把固定時間間隔h視為學習速度learning rate,則這就是大家非常熟悉的梯度下降算法的表達式,到此應該看得出,所謂梯度下降算法從動力學角度來看,就是使用歐拉法求解某個動力學系統。
當然,我們并不單單致力于能求解微分方程的數值解或者得到參數的軌跡,更重要的是,希望參數θ能夠收斂到某個穩定點,動力系統達到某個穩定的狀態,損失函數能夠收斂。
3 GAN的動力學系統
在GAN中,我們設定生成器的優化目標為最大化f,而判別器的優化目標為最大化g,動力系統的參數由兩部分組成:
那么動力學微分方程可寫為:
整個動力學仍然采用梯度下降法進行迭代更新,若使用歐拉法求解GAN動力學系統,則可理解為使用同時梯度下降算法:
即在一個時間節點上,同時更新生成器和判別器的參數,其參數軌跡如下:
需要說明一下,通常在GAN中我們使用的是交替梯度下降,兩者有一些區別(但是很多情況下并不影響最終的結論),即依次交替更新生成器和判別器的參數,其參數軌跡為:
上一期也說過,GAN并不是在尋找全局最優解,而是在尋找一個局部最優解。我們希望動力學系統的軌跡可以隨著不斷迭代而進入一個局部收斂點,也就是納什均衡,定義納什均衡點為:?
容易證明對于零和博弈(f=-g),在納什均衡點,其雅可比矩陣:
是負定的。反過來,可以通過檢查雅可比矩陣的性質來判斷是否達到了局部收斂,如果在某個點,其一階導數為0
且其雅可比矩陣為負定矩陣,則該點為納什均衡點。
我們知道半負定矩陣的特征值均小于等于0,則:如果在某一點的雅可比矩陣的特征值為均負實數,則在足夠小的學習速率的前提下,訓練過程收斂;如果特征值出現復數,則訓練一般而言不會實現局部收斂;如果復數特征值的實部很小而虛部比較大,此時需要某種非常苛刻的學習速率才能達到收斂狀態。
[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.
總結
這篇文章首先介紹了常微分方程以及使用歐拉法得到常微分方程的數值解,然后從動力學的系統重新看梯度下降算法,最后從動力學視角重新表述了GAN,并且給出幾個有用的結論。
下期預告:GAN訓練中的正則項
GAN群
有三AI建立了一個GAN群,便于有志者相互交流。感興趣的同學也可以微信搜索xiaozhouguo94,備注"加入有三-GAN群"。
知識星球推薦
有三AI知識星球由言有三維護,內設AI知識匯總,AI書籍,網絡結構,看圖猜技術,數據集,項目開發,Github推薦,AI1000問八大學習板塊。
轉載文章請后臺聯系
侵權必究
往期精選
【GAN優化】GAN優化專欄上線,首談生成模型與GAN基礎
【GAN的優化】從KL和JS散度到fGAN
【GAN優化】詳解對偶與WGAN
【GAN優化】詳解SNGAN(頻譜歸一化GAN)
【GAN優化】一覽IPM框架下的各種GAN
【GAN優化】GAN優化專欄欄主小米粥自述,腳踏實地,莫問前程
【GAN優化】GAN訓練的幾個問題
【GAN優化】GAN訓練的小技巧
【技術綜述】有三說GANs(上)
【模型解讀】歷數GAN的5大基本結構
總結
以上是生活随笔為你收集整理的【GAN优化】从动力学视角看GAN是一种什么感觉?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【杂谈】一招,同时可视化18个开源框架的
- 下一篇: 【NLP】有三AI-NLP专栏首季总结与