1. 程式人生 > >生成對抗網路(Generative Adversarial Networks, GAN)

生成對抗網路(Generative Adversarial Networks, GAN)

 

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

 

GAN 主要包括了兩個部分,即生成器 generator 與判別器 discriminator。生成器主要用來學習真實影象分佈從而讓自身生成的影象更加真實,以騙過判別器。判別器則需要對接收的圖片進行真假判別。在整個過程中,生成器努力地讓生成的影象更加真實,而判別器則努力地去識別出影象的真假,這個過程相當於一個二人博弈,隨著時間的推移,生成器和判別器在不斷地進行對抗,最終兩個網路達到了一個動態均衡:生成器生成的影象接近於真實影象分佈,而判別器識別不出真假影象,對於給定影象的預測為真的概率基本接近 0.5(相當於隨機猜測類別)。

 

 

這就是GAN的基本思想,其實並不難理解。但是,迴歸到神經網路本身,怎麼去實現這種思想才是關鍵,我認為,進一步地,我認為如何定義損失函式才是關鍵。下圖為GAN原論文中的損失函式公式:

 

 

我們來說說這個公式:

  • 整個式子由兩項構成。x表示真實圖片,z表示輸入G網路的噪聲,而G(z)表示G網路生成的圖片。

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

  • G的目的:上面提到過,D(G(z))是D網路判斷G生成的圖片是否真實的概率,G應該希望自己生成的圖片“越接近真實越好”。也就是說,G希望D(G(z))儘可能得大,這時V(D, G)會變小。因此我們看到式子的最前面的記號是min_G。

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

 

接下來,我們通過程式碼來實際感受生成式對抗網路GAN。程式碼使用Python3.8+tensorflow2.3.1實現,資料集為mnist手寫數字識別資料集。

In [1]:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np 
import glob
import os
In [2]:
tf.__version__
Out[2]:

相關推薦

生成對抗網路Generative Adversarial Networks, GAN

  生成對抗網路(Generative Adversarial Networks, GAN)是一種深度學習模型,是近年來複雜分佈上無監督學習最具前景的學習方法之一。   GAN 主要包括了兩個部分,即生成器 generator 與判別器 discriminator。生

生成對抗網路Generative Adversarial NetworksGAN初探

1. 從納什均衡(Nash equilibrium)說起 我們先來看看納什均衡的經濟學定義: 所謂納什均衡,指的是參與人的這樣一種策略組合,在該策略組合上,任何參與人單獨改變策略都不會得到好處。換句話說,如果在一個策略組合上,當所有其他人都不改變策略時,沒有人會改變自己的策略,則該策略組合就是一個

【Learning Notes】生成對抗網路Generative Adversarial NetworksGAN

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

七個不容易被發現的生成對抗網路GAN用例

像許多追隨AI發展的人一樣,我無法忽略生成建模的最新進展,尤其是影象生成中生成對抗網路(GAN)的巨大成功。看看下面這些樣本:它們與真實照片幾乎沒有區別!   從2014年到2018年,面部生成的進展也非常顯著。 這些結果讓我感到興奮,但我內心總是懷疑它們是否真

生成對抗網路GAN應用於影象分類

  近年來,深度學習技術被廣泛應用於各類資料處理任務中,比如影象、語音和文字。而生成對抗網路(GAN)和強化學習(RL)已經成為了深度學習框架中的兩顆“明珠”。強化學習主要用於決策問題,主要的應用就是遊戲,比如deepmind團隊的AlphaGo。因為我的研究方向是影象的有監督分類問題,

在瀏覽器中進行深度學習:TensorFlow.js (八生成對抗網路 GAN

Generative Adversarial Network 是深度學習中非常有趣的一種方法。GAN最早源自Ian Goodfellow的這篇論文。LeCun對GAN給出了極高的評價: “There are many interesting recent development in deep learni

一篇讀懂生成對抗網路GAN原理+tensorflow程式碼實現

作者:JASON 2017.10.15   生成對抗網路GAN(Generative adversarial networks)是最近很火的深度學習方法,要理解它可以把它分成生成模型和判別模型兩個部分,簡單來說就是:兩個人比賽,看是 A 的矛厲害,還是 B

生成對抗網路GAN的前沿進展論文、報告、框架和Github資源彙總

生成模型(GenerativeModel)是一種可以通過學習訓練樣本來產生更多類似樣本的模型。在所有生成模型當中,最具潛力的是生成對抗網路(Generative Adversarial Networks, GANs)。GANs 是非監督機器學習的一種,它的運作方式可被看

生成對抗網路GAN簡單入門33---《深度學習》

生成對抗網路與2014年被提出,一經提出便引發了深度學習的又一次小高潮,屬於無監督學習,本篇部落格主要介紹***GAN網路的結構以及訓練過程!*** 對抗樣本即對抗網路的發展大家可以參考GANs學習系列(4):對抗樣本和對抗網路,有助於建立一個對對抗樣本的系統認

火熱的生成對抗網路GAN,你究竟好在哪裡

【線上直播】《TensorFlow實戰》作者、PPmoney大資料演算法總監黃文堅老師即將開課:《使用TensorFlow建立可自動玩遊戲的DQN模型》,本次課程集中講解Deep-Q Network及其TensorFlow的實現。點選報名 自2014年Ia

生成對抗網路GAN是幹什麼用的?

什麼是生成對抗網路?生成式對抗網路(GAN, Generative Adversarial Networks )是一種深度學習模型

一文入門人工智慧的掌上明珠:生成對抗網路GAN

一.簡介 在人工智慧領域內,GAN是目前最為潮流的技術之一,GAN能夠讓人工智慧具備和人類一樣的想象能力。只需要給定計算機一定的資料,它就可以自動聯想出相似的資料。我們學習和使用GAN的原因如下: 1.能夠用GAN進行無監督學習:深度學習需要大量資料的標註才能夠進行監督學習,而使用GAN則不需要使用大量標註的

解讀生成對抗網路GAN 之U-GAN-IT

Unsupervised Generative Attentionnal Networks with Adapter Layer-In(U-GAN-IT) 從字面我們可以理解為無監督生成對抗網路和適配層的結合   論文實現: 論文實現了無監督影象的翻譯問題,當兩個影象之間兩個影象、紋理差別較大時的

生成對抗網路CGAN37---《深度學習》

在前面我們簡單介紹了生成對抗網路(GAN)的基本結構和其訓練方式,然而這種方式是基於無監督學習的,沒有指定對應的標籤,使用一個分佈直接進行取樣,從而理論上達到可以完全逼近原始資料,因此生成網路G比較自由,而且當圖片的畫素較多的時候,這樣導致訓練好的生成網路G不可

卷積生成對抗網路DCGAN---生成手寫數字

# 深度卷積生成對抗網路(DCGAN) ## ---- 生成 MNIST 手寫圖片 ## 1、基本原理 生成對抗網路(GAN)由2個重要的部分構成: - 生成器(Generator):通過機器生成資料(大部分情況下是影象),目的是“騙過”判別器 - 判別器(Discriminator):判斷這張影象是真實

GAN ZOO翻譯系列】基於能量的生成對抗網路 Energy-Based Generative Adversarial Networks

趙俊博, Michael Mathieu, Yann LeCun 紐約大學計算機科學系 Facebook人工智慧研究院 {jakezhao, mathieu, yann}@cs.nyu.edu 原文連結https://arxiv.org/abs/1609.031

GAN ZOO閱讀】模式正則化的生成對抗網路 MODE REGULARIZED GENERATIVE ADVERSARIAL NETWORKS

原文地址: https://arxiv.org/abs/1612.02136 引用之請註明出處。 Tong Che 1,Yanran Li 2 3,Athul Paul Jacob 1,Yoshua Bengio 1,Wenjie Li 2 1 蒙特利爾學習演算法

Generative Adversarial Network (GAN) 生成對抗網路

Part One. Introduction of GAN The Structure of GAN 其中可以看到GAN中有兩個最關鍵的結構就是generator(生成器)和discriminator(判別器)。生成器是為了生成接近真實資料分佈的虛假樣本,判別器是為了

GAN ZOO閱讀】Generative Adversarial Nets 生成對抗網路 原文翻譯 by zk

Ian J. Goodfellow, Jean Pouget-Abadie ∗ , Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair † , Aaron Courville, Yoshua Bengio ‡

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

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