GANs正在多個層麵有所突破
作者:inFERENce
翻譯:餘誌文
去年我一直在研究如何更好地調整GANs中的不足,但因為之前的研究方向隻關注了損失函數,完全忽略了如何尋找極小值問題。直到我看到了這篇論文才有所改變:
我參考了Mar的三層分析,並在計算層麵上仔細考慮了這個問題:我們這樣做的最終目標是什麼?我相信GANs在這個層麵已經有所突破了,因為他們試圖優化錯誤的東西或尋求不存在的平衡等。這就是為什麼我喜歡f-GANs、Wasserstein GANs、實例噪聲,而不大喜歡在優化層麵上做一些修複的嚐試:比如DCGAN或改進技術(Salimans等,2016)等原因。我認為在大多數深度學習中,算法層麵上隨機梯度的下降是大家所認可的。你可以去提升它,但是如果沒有突破性進展,它通常不需要修複。
但閱讀本文後,我有一個啟示:
GANs可以同時在計算層麵和算法層麵有所突破
即使我們修複了目標,我們也沒有算法工具來尋找實際解決方案。
文章摘要:
結合我目前在研究的內容,我將通過一個不同的視覺來分析該論文
介紹關於收斂與不收斂的矢量場的概念,並強調其一些屬性然後描述Mescheder等人文章提出的 consensus、optimization等方麵的一些結論:在複雜的不收斂矢量場與理想的收斂矢量場之間進行插值
最後,正如我研究的期望那樣,我還強調了另一個重要的細節,一個在文中沒有討論的:我們應該如何在小批量設置中做到所有這些?
簡介:從GAN到矢量場
GANs可以被理解為博弈遊戲(一個各不相互合作的雙人遊戲)。一個玩家控製θ並希望最大化其收益f(θ,φ),另一個控製φ並尋求最大化g(θ,φ)。當兩個玩家都不再會通過改變參數來提高收益的時候遊戲就達到了納什均衡。因此,現在我們必須要設計一個算法來幫助達到這個納什均衡。
但目前GANs似乎存在兩個問題:
1.計算層麵:納什平衡(Nash equilibrium)達不到可能會退化。
2.算法層麵:我們依然還沒有找到可靠的工具來達到納什均衡(即使我們現在的算法能很好的收斂到局部納什均衡)。
Mescheder等在2017年非常成功地解決了第二個問題,為了找到納什均衡,我們最好的工具是同步梯度上升算方法,一個由以下遞歸定義的迭代算法:
其中
是第t次迭代的結果,h是步長,v(x)是如下向量場:
起初大家覺得這是一個重要的發現,可能看起來還挺矛盾的:將GANs訓練視為神經網絡訓練的一個特殊例子是很自然的,但實際上它是另外一種方法。
同步梯度下降算法(simultaneous gradient descent)是梯度下降算法的概括,而不是特例。
不收斂的矢量場
普通梯度下降算法與同步梯度下降算法(simultaneous gradient descent)的一個關鍵區別在於,前者隻能夠收斂到向量場的固定點,後者可以處理不收斂的向量場。因此,我想花大部分在這篇文章裏談論這個差異以及這些術語是什麼意思。
矢量場是一個簡單的函數,
,輸入為矢量
並輸出具有相同維數的另一矢量
。
我們經常使用的矢量場是標量函數的梯度,例如其中
可以是訓練對象,能量或損失函數。這些類型的矢量場是非常特別的。它們被稱為收斂的矢量場,可以簡單的解釋為“沒有什麼太複雜的因子”。標量函數的梯度和收斂的矢量場是一對一映射的:當且僅當向量v是收斂的時候,則存在標量φ的梯度等於v。
我們經常在機器學習中遇到的則是另一個種(但不經常將其視為矢量場)是由自動編碼器定義的矢量場。 AE的輸入一些向量x,並返回另一個相同大小的向量v(x)。比如在圖5是Alain和Bengio在201年對2D數據的自動編碼去噪聲的矢量場訓練,效果相當不錯:
由AE定義的矢量場不一定是收斂的,這意味著可能會產生一些不確定性的奇奇怪怪的問題。會有什麼樣的奇怪的事情產生呢?讓我們來看一個極端的例子:恒定卷積矢場,這是一個非常典型的不收斂矢量場例子:
這個向量場在零和遊戲中經常出現(譯者注:zero-sum game就是指“零和博弈”,指參與博弈的各方,在嚴格競爭下,一方的收益必然意味著另一方的損失,博弈各方的收益和損失相加總和永遠為“零”,雙方不存在合作的可能),其中。這和Salimans等人在2016年論文“Improved Techniques for Training GANs”中第3節裏麵提到的對抗生成網絡的框架裏的一個小例子非常相似。如同在圓圈中的矢量場,可以很明顯的看到它 場中的旋轉。事實上,如果你沿著這個矢量場(同時這也是梯度下降的方向)的箭頭,你最終會進入圈子裏,如圖所示:
可以把此矢量比作與埃舍爾的《不可思議城堡》(譯者注:埃舍爾,荷蘭 版畫家,因其繪畫中的數學性而聞名,有興趣的可以看看《不可能存在的存在》:https://www.360doc.com/content/17/0705/08/27794381_668875548.shtml)。在埃舍爾的“不可能存在的城堡”中,仆人認為他們正在上台階或者是在下台階,但實際上他們所做的都是圍繞著圈子。當然如果要將Escher的城堡構建成是一個真正的3D 模型則是不可能的。類似地,不可能將卷積矢量場表示為標量函數的梯度。
一個壞消息是,即使旋度場在處具有平衡點,同步梯度下降算法也將永遠發現不了。雖然我們我們共認梯度下降算法能在局部收斂到最小值,但是同步下降算法一般不能收斂到均衡點。它會陷入一個死循環,基於動量的變量甚至可以積累無限的動量直到完全崩潰。
Mescheder等人提出的解決方案是從原始構造一個收斂的矢量場,如下: 因為我們將它定義為標量函數L的梯度,這顯然是收斂的。很容易看出,這個新的矢量場-∇L具有與v相同的固定點。下麵我繪製了對應於上述旋度場的收斂矢量場-∇L:
這和我們之前熟悉的一樣,L的梯度下降要收斂到局部最小值,即固定點v。現在的問題是,我們無法控製我們收斂到什麼樣的固定點。我們要尋求一個正平衡,但是-δL不能區分鞍點(既不是極大值點也不是極小值點的臨界點)或平衡,或負平衡或正平衡之間。如下圖說明了矢量場
在左側的圖片中,我注釋了平衡點和鞍點。中間的圖片說明了收斂鬆弛點L,其中鞍點和平衡都轉向局部最小值。
那我們該怎麼辦?我們可以簡單地采用原始v和它相關的-∇L進行線性組合,這種組合仍然是不收斂的矢量場看起來像旋度場(即上圖第三個圖片)。
通過這兩個矢量場的組合,我們可能會得到一個稍微更好的模型,但仍然是不收斂的矢量場。衡量矢量場的效果的一種方法是查看其雅可比矩陣v'(x)的特征值。雅可比矩陣是矢量場的導數,對於收斂的矢量場,它被稱為海森矩陣或二階導數(譯者注:關於雅可比矩陣和海森矩陣可以參閱網絡資料——https://jacoxu.com/jacobian%E7%9F%A9%E9%98%B5%E5%92%8Chessian%E7%9F%A9%E9%98%B5/)。與總是對稱的海森矩陣不同,非收斂場的雅可比是非對稱的,它可以具有複雜的特征值。例如旋度場的雅可比矩陣是
其特征值完全是虛構的+ i和-i。
Mesceder等人通過將v與-∇L線形組合,可以控製組合場的特征值(詳見論文),如果我們選擇足夠大的γ,則同步梯度下降算法將收斂到平衡。這真的是太讚了(6666666)!
可悲的是,當我們增加γ時,我們也會像以前一樣引入虛假的均衡。這裏所謂的平衡,其實際上隻是v的鞍點。所以我們不能一味的關注γ,我們必須找到一個合理的中間地帶。這是這種方法的局限性,目前尚不清楚實際中極限是多少。
我想再提一下這篇文章中沒有討論的一種方法,但是我認為對於任何想要達成一致優化效果的學者來說都是非常重要的:我們如何通過隨機優化和小批量來實現的?雖然本文是在講一般的應用場景,在對抗生成網絡中,f和g實際上是數據點之間的一些回報的平均值,例如,這樣對於L我們有如下表達式:
這樣做的問題是,如何從一個樣本中小批量的構建一個無偏差的估計量並不是一個簡單的問題。在Jensen不等式中,上限是指簡單的對每個數據點逐步的進行規範,然後平均將給出一個有偏差的估計。雖然在小批量處理的平均梯度計算標準中仍然存在偏差,但它可以更接近這個上限值。要構建一個無偏估計,我們可以使用以下表達式:
平均指標(average norm)和總體方差(population variance )可以以無偏差的方式估計。 我已經和作者討論過了,我會邀請他們發表評論,說明他們在實驗中是如何做到的。 他們還承諾會在會議集影印版的論文中描述更多的細節。
這篇論文讓我開拓了視野,本來我一直認為在我們對抗生成網絡中使用的梯度下降算法隻是梯度下降的一種特殊情況,但實際上它隻是是一個泛化,梯度下降的良好屬性在這裏並不能被認為是理所當然有的。希望這篇文章可以給大家帶來一個對抗生成網絡的滿意答案。
本文來自雲棲社區合作夥伴“大數據文摘”,了解相關信息可以關注“大數據文摘”微信公眾號
最後更新:2017-10-24 16:03:52