什麼是生成式對抗網絡

什麼是生成式對抗網絡

生成式對抗網絡(GAN)是一種深度學習模型,是近年來複雜分佈上無監督學習最具前景的方法之一.

模型通過框架中(至少)兩個模型:生成模型(Generative Model)和差別模型(Discriminative Model)的互相博弈學習產生相當好的輸出.

原始GAN理論中,並不要求G和D都是神經網絡,只需要是能擬合相應生成和差別的函數即可.但是實用中一般均使用深度神經網絡作爲G和D.捕獲數據分佈的生成模型G,和樣本來自訓練數據的概率的差別模型D.G的訓練程序是將D錯誤的概率最大化.

假設我們有兩個網絡,G(Generator)和D(Discriminator).它們的功能分別是:

G是一個生成圖片的網絡,它接收一個隨機的噪聲z,通過這個噪聲生成圖片,記作G(z)

D是一個差別網絡,差別一張圖片是不是"真實的".它的輸入參數是x,x代表一張圖片,輸入D(x)代表x爲真實圖片的概率,如果爲1就代表100%是真實的圖片,而輸出爲0就代表本能是真實的圖片

在訓練過程中,生成網絡G的目標就是儘量生成真實的圖片去欺騙差別網絡D.而D的目標就是儘量把G生成的圖片和真實的圖片分別開來,這樣G和D構成了一個動態的"博弈過程"

最後博弈的結果是什麼? 在最理想的狀態下,G可以生成中心"以假亂真"的圖片G(z).對於D來說,它難以判定G生成的圖片空間是不是真實的,因此D(G(z)) == 0.5
在這種情況下,這個0.5就是納什均衡點

但是在我們實際的訓練過程中是很難達到0.5這個最理想的狀態.實際的訓練過程中可能是0.49,0.48,0.52,它不是說達到0.5就停下來,而是達到某個範圍內停下來.

比如說概率非常頻繁地停在某個區間範圍內,我們就可以把它停下來,其實說白了,我們不一定非得定一個結束的指標,比如說你可以看它的損失,如果它頻繁地停在某個區間,就可以停下來了,但是也不是絕對的情況,它可能是一個局部的平衡

生成式對抗網絡它可以做什麼呢?

  1. 圖像生成,超分辨率(馬賽克還原,可以參考DCGAN,反捲積)
  2. 語義分割(自動駕駛上的圖像分割)
  3. 文字生成(比如說 自動生成文章)
  4. 數據增強(這個用得比較多,很多公司用它生成虛假數據進行數據增強)
  5. 聊天機器人(生成聊天對話)
  6. 信息檢索,排序(網絡信息,生成排序的內容)

再比如說之前的楊冪換頭變成小龍女,這個就是用GAN做的.
GAN可以做的事情比較多,目前應用到商業上的主要是數據增強和語義分割
GAN更多的是應用到圖像上,RNN更多的是用在文本上
因爲它比RNN更加不可控,簡單來講GAN只能簡單來判斷它是真文字還是假文字,但是文字不是用真假判斷就能知道它是什麼意思的.

優勢

GAN是更好的生成模型,在某種意義上避免了馬爾科夫鏈式的學習機制,這全程它能夠區別於傳統的概率生成模型.傳統概率生成模型一般都需要進行馬爾科夫鏈式的採樣和推斷,而GAN避免了這個計算複雜度特別高的過程,直接進行採樣和推斷,從而提高了GAN的應用效率, 所以其實際應用場景也就更爲廣泛.

某次GAN是一個非常靈活的設計框架,各種類型的損失函數都可以整合到GAN模型當中,這樣使得針對不同的,我們可以設計不同類型的損失函數,都會在GAN的模型下進行學習和優化.

再次,最重要的一點是:當概率密度不可計算的時候,傳統依賴於數據自然性解釋的一些生成模型就不可以在上面進行學習和應用,但是GAN在這種情況下依然可以使用,這是因爲GAN引入了一個非常聰明的內部對抗的訓練機制,可以逼近一些不是很容易計算的目標函數.

基本框架

一個最樸素的GAN模型實際上是將一個隨機變量(可以是高斯分佈,或者01之間的均勻分佈),通過參數化的概率生成模型(通常是用一個神經網絡模型來進行參數化),進行概率分佈的逆變換採樣,從而得到一個生成的概率分佈.

GAN的或者一般概率生成模型的訓練目的,就是要使得生成的概率分佈和真實數據的分佈儘量接近,從而能夠解釋真實的數據.但是在實際應用中,我們完全沒有辦法知道真實數據的分佈.我們所能夠得到的只是從這個真實的數據分佈中所採樣得到的一些真實數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章