當前位置:首頁 » 手機軟體 » Gan網路參數共享
擴展閱讀
數據機需要連接網路嗎 2025-01-22 21:42:27

Gan網路參數共享

發布時間: 2023-01-26 09:20:51

『壹』 生成式對抗網路GAN(一)

上面這張圖很好的很好的闡述了生成式對抗網路的結構~~ 博弈論

此圖給出了生成性對抗網路的概述。目前最重要的是要理解GAN是使兩個網路協同工作的一種方式 - 而Generator和Discriminator都有自己的架構。為了更好地理解這個想法的來源,我們需要回憶一些基本的代數並問自己 - 我們怎麼能欺騙一個比大多數人更好地分類圖像的神經網路?

在我們詳細描述GAN之前,讓我們看一下類似的主題。給定一個訓練有素的分類器,我們可以生成一個欺騙網路的樣本嗎?如果我們這樣做,它會是什麼樣子?

事實證明,我們可以。

甚至更多 - 對於幾乎任何給定的圖像分類器,可以將圖像變換為另一個圖像,這將被高度置信地錯誤分類,同時在視覺上與原始圖像無法區分!這種過程稱為對抗性攻擊,生成方法的簡單性解釋了很多關於GAN的內容。
精心計算的示例中的對抗性示例,其目的是錯誤分類。以下是此過程的說明。左邊的熊貓與右邊的熊貓無法區分 - 但它被歸類為長臂猿。

圖像分類器本質上是高維空間中的復雜決策邊界。當然,在對圖像進行分類時,我們無法繪制這個邊界。但我們可以安全地假設,當訓練結束時,網路並不是針對所有圖像進行推廣的 - 僅針對我們在訓練集中的那些圖像。這種概括可能不是現實生活的良好近似。換句話說,它適用於我們的數據 - 我們將利用它。

讓我們開始為圖像添加隨機雜訊並使其非常接近零。我們可以通過控制雜訊的L2范數來實現這一點。數學符號不應該讓您擔心 - 出於所有實際目的,您可以將L2范數視為向量的長度。這里的訣竅是你在圖像中擁有的像素越多 - 它的平均L2范數就越大。因此,如果雜訊的范數足夠低,您可以預期它在視覺上難以察覺,而損壞的圖像將遠離矢量空間中的原始圖像。

為什麼?

好吧,如果HxW圖像是矢量,那麼我們添加到它的HxW雜訊也是矢量。原始圖像具有相當密集的各種顏色 - 這增加了L2規范。另一方面,雜訊是一組視覺上混亂的相當蒼白的像素 - 一個小范數的矢量。最後,我們將它們添加到一起,為損壞的圖像獲取新的矢量,這與原始圖像相對接近 - 但卻錯誤分類!

現在,如果原始類 Dog 的決策邊界不是那麼遠(就L2范數而言),這種加性雜訊將新圖像置於決策邊界之外。

您不需要成為世界級拓撲學家來理解某些類別的流形或決策邊界。由於每個圖像只是高維空間中的矢量,因此在其上訓練的分類器將「所有猴子」定義為「由隱藏參數描述的該高維斑點中的所有圖像矢量」。我們將該blob稱為該類的決策邊界。

好的,所以,你說我們可以通過添加隨機雜訊輕松欺騙網路。它與生成新圖像有什麼關系?

現在我們假設有兩個結構模型,相當於兩個神經網路:

這是關於判別網路D和生成網路G的價值函數(Value Function),訓練網路D使得最大概率地分對訓練樣本的標簽(最大化log D(x)),訓練網路G最小化log(1 – D(G(z))),即最大化D的損失。訓練過程中固定一方,更新另一個網路的參數,交替迭代,使得對方的錯誤最大化,最終,G 能估測出樣本數據的分布。生成模型G隱式地定義了一個概率分布Pg,我們希望Pg 收斂到數據真實分布Pdata。論文證明了這個極小化極大博弈當且僅當Pg = Pdata時存在最優解,即達到納什均衡,此時生成模型G恢復了訓練數據的分布,判別模型D的准確率等於50%。

接著上面最後一個問題:怎麼才能生成我指定的圖像呢?

指定標簽去訓練

顧名思義就是把標簽也帶進公式,得到有條件的公式:

具體怎麼讓CGAN更好的優化,這里不解釋,就是平常的優化網路了。

參考文章:

本文大部分翻譯此外文

通俗易懂

小博客的總結

唐宇迪大神

『貳』 GAN(1) GAN介紹: 基本概念及邏輯

GAN由Ian Goodfellow於2014年提出,並迅速成為了非常火熱的研究話題,GAN的變種更是有上千種,深度學習先驅之一的Yann LeCun就曾說, "GAN及其變種是數十年來機器學習領域最有趣的 idea" 。

聽起來很厲害的樣子,那麼什麼是GAN呢?

生成式對抗網路(GAN, Generative Adversarial Networks )是一種 深度學習 模型,是近年來復雜分布上 無監督學習 最具前景的方法之一。模型通過(至少)兩個模塊:生成模型(Generative Model)和判別模型(Discriminative Model)的零和博弈進行學習,即通過兩個網路的互相對抗來達到最好的生成效果。

這一段看完了,所以,什麼是GAN?看懂了嗎?感覺充滿了問號。。。接下來跟著李宏毅老師的節奏好好梳理一下。

概念里說,模型通過框架中(至少)兩個模塊:生成模型G(Generative Model)和判別模型D(Discriminative Model),那麼什麼是生成模型?什麼是判別模型?

生成模型G 是指能夠隨機生成觀測數據的模型,尤其是在給定某些隱含參數的條件下。在GAN中,可以理解為輸入一個vector,生成一個圖片、語音、文本等有結構的輸出。

判別模型D 是一種對未知數據與已知數據之間關系進行建模的方法,在GAN中,可以理解為判別器建立了訓練數據與生成器輸出的數據的關系,按訓練數據的標准為生成的數據打分。

以圖像的生成為例:

知道了生成器和判別器是什麼,那麼他們是怎麼配合工作來推動GAN的學習的呢?

以學習畫二次元人物頭像為例:

就這樣一步一步,老師覺得我們畫的頭像和真正的二次元美圖一樣美的時候,就不再抽我們大嘴巴子,我們終於出師了,是一個合格的生成器了!(這里的老師就是判別器,判別器也是需要學習的,雖然老師水平高,但他不學習也不一定知道什麼是美麗的二次元頭像)

生成器和判別器通過零和博弈來學習,什麼是零和博弈呢?

零和博弈(zero-sum game) ,又稱零和游戲,是博弈論的一個概念,屬非合作博弈。

它是指參與博弈的各方,在嚴格競爭下,一方的收益必然意味著另一方的損失,博弈各方的收益和損失相加總和永遠為「零」,可以說自己的幸福是建立在他人的痛苦之上的,二者的大小完全相等,因而雙方都想盡一切辦法以實現「損人利己」。

在上面的例子中,老師(判別器)抽我們(生成器)大嘴巴子,抽的越多他的快樂越多,我們的快樂越少,我們通過和老師博弈改變雙方的快樂,但快樂數值的總和一直都是零,這就是判別器和生成器的零和博弈,這種博弈的關系也是GAN中「Adversarial」的由來。

了解了GAN中的幾個關鍵詞的含義後,我們來看看GAN是怎樣運行的:

過程聽起來不是很復雜,不過問題是生成器和判別器兩個NN網路是用什麼結構組合在一起的呢?

其實, generator和discriminator是同一個大的網路 ,像上圖,整個大的網路的 前半部分是generator,後半部分是discriminator ,所以其輸入是vector,輸出就是得分,而圖片就在中間hidden層,即兩個網路的銜接處。所謂的生成是指:網路中間的一層hidden-layer的輸出是一個圖片,判別是指:對這個生成的圖片,網路的後半部分會訓練出一個得分(或者說概率)。

用稍微數學化一些的語言來表示上述過程:

什麼是結構化學習?

在機器學習過程中,對數據的擬合其實就是在找一個擬合函數:

對於回歸問題(Regression)來說,這個函數輸出一個標量(scalar)

對於分類問題(Classification)來說,這個函數輸出一個類別(one-hot 向量)

如果輸出的是一個序列,一個矩陣,一個圖,一顆樹...

其輸出由具有依賴關系的組件組成的,這就叫做結構化學習。

首先,對於一般的分類問題,每個類別會對應多個樣本,而結構化學習如果把每一個output當做一個類別來看的話,輸出空間就非常大,因為其輸出是多種多樣的,很可能是One-shot learning甚至Zero-shot learning。

One-shot learning: 對某一/某些類別只提供一個或者少量的訓練樣本;
Zero-shot learning: 對某一/某些類別完全不提供訓練樣本。

以文本為例,輸入「吃了嗎?」,輸出「吃過了」、「吃了」、「吃啦」等等都可以看做不同的類,所以用普通的分類是難以解決的。

再者,結構化學習的輸出是由具有依賴關系的組件組成的,需要考慮整體。

GAN的生成器可以生成各種輸出,判別器可以判斷輸出的好壞,似乎這兩個模塊都有很強的學習能力,那麼他們能獨立工作嗎?為什麼一定要進行博弈呢?

首先來看看生成器能不能自己學習。

生成器當然可以自己學習,在GAN之前就有自編碼器AE、變分自編碼器VAE。

自編碼器是一個如下圖所示結構的神經網路,其輸入和輸出的維度相同,中間的隱含層維度最小,作為編碼的結果,其前半部分encoder會盡可能的保留原始輸入的信息,以便在後半部分decoder還原輸入。

其實自編碼器AE得到的decoder就是一個生成器,不過AE的缺點是無法處理沒有訓練過的數據,當給code加上雜訊後,就不知道會輸出什麼了,可能是一個完全的亂碼或者是雜訊,我們希望的是「生成模型」能夠對任意的輸入編碼產生有相關意義的數據,這就是我們後面的「變分自編碼器VAE」所要做的事情。

變分自編碼器直接編碼成高斯分布,可以對各種隨機輸入產生有意義的輸出。

編碼器的目標是讓輸出與輸入盡可能的相似,怎麼評價相似呢?實際上是計算輸入向量與輸出向量的距離,拿圖片來說,向量距離表示兩個圖片有多少像素不同,但沒法表達更多的東西,比如位置等。

如下圖所示,編碼器會認為上面只差1個像素的圖更好,但實際上上面兩個在奇怪的地方多/少一個像素點,更容易看出不是人的手寫數字,而下面兩個雖然像素差的多,但其實只是筆畫長一點而已,更像是手寫的數字。

組間之間的關系非常重要,在編碼器中,盡管兩個組間高度相關,但卻無法相互影響,我們需要structure 來約束這個事情。就是在後面在加幾個隱藏層,就可以調整第L層的神經元輸出。也就是說理論上,VAE要想獲得GAN的效果,它的網路要比GAN要深才行。

而且由於VAE演算法採用的分布采樣,因此做一些離得比較散的目標效果不好:

下圖中綠色是目標,藍色是VAE學習的結果

總結一下,不依靠判別器,生成器獨立去學習是可以的,不過生成器是一個一個component來生成,每個component之間的關系不好控制,存在一定的缺點,不能從全局把握結果的好壞。

那麼,判別器能不能獨立學習來生成好的結果呢?

判別器也是可以獨立學習的。

判別器也就是Evaluation function, Potential Function, Energy Function …其特點是top-down evaluation,所以很容易控制component之間的關系,能更好的判斷一個結果的好壞,以手寫數字為例,判別器能輕松的捕捉到元素之間的相關性,這可是生成器很難解決的問題啊。

例如上面提到的問題,圖中所示的CNN Filter就可以輕松識別是不是有孤立的的像素點。

那麼應該怎麼做才能讓判別器得到好的輸出呢?

只需要窮舉所有可能的x,再挑一個使得判別器得分最好的那個即可:

判別器訓練的一個難點是缺失負向樣本,比如我們想要生成手寫字體或者二次元頭像,那麼我們的訓練數據其實只有正向樣本,或許我們可以通過給正向樣本增加雜訊來得到負向樣本,但我們製作的負向樣本的質量及分布是很難把握的,怎麼解決這個問題呢?

可以採用讓判別器自己來生成負向樣本的方法,演算法流程如下:

看起來似乎和GAN訓練差不多,但其實還存在著問題。如下圖可以幫助我們理解判別器訓練的過程,可以理解為判別器在為真實樣本打高分,同時壓制其他樣本的得分,並在每次迭代中修復自己的漏洞,最終希望訓練到除了真實樣本其他全是低分:

其缺點是什麼呢?

在高維空間中,負樣本采樣過程其實是很難進行的,再者判別器生成樣本的過程,即argmax過程,要枚舉大量樣本,效率很低。

判別器的生成既然這么麻煩的話,真的有用判別器來做生成任務的嗎?實際上,概率圖模型就是一類典型的判別器做生成的例子。

思考一下,概率圖模型我們會有一個圖,根據圖還會有一個Potential Function(勢函數,詳細馬爾科夫隨機場、CRF),這不就形成了一個可以打分的判別器嗎!計算出來的概率不就是打的分嗎?想一下CRF的訓練,就是通過給正向樣本和負樣本打分,不過迭代過程是不是有我不確定,HMM應該就沒有吧?總之這個角度的思路是非常棒的!

總結一下,判別器和生成器的區別:生成器 VS 判別器

綜合以上所述的生成器和判別器的優缺點,我們發現兩者是互補的,因此將其組合起來使用,充分利用兩者的優勢:

Benefit of GAN
(1) From Discriminator』s point of view
• Using generator to generate negative samples

(2)From Generator』s point of view
• Still generate the object component-bycomponent
• But it is learned from the discriminator with global view. (跟discriminator 學習大局觀)

GAN 的數學理論及推導在下一篇詳述,李宏毅老師在第一節介紹課程中也沒有講這部分。



主要參考
對抗生成網路(GAN)教程(2018) 李宏毅

『叄』 GAN網路什麼意思

品牌型號:華為MateBook D15
系統:Windows 11

GAN網路是一種機器學習方法,是一種深度學習模型,是近年來復雜分布上無監督學習最具前景的方法之一。模型通過框架中(至少)兩個模塊:生成模型(Generative Model)和判別模型(Discriminative Model)的互相博弈學習產生相當好的輸出。

原始 GAN 理論中,並不要求 G 和 D 都是神經網路,只需要是能擬合相應生成和判別的函數即可。但實用中一般均使用深度神經網路作為 G 和 D 。一個優秀的GAN應用需要有良好的訓練方法,否則可能由於神經網路模型的自由性而導致輸出不理想。

機器學習的模型可大體分為兩類,生成模型(Generative Model)和判別模型(Discriminative Model)。判別模型需要輸入變數 ,通過某種模型來預測 。生成模型是給定某種隱含信息,來隨機產生觀測數據。舉個簡單的例子:判別模型,給定一張圖,判斷這張圖里的動物是貓還是狗。生成模型,給一系列貓的圖片,生成一張新的貓咪(不在數據集里)

對於判別模型,損失函數是容易定義的,因為輸出的目標相對簡單。但對於生成模型,損失函數的定義就不是那麼容易。我們對於生成結果的期望,往往是一個曖昧不清,難以數學公理化定義的範式。所以不妨把生成模型的回饋部分,交給判別模型處理。這就是Goodfellow他將機器學習中的兩大類模型,Generative和Discrimitive給緊密地聯合在了一起。

『肆』 【模型解讀】歷數GAN的5大基本結構

首發於微信公眾號《有三AI》

【模型解讀】歷數GAN的5大基本結構

生成對抗網路是近幾年來無監督學習領域里最大的進展,被譽為下一代深度學習,不管是研究熱度還是論文數量,已經逼近甚至超越傳統判別式的CNN架構。

這一次我們簡單介紹一下生成對抗網路的主流模型結構,從一個生成器一個判別器到多個生成器多個判別器。

作者 | 言有三

編輯 | 言有三

我們這一期文章不打算從頭開始講述GAN,所以如果大家沒有相關基礎的,就先看一下我們上一期GAN的介紹。

【技術綜述】有三說GANs(上)​

一個基本的用於生成圖像的GAN的結構就是這樣的。

Generator就是生成器,它輸入雜訊,輸出產生的圖像。通常雜訊就是一個一維的向量,經過reshape為二維圖像,然後利用若干個反卷積層來學習上采樣。

如全卷積的DCGAN模型[1],輸入就是1*100的向量,然後經過一個全連接層學習,reshape到4*4*1024的張量,再經過4個上采樣的反卷積網路,生成64*64的圖。

Discrimator就是普通的CNN分類器,輸入真實樣本或者生成的假樣本進行分類,在DCGAN中也是4個卷積層。

採用多個判別器[2]的好處帶來了類似於boosting的優勢,訓練一個過於好的判別器,會損壞生成器的性能,這是GAN面臨的一個大難題。如果能夠訓練多個沒有那麼強的判別器,然後進行boosting,可以取得不錯的效果,甚至連dropout技術都可以應用進來。

多個判別器還可以相互進行分工,比如在圖像分類中,一個進行粗粒度的分類,一個進行細粒度的分類。在語音任務中,各自用於不同聲道的處理。

一般來說,生成器相比判別器要完成的任務更難,因為它要完成數據概率密度的擬合,而判別器只需要進行判別,導致影響GAN性能的一個問題就是模式坍塌,即生成高度相似的樣本。

採用多個生成器單個判別器的方法,可以有效地緩解這個問題。

從上圖結構可以看出,多個生成器採用同樣的結構,在網路的淺層還共享權重。

在利用GAN進行半監督的圖像分類任務時,判別器需要同時擔任兩個角色,即判別生成的假樣本,以及預測類別,這對判別器提出了較高的要求。通過增加一個分類器可以分擔判別器的工作量,即將捕捉樣本和標簽的條件分布這一任務交給生成器和分類器,而判別器只專注於區分真實樣本和生成的樣本。

這一類結構以Triple Generative Adversarial Nets為代表,下圖是它的網路結構。

多個生成器和多個判別器就又有幾種。

5.1 級聯結構[5]

早期以DCGAN為代表的網路生成的圖片解析度太低,質量不夠好,都不超過100×100,在32×32或者64×64左右。這是因為難以一次性學習到生成高解析度的樣本,收斂過程容易不穩定。

類似的問題在圖像分割,目標檢測中都存在。在目標檢測中,級聯網路被廣泛使用,即採用從粗到精的方法依次改進檢測器的性能。在圖像分割中進行上采樣時也採用學習小倍率的放大而不是大倍率的方法,如利用兩個2倍上采樣替換一個4倍的上采樣,不僅可以增強網路的表達能力,還降低了學習難度。

基於此,金字塔GAN結構被提出並廣泛使用,它參考圖像領域裡面的金字塔結構由粗到精一步一步生成圖像,並添加殘差進行學習。

上圖就是它的結構,從低解析度z3開始,逐級提升,最終生成I0,這是一個金字塔形狀的結構,以下符號較多用圖片代替。

5.2 並行與循環結構[6]

GAN有一大應用就是風格化,實現兩個域之間的風格互換,以CycleGAN[6]為典型代表。它包含了多個生成器和多個判別器。Cycle的典型結構如下:

X和Y分別表示兩個域的圖像,可知這里存在兩個生成器G和F,分別用於從X到Y的生成和Y到X到生成,包含兩個判別器,分別是Dx和Dy。而損失本身也增加了一個循環損失,感興趣讀者可以去細讀文章。

另外在cross domain學習中也常用到多判別器多生成器多結構,分別學習不同的域。而且各個域的判別器和生成器通常會共享一些權重,如下圖是CoGAN[7]的網路結構。

另外還有一些零零散散的結構,比如3D GAN,RNN GAN,由於都是上面這幾類的變種,不再統一介紹。

[1] Radford A, Metz L, Chintala S, et al. Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks[J]. international conference on learning representations, 2016.

[2] Durugkar I P, Gemp I, Mahadevan S, et al. Generative Multi-Adversarial Networks[J]. international conference on learning representations, 2017.

[3] Ghosh A, Kulharia V, Namboodiri V P, et al. Multi-Agent Diverse Generative Adversarial Networks[J]. computer vision and pattern recognition, 2018: 8513-8521.

[4] Chongxuan L I, Xu T, Zhu J, et al. Triple Generative Adversarial Nets[J]. neural information processing systems, 2017: 4088-4098.

[5] Denton E L, Chintala S, Szlam A, et al. Deep generative image models using a Laplacian pyramid of adversarial networks[J]. neural information processing systems, 2015: 1486-1494.

[6] Zhu J, Park T, Isola P, et al. Unpaired Image-to-Image Translation Using Cycle-Consistent Adversarial Networks[J]. international conference on computer vision, 2017: 2242-2251.

[7] Liu M, Tuzel O. Coupled Generative Adversarial Networks[J]. neural information processing systems, 2016: 469-477.

本系列的完整目錄:

【模型解讀】從LeNet到VGG,看卷積+池化串聯的網路結構

【模型解讀】network in network中的1*1卷積,你懂了嗎

【模型解讀】GoogLeNet中的inception結構,你看懂了嗎

【模型解讀】說說移動端基準模型MobileNets

【模型解讀】pooling去哪兒了?

【模型解讀】resnet中的殘差連接,你確定真的看懂了?

【模型解讀】「不正經」的卷積神經網路

【模型解讀】「全連接」的卷積網路,有什麼好?

【模型解讀】從「局部連接」回到「全連接」的神經網路

【模型解讀】深度學習網路只能有一個輸入嗎

【模型解讀】從2D卷積到3D卷積,都有什麼不一樣

【模型解讀】淺析RNN到LSTM

『伍』 gan演算法不包括以下哪個模型

不管何種模型,其損失函數(Loss Function)選擇,將影響到訓練結果質量,是機器學習模型設計的重要部分。對於判別模型,損失函數是容易定義的,因為輸出的目標相對簡單。但對於生成模型,損失函數卻是不容易定義的。
2014年GoodFellow等人發表了一篇論文「Goodfellow, Ian, et al. Generative adversarial nets." Advances inNeural Information Processing Systems. 2014」,引發了GAN生成式對抗網路的研究,值得學習和探討。今天就跟大家探討一下GAN演算法。

GAN演算法概念:

對於生成結果的期望,往往是一個難以數學公理化定義的範式。所以不妨把生成模型的回饋部分,交給判別模型處理。於是Goodfellow等人將機器學習中的兩類模型(G、D模型)緊密地聯合在了一起(該演算法最巧妙的地方!)。

一個優秀的GAN模型應用需要有良好的訓練方法,否則可能由於神經網路模型的自由性而導致輸出結果不理想。

GAN演算法原理:

1.先以生成圖片為例進行說明:

1)G是一個生成圖片的網路,它接收一個隨機的雜訊z,通過這個雜訊生成圖片,記做G(z)。

3)在最理想的狀態下,G可以生成足以「以假亂真」的圖片G(z)。對於D來說,它難以判定G生成的圖片究竟是不是真實的,因此D(G(z)) = 0.5。

4)這樣目的就達成了:得到了一個生成式的模型G,它可以用來生成圖片。

在訓練過程中,生成網路G的目標就是盡量生成真實的圖片去欺騙判別網路D。而判別網路D的目標就是盡量把G生成的圖片和真實的圖片分別開來。這樣,G和D構成了一個動態的「博弈過程」。

2.再以理論抽象進行說明:

GAN是一種通過對抗過程估計生成模型的新框架。框架中同時訓練兩個模型:捕獲數據分布的生成模型G,和估計樣本來自訓練數據的概率的判別模型D。G的訓練程序是將D錯誤的概率最大化。可以證明在任意函數G和D的空間中,存在唯一的解決方案,使得G重現訓練數據分布,而D=0.5(D判斷不出真假,50%概率,跟拋硬幣決定一樣)。在G和D由多層感知器定義的情況下,整個系統可以用反向傳播進行訓練。在訓練或生成樣本期間,不需要任何馬爾科夫鏈或展開的近似推理網路。實驗通過對生成的樣品的定性和定量評估,證明了GAN框架的潛在優勢。

Goodfellow從理論上證明了該演算法的收斂性。在模型收斂時,生成數據和真實數據具有相同分布,從而保證了模型效果。

GAN公式形式如下:

GAN公式說明如下:

1)公式中x表示真實圖片,z表示輸入G網路的雜訊,G(z)表示G網路生成的圖片;

2)D(x)表示D網路判斷圖片是否真實的概率,因為x就是真實的,所以對於D來說,這個值越接近1越好。

3)G的目的:D(G(z))是D網路判斷G生成的圖片的是否真實的概率。G應該希望自己生成的圖片「越接近真實越好」。也就是說,G希望D(G(z))盡可能得大,這時V(D, G)會變小。因此公式的最前面記號是min_G。

4)D的目的:D的能力越強,D(x)應該越大,D(G(x))應該越小。這時V(D,G)會變大。因此式子對於D來說是求最大max_D。

GAN訓練過程:

GAN通過隨機梯度下降法來訓練D和G。

1)首先訓練D,D希望V(G, D)越大越好,所以是加上梯度(ascending)

2)然後訓練G時,G希望V(G, D)越小越好,所以是減去梯度(descending);

3) 整個訓練過程交替進行。

GAN訓練具體過程如下:

GAN演算法優點:

1)使用了latent code,用以表達latent dimension、控制數據隱含關系等;

2)數據會逐漸統一;

3)不需要馬爾可夫鏈;

4)被認為可以生成最好的樣本(不過沒法鑒定「好」與「不好」);

5)只有反向傳播被用來獲得梯度,學習期間不需要推理;

6)各種各樣的功能可以被納入到模型中;

7)可以表示非常尖銳,甚至退化的分布。

GAN演算法缺點:

1)Pg(x)沒有顯式表示;

2)D在訓練過程中必須與G同步良好;

3)G不能被訓練太多;

4)波茲曼機必須在學習步驟之間保持最新。

GAN演算法擴展:

GAN框架允許有許多擴展:

1)通過將C作為輸入,輸入G和D,可以得到條件生成模型P(x|c);

2)學習近似推理,可以通過訓練輔助網路來預測Z。

3)通過訓練一組共享參數的條件模型,可以近似地模擬所有條件。本質上,可以使用對抗性網路實現確定性MP-DBM的隨機擴展。

4)半監督學習:當僅有有限標記數據時,來自判別器或推理網路的特徵可以提高分類器的性能。

5)效率改進:通過劃分更好的方法可以大大加快訓練,更好的方法包括:a)協調G和D; b) 在訓練期間,確定訓練樣本Z的更好分布。

GAN演算法應用:

GAN的應用范圍較廣,擴展性也強,可應用於圖像生成、數據增強和圖像處理等領域。

1)圖像生成:

目前GAN最常使用的地方就是圖像生成,如超解析度任務,語義分割等。

2)數據增強:

用GAN生成的圖像來做數據增強。主要解決的問題是a)對於小數據集,數據量不足,可以生成一些數據;b)用原始數據訓練一個GAN,GAN生成的數據label不同類別。

結語:

GAN生成式對抗網路是一種深度學習模型,是近年來復雜分布上無監督學習最具有前景的方法之一,值得深入研究。GAN生成式對抗網路的模型至少包括兩個模塊:G模型-生成模型和D模型-判別模型。兩者互相博弈學習產生相當好的輸出結果。GAN演算法應用范圍較廣,擴展性也強,可應用於圖像生成、數據增強和圖像處理等領域

『陸』 gan13調試到幾檔

大家分享一下自己gan13的調試參數吧【魔方吧】 - 網路貼吧
9月17日大家分享一下自己gan13的調試參數吧 只看樓主收藏回復 促成超好吃 仍看置頂 4 送TA禮物 來自iPhone客戶端1樓2022-09-17 00:01回復 ...
貼吧

gan13檔位怎麼調 - D時代
10月30日gan13好,它的性能方面得到了很大提升。使用的是全新一代的處理器,在感測氣方面也有升級,所以信號接受能力方面提升比較巨大,不會出現日常使用網路...
www.dtime.com

gan13調試到幾檔 - 家電工程師答疑 - 問一問
5分鍾內回復 多年專業經驗
gan13調試到幾檔
馬上提問

gain調多少合適
120

『柒』 GAN生成對抗網路(一)

GAN(Generative Adversarial Networks)是兩個網路的的組合, 一個網路生成模擬數據, 另一個網路判斷生成的數據是真實的還是模擬的。生成模擬數據的網路要不斷優化自己讓判別的網路判斷不出來, 判別的網路也要優化自己讓自己判斷得更准確。 二者關系形成對抗博弈,因此叫 對抗神經網路 (生成對抗網路)。實驗證明, 利用這種網路間的對抗關系所形成的網路, 在無監督及半監督領域取得了很好的效果, 可以算是用網路來監督網路的一個自學習過程。在GAN發明之前,變分自編碼器被認為是理論完美、實現簡單,使用神經網路訓練起來很穩定, 生成的圖片逼近度也較高, 但是人類還是可以很輕易地分辨出真實圖片與機器生成的圖片。

生成對抗網路包含了 2 個子網路: 生成網路(Generator, G)和判別網路(Discriminator,D), 其中生成網路負責學習樣本的真實分布,判別網路負責將生成網路采樣的樣本與真實樣本區分開來。

生成網路 G(𝐳) 生成網路 G 和自編碼器的 Decoder 功能類似, 從先驗分布 中采樣隱藏變數 ,通過生成網路 G 參數化的 分布, 獲得生成樣本 ,如下圖所示。 其中隱藏變數𝒛的先驗分布 可以假設屬於某中已知的分布,比如多元均勻分布 。

可以用深度神經網路來參數化, 如下圖所示, 從均勻分布 中采樣出隱藏變數𝒛, 經過多層轉置卷積層網路參數化的 分布中采樣出樣本 。

判別網路 D(𝒙) 判別網路和普通的二分類網路功能類似,它接受輸入樣本𝒙,包含了采樣自真實數據分布 的樣本 ,也包含了采樣自生成網路的假樣本 , 和 共同組成了判別網路的訓練數據集。判別網路輸出為𝒙屬於真實樣本的概率 ,我們把所有真實樣本 的標簽標注為1,所有生成網路產生的樣本 標注為0, 通過最小化判別網路預測值與標簽之間的誤差來優化判別網路參數。

我們的目標很明確, 既要不斷提升判斷器辨別真假圖像樣本的能力, 又要不斷提升生成器生成更加逼真的圖像,使判別器越來越難判別。
對於判別網路 D ,它的目標是能夠很好地分辨出真樣本 與假樣本 。即最小化圖片的預測值和真實值之間的交叉熵損失函數:

其中 代表真實樣本 在判別網路 的輸出, 為判別網路的參數集, 為生成樣本 在判別網路的輸出, 為 的標簽,由於真實樣本標注為真,故 , 為生成樣本的 的標簽,由於生成樣本標注為假,故 。 根據二分類問題的交叉熵損失函數定義:

因此判別網路的優化目標是:

去掉 中的負號,把 問題轉換為 問題,並寫為期望形式:

對於生成網路G(𝒛) ,我們希望 能夠很好地騙過判別網路 , 假樣本 在判別網路的輸出越接近真實的標簽越好。也就是說,在訓練生成網路時, 希望判別網路的輸出 越逼近 1 越好,此時的交叉熵損失函數:

把 問題轉換為 問題,並寫為期望形式:

再等價轉化為:

GAN的優化過程不像通常的求損失函數的最小值, 而是保持生成與判別兩股力量的動態平衡。 因此, 其訓練過程要比一般神經網路難很多。

把判別網路的目標和生成網路的目標合並,寫成min-max形式:

原GAN論文中:

這里為了好理解,把各個符號梳理的更清晰了,注意符號和網路參數的對應。
理想情況下 , 會有更精確的鑒別真偽數據的能力,經過大量次數的迭代訓練會使 盡可能模擬出以假亂真的樣本, 最終整個GAN會達到所謂的納什均衡, 即 對於生成樣本和真實樣本鑒別結果為正確率和錯誤率各佔50%。下面具體從理論層面來推導。

現在從理論層面進行分析, 通過博弈學習的訓練方式,生成器 G 和判別器 D 分別會達到什麼狀態。 具體地,來看以下 2 個問題:

首先我們通過 一維正態分布的例子給出一個直觀的解釋,如下圖所示,黑色虛線曲線代表了真實數據的分布 , 為某正態分布 , 綠色實線代表了生成網路學習到的分布 , 藍色虛線代表了判別器的決策邊界曲線, 圖中(a)(b)(c)(d)分別代表了生成網路的學習軌跡。在初始狀態,如圖 (a)所示, 分布與 差異較大,判別器可以很輕松地學習到決策邊界,即圖(a)中的藍色虛線,將來自 的采樣點判定為 0, 中的采樣點判定為 1。 隨著生成網路的分布 越來越逼近真實分布 ,判別器越來越困難將真假樣本區分開,如圖 (b)(c)所示。 最後,生成網路性能達到最佳,學習到的分布 ,此時從生成網路中采樣的樣本非常逼真, 判別器無法區分,即判定為真假樣本的概率均等,如圖(d)所示。

固定生成器G的參數 ,判別器D最佳能達到的狀態:

證明: 對於給定的生成器G,要讓判別器D達到最優,我們的目標是最大化損失函數,其積分形式為:

對於給定的 ,真實分布始終是固定的,所以 和 都是定值,於是對於判別器D,要找出

的最大值,其中 是判別器網路參數,對於函數 ,不難得到 在 處取得極大值且是最大值。因此可得 的極值點也為

故判別器 能達到的最佳狀態為定理中給出的式子。

現在考慮第二個問題。
JS 散度(Jensen–Shannon divergence)

對於KL散度, ,是不對稱的。但JS散度是對稱的。

當 達到 時,考慮此時 和 的 散度:

考慮到判別網路到達 時,此時的損失函數為:

於是我們可以得到:

對於生成網路 而言,目標是最小化損失函數,由於 ,因此 取得最小值僅在 時(此時 ), 取得最小值:

此時生成網路達到 狀態是:

即 的學到的分布 與真實分布 一致,網路達到納什均衡點,此時:

即對於生成器生成的圖像有0.5的概率被判定為真,也有0.5的概率被判定為假。