「模型解讀」歷數GAN的5大基本結構
生成對抗網路是近幾年來無監督學習領域裡最大的進展,被譽為下一代深度學習,不管是研究熱度還是論文數量,已經逼近甚至超越傳統判別式的CNN架構。
這一次我們簡單介紹一下生成對抗網路的主流模型結構,從一個生成器一個判別器到多個生成器多個判別器。
作者 | 言有三
編輯 | 言有三
1 單判別器單生成器
我們這一期文章不打算從頭開始講述GAN,所以如果大家沒有相關基礎的,就先看一下我們上一期GAN的介紹。
【技術綜述】有三說GANs(上)
一個基本的用於生成影像的GAN的結構就是這樣的。
Generator就是生成器,它輸入噪聲,輸出產生的影像。通常噪聲就是一個一維的向量,經過reshape為二維影像,然後利用若干個反摺積層來學習上取樣。
如全卷積的DCGAN模型[1],輸入就是1*100的向量,然後經過一個全連線層學習,reshape到4*4*1024的張量,再經過4個上取樣的反摺積網路,生成64*64的圖。
Discrimator就是普通的CNN分類器,輸入真實樣本或者生成的假樣本進行分類,在DCGAN中也是4個卷積層。
2 多判別器單生成器
採用多個判別器[2]的好處帶來了類似於boosting的優勢,訓練一個過於好的判別器,會損壞生成器的效能,這是GAN面臨的一個大難題。如果能夠訓練多個沒有那麼強的判別器,然後進行boosting,可以取得不錯的效果,甚至連dropout技術都可以應用進來。
多個判別器還可以相互進行分工,比如在影像分類中,一個進行粗粒度的分類,一個進行細粒度的分類。在語音任務中,各自用於不同聲道的處理。
3 單判別器多生成器
一般來說,生成器相比判別器要完成的任務更難,因為它要完成資料機率密度的擬合,而判別器只需要進行判別,導致影響GAN效能的一個問題就是模式坍塌,即生成高度相似的樣本。
採用多個生成器單個判別器的方法,可以有效地緩解這個問題。
從上圖結構可以看出,多個生成器採用同樣的結構,在網路的淺層還共享權重。
4 增加分類器
在利用GAN進行半監督的影像分類任務時,判別器需要同時擔任兩個角色,即判別生成的假樣本,以及預測類別,這對判別器提出了較高的要求。透過增加一個分類器可以分擔判別器的工作量,即將捕捉樣本和標籤的條件分佈這一任務交給生成器和分類器,而判別器只專注於區分真實樣本和生成的樣本。
這一類結構以Triple Generative Adversarial Nets為代表,下圖是它的網路結構。
5 多個生成器多個判別器
多個生成器和多個判別器就又有幾種。
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.
GAN如今火勢正猛,正是學習的好時機,如果沒有跟上,你還在等什麼。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2650475/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Attention的基本原理與模型結構模型
- 解讀生成對抗網路(GAN) 之U-GAN-IT
- 能量視角下的GAN模型:GAN=“挖坑”+“跳坑”模型
- 李巨集毅GAN學習(四)GAN的基本理論
- 能量視角下的GAN模型(二):GAN=“分析”+“取樣”模型
- RabbitMQ 入門(二)基本結構和訊息模型MQ模型
- 文章的基本結構
- hbase 的基本結構
- 論文解讀(GAN)《Generative Adversarial Networks》
- 智慧卡的基本結構
- GAN實戰筆記——第三章第一個GAN模型:生成手寫數字筆記模型
- HTML 基本結構HTML
- 基本HTML結構HTML
- ffmpeg基本結構
- Spark的基本結構及SparkSQL元件的基本用法SparkSQL元件
- RecyclerView的基本設計結構View
- caffe的基本資料結構資料結構
- 英語句子的基本結構
- JVM的基本結構和JVM的記憶體結構JVM記憶體
- 支援 gRPC 長連結,深度解讀 Nacos 2.0 架構設計及新模型RPC架構模型
- 《代數的歷史》讀書筆記筆記
- 3.1 HTML基本結構HTML
- Unix目錄結構的來歷
- Bytom設計結構解讀
- 讀懂概率圖模型:從基本概念和引數估計開始模型
- ThinkPHP 5 模型使用歷程 - 小結PHP模型
- jQuery的遍歷結構設計之遍歷同胞jQuery
- jQuery的遍歷結構設計之遍歷祖先jQuery
- 用python講解資料結構之樹的遍歷Python資料結構
- 七、基本資料結構(樹形結構)資料結構
- 資料結構的基本概念資料結構
- Stage模型深入解讀模型
- 簡單使用PyTorch搭建GAN模型PyTorch模型
- 因果模型:邊緣結構模型MSM模型
- 什麼是LLM大模型訓練,詳解Transformer結構模型大模型ORM
- 基本資料結構梳理資料結構
- 塑性力學本構模型基本框架7模型框架
- JAVA的基本程式設計結構(下)Java程式設計