⑴ gan用什麼軟體打開
文件擴展名.GAN
文件類型:GanttProject項目文件
類別:數據文件
軟體:可打開GAN文件的軟體: GanttProject.
描述:
項目GanttProject一個開源的,跨平台的項目調度程序創建的,包含的任務樹,以及項目資源和截止日期的清單;可以在GanttProject在視覺上呈現。
⑵ GAN 擬合高斯分布數據Pytorch實現
GAN本身是一種生成式模型,所以在數據生成上用的是最普遍的,最常見的是圖片生成,常用的有DCGAN WGAN,BEGAN。目前比較有意思的應用就是GAN用在圖像風格遷移,圖像降噪修復,圖像超解析度了,都有比較好的結果。目前也有研究者將GAN用在對抗性攻擊上,具體就是訓練GAN生成對抗文本,有針對或者無針對的欺騙分類器或者檢測系統等等,但是目前沒有見到很典範的文章。好吧,筆者有一個項目和對抗性攻擊有關,所以要學習一下GAN。
GANs組成:生成器和判別器。結構如圖1所示
針對問題: 給定一批樣本,訓練一個系統能夠生成類似的新樣本
核心思想:博弈論中的納什均衡,
判別器D 的目的是判斷數據來自生成器還是訓練集,
生成器G 的目的是學習真實數據的分布,使得生成的數據更接近真實數據,
兩者不斷學習優化最後得到納什平衡點。
D( x) 表示真實數據的概率分布,
G( z) 表示輸入雜訊z 產生的生成數據的概率分布
訓練目標:G( Z)在判別器上的分布D( G( Z) ) 更接近真實數據在判別器上的分布D( X)
接下來就來實現我們的例子把,目標是把標准正態分布的數據,通過訓練的GAN網路之後,得到的數據x_fake能盡量擬合均值為3方差為1的高斯分布N(3,1)的數據。
可以看出生成器其實就是簡單的全連接網路,當然CNN,RNN等網路都是適合GAN的,根據需要選擇。
可以看出判別器其實也是簡單的全連接網路,當然CNN,RNN等網路都是適合GAN的,根據需要選擇。
在這里想說的是對於判別器和生成器的訓練是分開的,訓練判別器的時候固定生成器,訓練生成器的時候固定判別器,如此循環。本例子中先訓練三次判別器,接著訓練一次生成器。
為了便於理解具體訓練過程,圖2 、圖3展示了判別器和生成器訓練時的數據流向,具體就不展開了,參考注釋。
畫圖函數敬上
然後調用main()函數就好了
紅色是目標分布,藍色是生成分布,還是有一定效果的額。
感受到是在調參了,請教我如何學習生成(xie)對抗(lun)網路(wen)。
⑶ GAN的基本介紹和變種
GAN,全稱為Generative Adversarial Nets,直譯為「生成式對抗網路」。GAN作為生成模型的代表,自2014年被Ian Goodfellow提出後引起了業界的廣泛關注並不斷涌現出新的改進模型,深度學習泰斗之一的Yann LeCun高度評價GAN是機器學習界近十年來最有意思的想法。
GAN始終存在訓練難、穩定性差以及模型崩塌(Model Collapse)等問題。產生這種不匹配的根本原因其實還是對GAN背後產生作用的理論機制沒有探索清楚。
在推動GAN應用方面,2017年有兩項技術是非常值得關注的。其中一個是CycleGAN,其本質是利用對偶學習並結合GAN機制來優化生成圖片的效果的,採取類似思想的包括DualGAN以及DiscoGAN等,包括後續的很多改進模型例如StarGAN等。CycleGAN的重要性主要在於使得GAN系列的模型不再局限於監督學習,它引入了無監督學習的方式,只要准備兩個不同領域的圖片集合即可,不需要訓練模型所需的兩個領域的圖片一一對應,這樣極大擴展了它的使用范圍並降低了應用的普及難度。
另外一項值得關注的技術是英偉達採取「漸進式生成」技術路線的GAN方案,這項方案的引人之處在於使得計算機可以生成1024*1024大小的高清圖片,它是目前無論圖像清晰度還是圖片生成質量都達到最好效果的技術,其生成的明星圖片幾乎可以達到以假亂真的效果(參考圖3)。英偉達這項由粗到細,首先生成圖像的模糊輪廓,再逐步添加細節的思想其實並非特別新穎的思路,在之前的StackGAN等很多方案都採用了類似思想,它的獨特之處在於這種由粗到細的網路結構是動態生成的而非事先固定的靜態網路,更關鍵的是產生的圖片效果特別好
首先,有一個一代的 generator,它能生成一些很差的圖片,然後有一個一代的 discriminator,它能准確的把生成的圖片,和真實的圖片分類,簡而言之,這個 discriminator 就是一個二分類器,對生成的圖片輸出 0,對真實的圖片輸出 1。
接著,開始訓練出二代的 generator,它能生成稍好一點的圖片,能夠讓一代的 discriminator 認為這些生成的圖片是真實的圖片。然後會訓練出一個二代的 discriminator,它能准確的識別出真實的圖片,和二代 generator 生成的圖片。以此類推,會有三代,四代。。。n 代的 generator 和 discriminator,最後 discriminator 無法分辨生成的圖片和真實圖片,這個網路就擬合了。
對抗樣本(adversarial examples)是機器學習模型的輸入,攻擊者故意設計它們以引起模型出錯;它們就像是機器的視覺錯覺。
對抗樣本指的是一個經過微小調整就可以讓機器學習演算法輸出錯誤結果的輸入樣本。在圖像識別中,可以理解為原來被一個卷積神經網路(CNN)分類為一個類(比如「熊貓」)的圖片,經過非常細微甚至人眼無法察覺的改動後,突然被誤分成另一個類(比如「長臂猿」)。
對抗訓練
對抗訓練是防禦對抗樣本攻擊的一種方法。將對抗樣本和正常樣本一起訓練是一種有效的正則化,可以提高模型的准確度,同時也能有效降低對抗樣本的攻擊成功率。不過這種防禦也只是針對同樣用來產生訓練集中的對抗樣本的方法。
確實在下圖中可以看到,訓練集是正常樣本和對抗樣本,測試集是正常樣本的紅線比訓練集和測試集都是正常樣本的錯誤率要降低,說明對抗訓練是有正則化的功能。
Figure 9
在訓練的時候直接生成對抗樣本是比較低效的,之前提到的FGSM是一個高效的對抗訓練方法。只需要改變目標函數就能在訓練每個正常樣本的同時也考慮了對抗樣本。模型訓練去給對抗樣本賦予和正常樣本原分類同樣的類別。
用經過FGSM訓練的網路,可以有效的防禦用FGSM產生的對抗樣本攻擊,但是如果換其他對抗攻擊方法,也會被攻破。
對抗樣本的工作思路,可以有以下兩個方面的意義:
結論
要為集成模型創建對抗樣本,因為梯度方法的問題,難度會加大。但是生成的演算法更為可行有效。
單個模型出現盲點可以由其他模型彌補,採用的會是輸出結果最好的模型數據。
我們發現當我們用動態創建的對抗模型來訓練演算法時,能夠解決這些對抗樣本的問題。這是因為當模型面對這些可能出現問題的對抗低概率區域時,可以產生更高的「免疫力」。這同時也支持了低概率區域的論點,在這些區域的對抗樣本更難處理。
DCGAN是繼GAN之後比較好的改進,其主要的改進主要是在網路結構上,到目前為止,DCGAN的網路結構還是被廣泛的使用,DCGAN極大的提升了GAN訓練的穩定性以及生成結果質量。
論文的主要貢獻是:
◆ 為GAN的訓練提供了一個很好的網路拓撲結構。
◆ 表明生成的特徵具有向量的計算特性。
D(x)表示D網路判斷真實圖片是否真實的概率(因為x是真實的,所以對於D來說,這個值越接近1越好)。而D(G(z))D(G(z))是為了D判斷G生成的圖片是否真實的概率。
G的目的:G應該希望自己生成的圖片「越接近真實越好」。也就是說,G希望D(G(z))D(G(z))盡可能得大,這是V(D,G)V(D,G)會變小。
D的目的:D的能力越強,D(x)D(x)應該越大,D(G(x))D(G(x))應該越小。因此D的目的和G不同,D希望V(D,G)V(D,G)越大越好。
DCGAN對卷積神經網路的結構做了一些改變,以提高樣本的質量和收斂的速度,這些改變有:
取消所有pooling層。G網路中使用轉置卷積(transposed convolutional layer)進行上采樣,D網路中用加入stride的卷積代替pooling。
在D和G中均使用batch normalization
去掉FC層,使網路變為全卷積網路
G網路中使用ReLU作為激活函數,最後一層使用tanh
D網路中使用LeakyReLU作為激活函數
DCGAN中的G網路示意:
DCGAN的生成器網路結構如上圖所示,相較原始的GAN,DCGAN幾乎完全使用了卷積層代替全鏈接層,判別器幾乎是和生成器對稱的,從上圖中我們可以看到,整個網路沒有pooling層和上采樣層的存在,實際上是使用了帶步長(fractional-strided)的卷積代替了上采樣,以增加訓練的穩定性。
DCGAN能改進GAN訓練穩定的原因主要有:
◆ 使用步長卷積代替上采樣層,卷積在提取圖像特徵上具有很好的作用,並且使用卷積代替全連接層。
◆ 生成器G和判別器D中幾乎每一層都使用batchnorm層,將特徵層的輸出歸一化到一起,加速了訓練,提升了訓練的穩定性。(生成器的最後一層和判別器的第一層不加batchnorm)
◆ 在判別器中使用leakrelu激活函數,而不是RELU,防止梯度稀疏,生成器中仍然採用relu,但是輸出層採用tanh
◆ 使用adam優化器訓練,並且學習率最好是0.0002,(我也試過其他學習率,不得不說0.0002是表現最好的了)
BigGAN在訓練中 Batch 採用了很大的 Batch,已經達到了 2048(我們平常訓練 Batch 正常都是 64 居多),在卷積的通道上也是變大了,還有就是網路的參數變多了,在 2048 的 Batch 下整個網路的參數達到了接近 16 億
⑷ 用GAN 輸入圖片預測未來的圖片,但為什麼生成的圖和輸入差不多,和用作標簽的圖片不一樣
參數不對,大概是訓練的樣本太少,或者是訓練的次數太小。