自 2014 年提出以來,生成對抗網路(GAN)已經成為深度學習領域裡最為重要的方向之一。其無監督學習的特性有助於解決按文字生成影像、提高圖片解析度、藥物匹配、檢索特定模式的圖片等多種任務。近日,GAN 的提出者,谷歌大腦研究科學家 Ian Goodfellow 在問答平臺上面向所有人進行了 Q&A 活動,向我們解答了有關 GAN 的背景、技術、流派,以及一些有趣的問題,我們對本次活動的內容進行了整理。
Gfred:有傳言說你是在一家酒吧裡想出生成對抗網路(GAN)的,真的假的?
Ian Goodfellow:這是真的,並不是謠言而已。我曾在一些採訪中介紹過當時的經歷:
Wired:https://www.wired.com/2017/04/googles-dueling-neural-networks-spar-get-smarter-no-humans-required/
NVIDIA Blog:https://blogs.nvidia.com/blog/2017/06/08/ai-podcast-an-argument-in-a-bar-led-to-the-generative-adversarial-networks-revolutionizing-deep-learning/
Gautam Ramachandra:能否介紹一下為實現目標函式所採用的函式導數所涉及的步驟,以及,GAN 中是否採用了貝葉斯理論?
上述目標函式導數如下:
這些方程來自 NIPS 2016 上的 Tutorial《Generative Adversarial Networks》(https://arxiv.org/pdf/1701.00160.pdf)在文章的第 46 和 47 頁,能不能幫我完成目標函式的函式導數步驟?
Ian Goodfellow:在 AMA 中我可能沒有足夠時間來完成所有 LaTex 格式函式推導的過程,不過你可以在深度學習書中找到一些有用的資訊:http://www.deeplearningbook.org/contents/inference.html
大部分你需要知道的內容在方程 19.46 裡。
一旦將該方程應用於 J(D),你就有了一個表示式,而且不需要知道任何有關函式導數的東西。
Avhirup Chakraborty:目前是否存在研究生成模型可遷移性的論文和工作?例如:我有一個用於生成貓和狗圖片的模型,我可以利用前面的一些層級來生成狼和老虎的圖片。
Ian Goodfellow:我還不知道目前有這樣的研究,但我認為這種思路是可行的。對於生成器來說,後面的一些層(接近輸出端的)更可能用在其他任務上。
Anshuman Suri:這可能有一點偏離主題了——你認為重新思考深度學習中「神經元」的工作方式是目前唯一一種解決對抗樣本問題的可行思路嗎?在你的一些影片中,你提到了一些這種通用樣本的存在,因為模型的「線性」(與許多人所說的「非線性」相反)。我們目前的神經網路研究路線是錯誤的嗎?還是說一些結合了完美的啟用函式、資料增強/防禦的模型就可以解決所有問題?
Ian Goodfellow:這個問題沒有偏離我們的主題,因為 GAN 的鑑別器需要對於生成器製造的對抗性輸入具有魯棒性。
我確實認為目前我們使用的神經元在面臨對抗樣本的時候難以保持穩健,但我不認為這是唯一的問題。最近的一些論文,如《Adversarial Spheres》(https://arxiv.org/abs/1801.02774)認為,為了確保分類器的安全性,我們確實需要從基礎上重新思考自己的策略,而不是僅僅重新訓練其他型別的模型。Geoffrey Hinton 等人提出的 Capsule 確實在防禦對抗樣本的時候強於普通模型(https://openreview.net/forum?id=HJWLfGWRb)。我們尚不清楚這是防禦的最佳方式,目前還沒有一種防禦對抗樣本和業內最強攻擊方式的對抗性評測。
Foivos Diakogiannis:GAN 和強化學習(RL)是否有什麼相似之處?據我淺顯的理解,我認為 GAN 上的生成器-鑑別器和強化學習中的代理-環境相互作用的方式非常相近,我的思考是對的嗎?
Ian Goodfellow:我或許沒有資格評價強化學習,但是我認為 GAN 是使用強化學習來解決生成建模的一種思路。GAN 案例的一些奇怪的地方在於獎勵函式在行動中是完全已知和可微分的,獎勵是非穩態的,獎勵也是代理策略的一種函式。但我確實認為它基於強化學習。
Jakub Langr:你最近使用 Jacobian claping 用於訓練穩定性的論文令人著迷。你是否可以提供:
另一種解釋 Jacobian clamping 的方式?
稍稍解釋一下該工作的重要性。GAN 的訓練有好有壞,但有時我們難以理解其中的全部,因為幾乎所有人都已認識到 WGAN 的貢獻,但至今卻沒有多少超過它的研究。
我發現 GAN 訓練方式的陣營有兩到三個:你和 OpenAI、谷歌的同事;Mescheder、Sebastian Nowozin 與其他微軟研究院等機構的研究人員。你也是這樣認為的嗎?
Ian Goodfellow:第三個問題,不,我認為有更多的陣營。FAIR/NYU 也有一些重要研究結果,事實上,確實是 FAIR/NYU 首先提出了 LAPGAN,真正生成了引人注目的高解析度影像——這是 GAN 第一次得到媒體的大規模報導。另外一個非常重要的陣營是 Berkeley 和 NVIDIA 陣營,他們專注於高解析度影像、影片、無監督翻譯等方向。我不確定你所說的「陣營」是什麼意思。如果你的意思是使用 GAN 的不同方式,那麼是的,這些團隊都是以不同方向為目標的。很多時候「陣營」意味著團體之間或多或少有衝突,但我認為在這裡並沒有這種情況。
第一個問題,這是一個高難度的問題,你需要了解 Jacobian clamping 的哪個方面?
至於第二個問題,在 Augustus 未來的幾篇論文公佈之前,想要回答有關重要性的問題還有點難。
Vineeth Bhaskara:你的論文與 Jurgen Schmidhuber 的 GAN vs PM 有多大區別?你們之間仍有分歧嗎?
Ian Goodfellow:那篇論文已經被撤銷提交了,我們之間仍有分歧。
Adam Ferguson:我是一名來自波士頓大學的學生,
1)在 GAN 和其他生成模型如 VAE 和 FVBN(以及 NADE、MADE、PixelCNN)之間該如何進行選擇?
2)像 Librarian/Fermat Library 這樣的工具對於 ML/DL 這樣的領域很重要,其中的論文在 arXiv 上發表的速度遠遠快於期刊,這方面的未來會是什麼樣的?
Ian Goodfellow:這個 AMA 就是在幫助 Librarian/Fermat Library 提升效果,因為我認為這些工具非常重要。arXiv 目前基本上是一個繞開同行評議過程的方式,它使得深度學習論文的訊雜比猛降。其中雖然有很多有關深度學習的好論文,但也有很多低質量的工作。今天,即使是最好的工作也會夾雜私貨——論文裡寫了一個好的主意,卻又包含不公平的推銷、與其他研究不準確的比較等等。因為在其中沒有任何同行評議,所以作者變得有點肆無忌憚了。
如果你想生成連續變數的真實樣本,如果你需要做無監督翻譯(如 CycleGAN),或者說你想做半監督學習,那麼通常你需要用 GAN。如果你想生成離散的負號,那麼你應該還不能用 GAN,但我們仍在做這方面的努力。如果你想要最大似然,那麼你可能不需要 GAN。
Kushajveer Singh:最近你在 Twitter 中提到了你心中的 10 篇最佳 GAN 論文,你能寫一篇文章列舉對於初學者和專業人數來說重要的論文和其他資源嗎?
Ian Goodfellow:我可能沒有時間做這樣的工作,而且如果我做了,它也很快就會過時。我在 2016 年 12 月寫過一篇 GAN 的大型教程:https://arxiv.org/abs/1701.00160。
其中的很多理念在今天仍然適用,不過其中不包含最近發展出來的最先進的模型,如 Progressive GAN、譜歸一化 GAN、帶投影鑑別器的 GAN 等。
Rafa Ronaldo:定量評估 GAN 的方法是什麼?
Ian Goodfellow:它取決於你希望拿 GAN 來做什麼。如果你希望將它用於半監督學習,那麼就使用測試集的準確率度量;如果你希望用於生成人類比較欣賞的影像(如超解析度等),那麼就需要使用人類的評分。如果你僅希望使用一般的自動化質量評分,那麼我認為 Frechet Inception Distance ( https://arxiv.org/abs/1706.08500 ) 可能是最好的。當然度量方法本身仍然是研究領域中非常重要的一部分。
Andres Diaz-Pinto:現在有方法將隱變數對映到生成影像的一部分嗎?換句話說,能否使用幾個變數改變背景顏色,然後然後另外幾個個變數修正形狀或其它的屬性?
Ian Goodfellow:通常情況下是可以實現的,但我們需要以特定的方式訓練模型,詳情請檢視 InfoGAN:https://arxiv.org/abs/1606.03657。
Rafa Ronaldo:你怎樣來提升程式設計技能以便能快速實現如 GAN 等各種有意思的想法?能不能推薦幾本提升程式設計技能的書,或具體學習 TensorFlow 與其它深度學習框架的書?
Ian Goodfellow:我學習現代深度學習程式設計的路徑非常間接,因為在學習使用 Python 之前,我學過各種 C、彙編、網頁等程式語言。因此我也不確定怎樣才能加速程式設計的學習過程。在程式設計能力方面,對我來說非常重要的一個轉折點就是 2006 年參加 Jerry Cain 在史丹佛開設的 CS107 課程。在那之前,我基本只是一個程式設計愛好者,但上過課後,基本上我在軟體開發方面就不會再困惑了。現在你們也可以在 YouTube 或 iTunes U 等站點找到該課程。
此外,當我開始第一次嘗試構建 GAN 時,那時有非常多的優秀工具,如 Theano、LISA lab 計算機叢集等。所以編寫 GAN 不那麼困難的原因有一部分就是因為這些優秀的深度學習框架,同時我在整個博士期間都在學習深度學習,因此有非常多的程式碼塊可隨時嵌入到新模型中。我第一個 GAN 的實現主要是從 MNIST 分類器程式碼中複製貼上。
Jason Rotella:GAN 能用於主題建模嗎?現在除了生成模型,GAN 框架還能擴充套件應用到其它領域嗎?
Ian Goodfellow:我猜測是可以用於主題建模的,但現在並不知道任何在該領域的具體研究。一個主要的挑戰即文字是由離散的字元、標記或單片語成的,但是 GAN 需要透過生成器的輸出計算梯度,因此它只能用於連續型的輸出。當然還是有可能使用對抗自編碼器或 AVB 等模型,因此生成器實際上或是一個編碼器,並能輸出連續的編碼。這對於文字建模可能是非常有用的屬性,因為它給出了表徵主題的分佈。
Greg McInnes:在基因組學中,有 GAN 的用武之處嗎?
Ian Goodfellow:我對基因組學沒有太多的瞭解,但我認為用於半監督學習的 GAN 模型可能會對該領域有非常重要的作用。因為未標註的基因遠要比標註的基因多,所以半監督學習有助於利用大量未標記資料從少數標註樣本中學習。
Tim Salimans 為此也開發了一些方法,這些方法在 MNIST 和 SVHN 等基準測試中非常高效(https://arxiv.org/abs/1606.03498)。但到目前為止,我發現其它半監督學習方法並不是非常有效,不過半監督 GAN 目前還處於研究中。
Nicholas Teague:我比較好奇現在是否有其它一些案例成功地將 GAN 用於影像或影片之外的資料。
Ian Goodfellow:以下是我們近來將 GAN 用於文字資料的論文: https://arxiv.org/abs/1801.07736。
Gonçalo Abreu:以下陳述正確嗎:「可能存在兩個不同的 GAN,其中一個有較好的評分,但是在作為外部分類器時,從鑑別器中抽取特徵要更差或更低效。」此外,關於結論的第四點:您為什麼建議我們使用 GAN 作為特徵提取器?也就是說,我們怎樣才能確保由 GAN 架構產生的表徵是有用的或表示了輸入資料的潛在結構?最後,如果網路有足夠的容量,那麼生成器會不可阻擋地學習如何模擬輸入資料?
Ian Goodfellow:你說的那個陳述是對的,假設你有一個完美的生成器,那麼對於所有的 x,P_generator(x)=P_data(x)。那麼最優判別器 D*(x)= P_data(x)/(P_generator(x)+P_data(x))=1/2,這個判別器的特徵可能完全沒用,因為我們可以將判別器的權重設為 0 而達到該效果。
對於特徵提取,一種方法是使用判別器隱藏層的特徵,另一種方法就如同自編碼器一樣單獨學習一個獨立的編碼器,以下是一些關於 GAN 編碼器的論文:
對抗性學習推斷:https://arxiv.org/abs/1606.00704
BiGAN:https://arxiv.org/abs/1605.09782
對抗性自編碼器:https://arxiv.org/abs/1511.05644
對抗性變分貝葉斯:https://arxiv.org/abs/1701.04722
alpha-GAN:https://arxiv.org/abs/1706.04987
對於生成器模擬輸入資料而言,這與幾乎所有生成模型的點估計都有關係。如果你在無限模型容量的情況下最大化密度函式的似然度,那麼模型僅會記住訓練資料。在實踐中,GAN 似乎出現更多的問題是欠擬合而不是過擬合,這可能是因為我們不知道如何平衡博弈過程。下面是相關的兩篇論文:
On the Quantitative Analysis of Decoder-Based Generative Models:https://arxiv.org/abs/1611.04273。
Do GANs actually learn the distribution? An empirical study:https://arxiv.org/pdf/1706.08224.pdf。
原文連結:https://fermatslibrary.com/arxiv_comments?url=https%3A%2F%2Farxiv.org%2Fpdf%2F1406.2661.pdf