深度對抗學習整裝待發,或將改變傳統AI格局

人工智能 深度學習 機器學習 美國 機器人圈 2017-05-20

深度對抗學習整裝待發,或將改變傳統AI格局

圖:pixabay

本文作者是waya.ai的創始人Michael Dietz,該作者對生成式對抗網絡(GANs)頗有研究,本文,他就深入淺出地為我們介紹了深度學習領域中最火的研究方向,以及面臨的相關問題。

對抗學習(Adversarial learning)是深度學習中最受歡迎的領域之一。如果你瀏覽過arxiv-sanity(http://www.arxiv-sanity.com/)的話,你就會注意到,當前最受歡迎的研究領域的大多數都是在研究這一方向。

而這篇文章將要教給你的是:

解釋我們應該關注對抗學習這一領域的原因

簡要介紹生成式對抗網絡(GAN)及其相關的主要挑戰

總結最近的研究(Wasserstein GAN,改進Wasserstein GAN的訓練),解決這些挑戰並穩定GAN訓練(包括實施)

經典機器學習——深度學習

之前我在美國伊利諾伊大學香檳分校看了一場關於“模擬信號和系統課程”的開場演講,在演講中教授自信地斷言:

這是你最重要的課程,而抽象是工程中最重要的概念。

針對複雜性這一問題的解決方案就是抽象,我們也稱之為信息隱藏。抽象只是消除不必要的細節。這個想法是為了設計複雜系統的一部分,你必須確定這是其他人必須知道的那部分,以便設計其部件,以及你可以將哪些細節進行隱藏。其他人必須知道的那部分就是抽象。

—— cs.cornell.edu

深層神經網絡學習數據的分層表示。網絡中的層,以及他們學習的表現形式是彼此相互建立的,層數越多,抽象層次也就越高。給定原始數據,詢問網絡的問題以及評估網絡答案的目標函數,網絡學習以最佳的方式來表示(抽象)此數據。

這個概念的結果是,該網絡學習並執行特徵工程。與經典機器學習方法相反的是,其中預期包含與手動任務相關的信息的特徵被手動識別,並從數據中提取出來,從而降低“學習”算法的輸入維度。

當數據的基礎結構,模式和機制通過學習,而不是手工制動的時候,AI的以前不可行的應用程序被啟用,而其超人性化也將成為可能。

深度學習到深度對抗學習

幾年前,我遇見過一個拳擊教練,他不會讓新的拳擊手問問題。因為如果新的拳擊手問錯了問題,就會得到了他們不需要的答案,然後專注於錯誤的事情。

提出正確的問題需要與提供正確答案一樣多的技能。

——Robert Half

對抗學習的美妙之處在於,我們的網絡完全從數據中進行學習——要問的問題,相應的答案以及對這些答案的評估。與經典深度學習方法相反的是,預期與手頭任務相關的問題被手動識別,手動製作的目標函數指導我們的網絡優化,從而學習相應的答案。

Deep Mind最近展示了AlphaGo深度(對抗)學習的巨大潛力,顯示AlphaGo發明了新知識,並在圍棋中教授了新的理論。這帶來了圍棋的一個全新時代,並讓玩家破解了一個他們被困了數千載的僵局。AlphaGo能夠通過學習一個評估函數來實現這一點,該函數可以在任何給定時刻描述系統的“分數”,而不是嘗試手工制動和預編程來執行這一操作。然後,AlphaGo通過數百萬次模擬遊戲對自己進行了訓練。這聽起來像對抗學習是吧?

深度對抗學習整裝待發,或將改變傳統AI格局

AlphaGo的架構

AlphaGo不僅憑藉其自身的強大能力成為世界上最好的圍棋選手,它還真正掌握了遊戲及其所有的細微之處和複雜性。這是有可能的,因為它不受人類輸入的限制,或是我們(我們現在的認知都是有限的)對問題領域的理解(例如在詢問,回答和評估問題上)的限制。下一步的目標就是將這些學習方法應用於現實世界中。很難想象AI將如何重塑農業,醫療保健等行業,但這一定會發生的。

生成式對抗網絡

我所不能構建的是我所不明白的。

——理查德•費曼(美國知名物理學家)

上述引述激發了我開始著手GAN研究的積極性。 GAN將訓練過程理解為兩個網絡之間的遊戲,並允許對通用數據進行對抗學習。

深度對抗學習整裝待發,或將改變傳統AI格局

GAN的基本概念:GANs是通過讓兩個網絡相互對抗的方式形成生成式模型

深度對抗學習整裝待發,或將改變傳統AI格局

https://blog.openai.com/generative-models/

為了建模真實的數據分佈,生成器學習如何生成實際的數據樣本,而鑑別器學習如何確定這些樣本是否是真實的。懷著對“理解某事的最終表達能夠重現它”的信仰,我們覺得我們的目標似乎是值得的。如果我們能夠成功地將我們的GAN訓練到平衡狀態(不管多麼完美的鑑別器也無法將生成的樣本與實際樣本相區分),我們應該可以將這種獲得的對數據的理解應用於幾乎任何具有最佳性能的任務中。

問題猶存

GAN也是存在一些缺點的,它難以優化,訓練不穩定。因此必須仔細設計網絡架構,必須認真維護生成器和鑑別器之間的平衡,以便進行訓練。在這種模式上下,dropping在GAN中是很典型的(生成器僅學習真實分佈中的一小部分),並且由於近乎無意義的學習曲線,是難以對它們進行調試的。

儘管如此,GAN已經取得了最先進的成果,但實際應用卻受到這些問題的限制。

解決方案

訓練GAN以最小化生成的數據與真實的數據分佈之間的距離。最初,Jensen-Shannon分歧被用作這種距離度量。然而,Wasserstein GAN(wGAN)提供了廣泛的理論見解,並以經驗證明,最小化EMD距離(Earth Mover's Distance)合理和有效的近似,理論上是解決GAN的主要問題(詳見上述描述)的較好的優化方法。為了使EMD近似有效,wGAN對評論者(以前稱為Wasserstein的鑑別器)施加了權重限制,導致了一些訓練失敗。

對Wasserstein GAN進行的改進訓練,使得非常穩定的GAN訓練可以懲罰評論者的對於梯度的規範,因為他們是基於輸入而不是限制權重。這個“梯度懲罰”只是被簡單地添加到上面描述的Wasserstein距離的總損失中去。

"""
wGAN implemented on top of tensorflow as described in: [Wasserstein GAN](https://arxiv.org/pdf/1701.07875.pdf)
with improvements as described in: [Improved Training of Wasserstein GANs](https://arxiv.org/pdf/1704.00028.pdf).
"""
import tensorflow as tf
#
# define earth mover distance (wasserstein loss)
#
defem_loss(y_coefficients, y_pred):
return tf.reduce_mean(tf.multiply(y_coefficients, y_pred))
#
# construct computation graph for calculating the gradient penalty (improved wGAN) and training the discriminator
#
# sample a batch of noise (generator input)
_z = tf.placeholder(tf.float32, shape=(batch_size, rand_dim))
# sample a batch of real images
_x = tf.placeholder(tf.float32, shape=(batch_size, img_height, img_width, img_channels))
# generate a batch of images with the current generator
_g_z = generator_model(_z)
# calculate `x_hat`
epsilon = tf.placeholder(tf.float32, shape=(batch_size, 1, 1, 1))
x_hat = epsilon * _x + (1.0- epsilon) * _g_z
# gradient penalty
gradients = tf.gradients(discriminator_model(x_hat), [x_hat])
_gradient_penalty =10.0* tf.square(tf.norm(gradients[0], ord=2) -1.0)
# calculate discriminator's loss
_disc_loss = em_loss(tf.ones(batch_size), discriminator_model(_g_z)) - \
em_loss(tf.ones(batch_size), discriminator_model(_x)) + \
_gradient_penalty

在TensorFlow中執行Wasserstein距離與梯度懲罰

終於,我們可以說,這是我們第一次訓練各種GAN架構,而幾乎沒有超參數調整,包括101層ResNets和離散數據的語言模型!

使用Wasserstein距離的好處之一就是,隨著評論者的改進,生成器將會從中得到改善後的梯度。當使用Jensen-Shannon分流時,隨著鑑別器的改進,梯度將會消失,而生成器無法從中學習(這是訓練不穩定的主要來源)。

如果對這個問題感興趣,想對這些概念有一個堅實的理論認識,我建議大家閱讀這兩篇論文:

Wasserstein GAN(https://arxiv.org/pdf/1701.07875.pdf)

Improved training of Wasserstein GANs(https://arxiv.org/pdf/1704.00028.pdf)

實現

詳見github中開源代碼:https://github.com/wayaai/GAN-Sandbox/tree/wGAN

結論

對抗學習使我們能夠從我們對問題領域的瞭解存在的任何限制或侷限中,釋放我們的模型——對於要學習的內容沒有任何預想,而且模型可以自由地探索數據。

來源:medium

作者:Michael Dietz

相關推薦

推薦中...