1. 程式人生 > >簡述生成式對抗網路

簡述生成式對抗網路

本文主要闡述了對生成式對抗網路的理解,首先談到了什麼是對抗樣本,以及它與對抗網路的關係,然後解釋了對抗網路的每個組成部分,再結合演算法流程和程式碼實現來解釋具體是如何實現並執行這個演算法的,最後給出一個基於對抗網路改寫的去噪網路執行的結果,效果雖然挺差的,但是有些地方還是挺有意思的。

1. 對抗樣本(adversarial examples)

14年的時候Szegedy在研究神經網路的性質時,發現針對一個已經訓練好的分類模型,將訓練集中樣本做一些細微的改變會導致模型給出一個錯誤的分類結果,這種雖然發生擾動但是人眼可能識別不出來,並且會導致誤分類的樣本被稱為對抗樣本,他們利用這樣的樣本發明了對抗訓練(adversarial training),模型既訓練正常的樣本也訓練這種自己造的對抗樣本,從而改進模型的泛化能力[1]。如下圖所示,在未加擾動之前,模型認為輸入圖片有57.7%的概率為熊貓,但是加了之後,人眼看著好像沒有發生改變,但是模型卻認為有99.3%的可能是長臂猿。

圖1 對抗樣本的產生(圖來源[2])

這個問題乍一看很像過擬合,在Goodfellow在15年[3]提到了其實模型欠擬合也能導致對抗樣本,因為從現象上來說是輸入發生了一定程度的改變就導致了輸出的不正確,例如下圖一,上下分別是過擬合和欠擬合導致的對抗樣本,其中綠色的o和x代表訓練集,紅色的o和x即對抗樣本,明顯可以看到欠擬合的情況下輸入發生改變也會導致分類不正確(其實這裡我覺得有點奇怪,因為圖中所描述的對抗樣本不一定就是跟原始樣本是同分布的,感覺是人為造的一個東西,而不是真實資料的反饋)。在[1]中作者覺得這種現象可能是因為神經網路的非線性和過擬合導致的,但Goodfellow卻給出了更為準確的解釋,即對抗樣本誤分類是因為模型的線性性質導致的,說白了就是因為w

TxwTx存在點乘,當xx的每一個維度上都發生改變x˜=x+ηx~=x+η,就會累加起來在點乘的結果上附加上一個比較大的和wTx˜=wTx+wTηwTx~=wTx+wTη,而這個值可能就改變了預測結果。例如[4]中給出的一個例子,假設現在用邏輯迴歸做二分類,輸入向量是x=[2,1,3,2,2,2,1,4,5,1]x=[2,−1,3,−2,2,2,1,−4,5,1],權重向量是w=[1,1,1,1,1,1,1,1,1,1]w=[−1,−1,1,−1,1,−1,1,1,−1,1],點乘結果是-3,類預測為1的概率為0.0474,假如將輸入變為xad=x+0.5w=[1.5,1.5,3.5
,2.5,2.5,1.5,1.5,3.5,4.5,1.5]
xad=x+0.5w=[1.5,−1.5,3.5,−2.5,2.5,1.5,1.5,−3.5,4.5,1.5]
,那麼類預測為1的概率就變成了0.88,就因為輸入在每個維度上的改變,導致了前後的結果不一致。

圖2 過/欠擬合導致對抗樣本(圖來源[3])

如果認為對抗樣本是因為模型的線性性質導致的,那麼是否能夠構造出一個方法來生成對抗樣本,即如何在輸入上加擾動,Goodfellow給出了一種構造方法fast gradient sign method[2],其中JJ是損失函式,再對輸入xx求導,θθ是模型引數,ϵϵ是一個非常小的實數。圖1中就是ϵ=0.007ϵ=0.007

η=ϵsign(xJ(θ,x,y))(1)η=ϵsign(▽xJ(θ,x,y))(1)

這個構造方法在[4]中有比較多的例項,這裡截取了兩個例子來說明,用imagenet圖片縮放到64*64來訓練一個一層的感知機,輸入是64*64*3,輸出是1000,權重是64*64*3*1000,訓練好之後取權重矩陣對應某個輸出類別的一行64*64*3,將這行還原成64*64圖片顯示為下圖中第二列,再用公式1的方法從第一列的原始圖片中算出第三列的對抗樣本,可以看到第一行從預測為狐狸變成了預測為金魚,第二行變成了預測為校車。

圖3 構造對抗樣本(圖來源[4])

實際上不是隻有純線性模型才會出現這種情況,卷積網路的卷積其實就是線性操作,因此也有預測不穩定的情況,relu/maxout甚至sigmoid的中間部分其實也算是線性操作。因為可以自己構造對抗樣本,那麼就能應用這個性質來訓練模型,讓模型泛化能力更強。因而[2]給定了一種新的目標函式也就是下面的式子,相當於對輸入加入一些干擾,並且也通過實驗結果證實了訓練出來的模型更加能夠抵抗對抗樣本的影響。

J˜(θ,x,y)=αJ(θ,x,y)+(1α

相關推薦

簡述生成對抗網路

本文主要闡述了對生成式對抗網路的理解,首先談到了什麼是對抗樣本,以及它與對抗網路的關係,然後解釋了對抗網路的每個組成部分,再結合演算法流程和程式碼實現來解釋具體是如何實現並執行這個演算法的,最後給出一個基於對抗網路改寫的去噪網路執行的結果,效果雖然挺差的,但是有些地方還是挺有意思的。 1.

生成對抗網路(GAN)

   生成對抗網路(GAN),是深度學習模型之一,2014年lan Goodfellow的開篇之作Generative Adversarial Network, GAN概述   GAN包括兩個模型,一個是生成模型(generative model),一個

GAN (生成對抗網路) (一): GAN 簡介

自從 Ian Goodfellow 在 14 年發表了 論文 Generative Adversarial Nets 以來,生成式對抗網路 GAN 廣受關注,加上學界大牛 Yann Lecun 在 Quora 答題時曾說,他最激動的深度學習進展是生成式對抗網路,使得 GAN 成為近年來在機器學習

【機器學習】生成對抗網路模型綜述

生成式對抗網路模型綜述 摘要 生成式對抗網路模型(GAN)是基於深度學習的一種強大的生成模型,可以應用於計算機視覺、自然語言處理、半監督學習等重要領域。生成式對抗網路最最直接的應用是資料的生成,而資料質量的好壞則是評判GAN成功與否的關鍵。本文介紹了GAN最初被提出時的基本思想,闡述了其一步

深度學習-54:生成對抗網路GAN(原理、模型和演進)

深度學習-52:生成式對抗網路GAN(原理、模型和演進) 一般的學習模型都是基於一個假設的隨機分佈,然後通過訓練真實資料來擬合出模型。網路模型複雜並且資料集規模也不小,這種方法簡直就是憑藉天生蠻力解決問題。Goodfellow認為正確使用資料的方式,先對資料集

生成對抗網路(GAN)相關問題彙總(較全面)

今年暑假在北京大學參加了一個月的人工智慧DeeCamp訓練營培訓,期間實踐課題是:基於文字的影象生成,用到了各種GAN網路對比試驗結果。當時只是想著實驗各種GAN看效果,對於每一個GAN都有什麼改進一知半解。接下來還要指導一篇基於GAN的水下影象生成本科生畢設,現在整理一下網

到底什麼是生成對抗網路 GAN?

到底什麼是生成式對抗網路 GAN? 先來看一下 百度百科-GAN 的解釋 生成式對抗網路(GAN, Generative Adversarial Networks )是一種深度學習模型,是近年來複雜分佈上無監督學習最具前景的方法之一。 模型通過框架中(至少)兩個模組:生成模型

生成對抗網路GAN研究進展(五)——Deep Convolutional Generative Adversarial Nerworks,DCGAN

【前言】     本文首先介紹生成式模型,然後著重梳理生成式模型(Generative Models)中生成對抗網路(Generative Adversarial Network)的研究與發展。作者按照GAN主幹論文、GAN應用性論文、GAN相關論文

生成對抗網路GAN-入門篇

生成式對抗網路GAN-入門篇 近年來,GAN逐漸成為了最熱門的神經網路框架。在閱讀了若干篇關於GAN的文章後,希望用盡量通俗易懂的語言對GAN的基本工作原理,最優解推導,訓練方法,存在的問題以及應用做一個簡單的總結並與大家交流,可作為GAN的一個入門參考。

不要慫,就是GAN (生成對抗網路) (四):訓練和測試 GAN

在 /home/your_name/TensorFlow/DCGAN/ 下新建檔案 train.py,同時新建資料夾 logs 和資料夾 samples,前者用來儲存訓練過程中的日誌和模型,後者用來儲存訓練過程中取樣器的取樣圖片,在 train.py 中輸入如下程式碼:

不要慫,就是GAN (生成對抗網路) (六):Wasserstein GAN(WGAN) TensorFlow 程式碼

先來梳理一下我們之前所寫的程式碼,原始的生成對抗網路,所要優化的目標函式為:  此目標函式可以分為兩部分來看: ①固定生成器 G,優化判別器 D, 則上式可以寫成如下形式:    可以轉化為最小化形式:  我們編寫的程式碼中,d_loss_real =

GAN:生成對抗網路介紹和其優缺點以及研究現狀

本博文是轉載自一篇博文,介紹GAN(Generative Adversarial Networks)即生成式對抗網路的原理以及GAN的優缺點的分析和GAN網路研究發展現狀。下面是內容。 1. 生成式模型 1.1 概述     機器學習方法可以分為生成方法(gen

GANs學習系列(7): 拉普拉斯金字塔生成對抗網路Laplacian Pyramid of Adversarial Networks

【前言】      本文首先介紹生成式模型,然後著重梳理生成式模型(Generative Models)中生成對抗網路(Generative Adversarial Network)的研究與發展。作者按照GAN主幹論文、GAN應用性論文、GAN相關論文分類整理了45篇近

生成對抗網路GAN彙總

關於生成式對抗學習(Generative Adversarial Network, GAN)相關文章的閱讀整理以及資源彙總。 文章: Generative Adversarial Nets (20

生成對抗網路GAN研究進展(二)——原始GAN

【前言】     本文首先介紹生成式模型,然後著重梳理生成式模型(Generative Models)中生成對抗網路(Generative Adversarial Network)的研究與發展。作者按照GAN主幹論文、GAN應用性論文、GAN相關論文

生成對抗網路GAN研究進展(四)——Laplacian Pyramid of Adversarial Networks,LAPGAN

【前言】     本文首先介紹生成式模型,然後著重梳理生成式模型(Generative Models)中生成對抗網路(Generative Adversarial Network)的研究與發展。作者按照GAN主幹論文、GAN應用性論文、GAN相關論文

生成對抗網路GAN研究進展(一)

【前言】     本文首先介紹生成式模型,然後著重梳理生成式模型(Generative Models)中生成對抗網路(Generative Adversarial Network)的研究與發展。作者按照GAN主幹論文、GAN應用性論文、GAN相關論文

【Learning Notes】生成對抗網路(Generative Adversarial Networks,GAN)

在學習 Variational Auto-Encoder時,同時注意到了 GAN 研究的火熱。但當時覺得 GAN 非常不成熟(訓練不穩定,依賴各種說不清的 tricks;沒有有效的監控指標,需要大量的人工判斷,因此難以擴展到圖像之外的高維數據)。在讀了 Good

GANs學習系列(5): 生成對抗網路Generative Adversarial Networks

【前言】      本文首先介紹生成式模型,然後著重梳理生成式模型(Generative Models)中生成對抗網路(Generative Adversarial Network)的研究與發展。作者按照GAN主幹論文、GAN應用性論文、GAN相關論文分類整理了45篇近兩年的論文,著重梳理了主幹論文之間的聯絡

生成對抗網路Generative Adversarial Networks(GANs)論文筆記

1. 前言 GAN(Generative Adversarial Networks),是生成對抗網路於2014年由Ian Good fellow在他的論文提出。 在GAN被提出之後,立刻在機器學習領域得到了巨大反響,並且被科學工作者們應用在許多領域