隨著柯潔與AlphaGo結束以後,大家是不是對人工智慧的底層奧祕越來越有興趣?
深度學習已經在影像分類、檢測等諸多領域取得了突破性的成績。但是它也存在一些問題。
首先,它與傳統的機器學習方法一樣,通常假設訓練資料與測試資料服從同樣的分佈,或者是在訓練資料上的預測結果與在測試資料上的預測結果服從同樣的分佈,而實際上這兩者存在一定的偏差。另一個問題是深度學習的模型(比如卷積神經網路)有時候並不能很好地學到訓練資料中的一些特徵。深度對抗學習(deep adversarial learning)就是為了解決上述問題而被提出的一種方法。
學習的過程可以看做是我們要得到一個模型,為了建模真實的資料分佈,生成器學習生成實際的資料樣本,而鑑別器學習確定這些樣本是否是真實的。如果這個鑑別器的水平很高,而它無法分清它們之間的區別,那麼就說明我們需要的模型具有很好的表達或者預測能力。
本文回顧了從傳統機器學習,到wGAN的邏輯發展過程,讓讀者對歷史發展有個清晰的認識,並提供了wGAN的程式碼實現,是一篇很好的學習wGAN的入門材料。
作者 | Michael Dietz
編譯 | AI100(rgznai100)
對抗學習是深度學習中最火的一個領域。網站arxiv-sanity的最近最流行的研究領域列表上,許多都是對抗學習,本文同樣也是一篇講對抗學習的文章。
在這篇文章中,我們主要學習以下三個方面的內容:
-
為什麼我們應該關注對抗學習
-
生成對抗網路GANs(General Adversarial Networks) 和 它面臨的挑戰
-
能解決這些挑戰的Wasserstein GAN和 改進的穩定訓練Wasserstein GAN的方法,還包括了程式碼實現。
從傳統機器學習到深度學習
我在UIUC上“模擬訊號與系統”課程的時候,教授在一開始就信誓旦旦的說:“這個課程將是你們上的最重要的課程,抽象是工程裡面最重要的概念。”
康奈爾大學的課程裡面也有“解決複雜問題的方法就是抽象,也就是隱藏細節資訊。抽象遮蔽掉無用的細節。為了設計一個複雜系統,你必須找出哪些是你想暴露給其他人的,哪些是你想隱藏起來的。暴露給其他人的部分,其他人可以進行設計。暴露的部分就是抽象。”
深度神經網路中的每層就是資料的抽象表示,層和層之間有依賴關係,最終形成一個層次結構。每一層都是上一層的一個更高階的抽象。給定一組原始資料和要解決的問題,然後定義一個目標函式來評估網路輸出的答案,最終神經網路就能通過學習到一個最優的解。
因此,特徵是神經網路自己學習得來的。但是在傳統的機器學習中,特徵和演算法都是人工定義的。
現在的資料的特徵、結構、模式都是網路自我學習的,而不是像傳統機器學習那樣人工定義。所以以前無法實現的AI的演算法現在可行了,並且在某些方面超過了人類。
從深度學習到深度對抗學習
很多年前,我學習過拳擊。我的拳擊教練不讓新手問問題,說新手不知道問什麼問題,連問的問題都是錯誤的,會得到沒用的答案,會專注於錯誤的東西,越學越錯。
Robert Half說過“會問問題和會解題一樣,都需要一定的水平”
對抗學習的奇妙之處在於所有的東西都是從資料中學習得到的,包括要解決的問題,最終的答案以及評估答案的標準—目標函式。傳統的深度學習中,是由人來決定要解決什麼問題,人來決定用什麼目標函式做評估。
Deep‘ Mind公司用AlphaGo證明了深度對抗學習的厲害之處。在圍棋比賽中,AlphaGo可以自己創造新的下法和招數。這開創了圍棋的新紀元,突破了過去幾千年的一個瓶頸,達到了新的高度。AlphaGo能做到這點是因為它能自己給自己打分,可以隨時計算當前的局勢的分數,而不用預先人工定義和預程式設計。這樣,AlphaGo自己和自己下了幾百萬局的比賽。聽起來很像對抗學習吧?
AlphaGo不僅僅是暴力破解,而是真正掌握了圍棋比賽,學到了圍棋的招式。之所以這樣,是因為它沒有被人類束縛,既沒有得到人類先驗的輸入,也不受我們對問題域理解的侷限。無法想象,當我們把這些成果應用到實際生活中,AI會如何改造農業、醫療等等。但是這一定會發生。
生成對抗網路GAN
Richard Feynman說“如果要真正理解一個東西,我們必須要能夠把它創造出來。”
正是這句話激勵著我開始學習GANs。GANs的訓練過程就是兩個神經網路自己在作對抗,通過對抗不斷的學習。當然學習是在原始資料的基礎上學習。
生成器通過對原始資料的分佈進行建模,學習如何生成近似資料;而判別器用來判斷資料是生成器生成的資料還是原始的真實的資料。這樣生成器就能重新創造出原始資料的近似。我們相信為了能夠理解一個東西,我們要能重新創造這個東西,所以GAN是非常有價值的,我們的努力也是值得的。
如果我們能成功使得GAN達到納什均衡(完美的判別器也不能識別資料到底是真實資料還是生成資料),我們就能夠把這個成果應用到幾乎任何事情上,並且還能夠有最好的效能。
存在的問題
GANs很難優化,並且訓練過程不穩定。網路結構必須設計的非常好,生成器和判別器之間必須有個很好的協調,才能使得訓練過程收斂。這些問題中,最顯著的就是失去樣本多樣性(mode dropping, 即生成器只從很小一部分的資料集中學習)。還有由於GANs的學習曲線基本沒什麼意義,因此很難除錯。
雖然如此,仍然通過GANs得到了最先進的一些成果。但是就是因為這些問題,GANs的應用被限制住了。
解決方法
Alex J. Champandard說“一個月內,傳統的訓練GANs的方法會被當做黑暗時代的方法”。
GANs的訓練目標是生成資料和真實資料的分佈的距離差的最小化。
最開始使用的是Jensen-Shannon散度。但是,Wasserstein GAN(wGAN)文章在理論和實際兩個方面,都證明了最小化推土距離EMD(Earth Mover’s distance)才是解決上述問題的最優方法。當然在實際計算中,由於EMD的計算量過大,因此使用的是EMD的合理的近似值。
為了使得近似值有效,wGAN在判別器(在wGAN中使用了critic一詞,和GAN中的discriminator是同一個意思)中使用了權重剪裁(weight clipping)。但是正是權重剪裁導致了上述的問題。
後來對wGAN的訓練方法進行了改進,它通過在判別器引入梯度懲罰(gradient penalty)使得訓練穩定。梯度懲罰只要簡單的加到總損失函式中的Wasserstein距離就可以了。
歷史上第一次,終於可以訓練GAN而幾乎不用超引數調優了。其中包括了101層的殘差網路和基於離散資料的語言模型。
Wasserstein距離的一個優勢就是當判別器改進的時候,生成器能收到改進的梯度。但是在使用Jensen-Shannon散度的時候,當判別器改進的時候,產生了梯度消失,生成器無法學習改進。這個也是產生訓練不穩定的主要原因。
如果想對這個理論有深入理解,我建議讀一下下面兩個文章:
- Wasserstein GAN
- Wasserstein GANs的改進的訓練方法
隨著新的目標函式的引入,我看待GANs的方式也發生了變化:
傳統的GAN(Jensen-Shannon散度)下,生成器和判別器是競爭關係,如下圖。
在wGAN(Wasserstein距離)下,生成器和判別器是協作關係,如下圖。
程式碼實現
結論
對抗學習的網路不受我們對問題域理解的任何限制,沒有任何先驗知識,網路就是從資料中學習。
下一篇文章中,我們將利用生成器學習得到的資料表示來進行影像分類。
文章點評
非監督學習是通往真正人工智慧的方向。GAN能自己生成特徵、問題、評估函式,是近年來深度學習的一個突破。而wGAN解決了GAN已有的問題,“一個月內改變行業”。是最新的深度學習的發展。當然本文雖然介紹了歷史的邏輯演進,但是介紹過於簡單,還需要閱讀更多的文章來進一步理解。
譯文地址:https://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==&mid=2247486238&idx=1&sn=8470fd5f72003f92fba94dc56efaa292