1. 程式人生 > 實用技巧 >生成對抗網路GAN基礎系列(一)

生成對抗網路GAN基礎系列(一)

一、背景

基本結構:
在這裡插入圖片描述
2014年GAN的概念首次提出,上圖為GAN的基礎模型,z為隨機噪聲經過生成器G,輸出生成資料G(z),真實資料和生成資料分別輸入判別器D,判別器需要分辨他們是real還是fake,對於真實資料,判別器給它一個高分,對於生成的fake資料,則是低分。
類似於其他的神經網路利用損失函式進行優化網路,gan同樣具有目標函式:在這裡插入圖片描述其核心思想是最大化真實資料輸入時函式的值,同時降低fake資料輸入時最小化函式值。

二、結構

生產抵抗網路主要有以下幾種結構:
1.generative adversial nets
2.conditional gan
3.deep convlutional gan

4.wassertein gan with weighted clipping/gradient penalty

三、訓練演算法

1隨機初始化生成器和判別器
2交替訓練判別器D和生成器G,直到收斂
(1)固定生成器G,訓練判別器D區分真實影象與合成影象,給真實影象高分,生成影象低分。
(2)固定判別器D,訓練生成器G欺騙判別器D,更新生成器的引數,使其合成的圖片被生成器D賦予高分。

實現GAN:
準備工作:
定義網路結構:判別器和生成器的網路結構
定義目標函式:根據預測標籤和真實標籤,計算損失
定義優化器:優化器,自動計算梯度並優化網路權重
資料載入:載入資料集

訓練直到收斂
載入資料:
提取一個batch的真實資料

生成一個batch的虛假資料

計算損失並優化模型:
計算判別器損失,並優化判別器
計算生成器損失,並優化生成器

四、指標

KL散度:衡量兩個概率分佈的匹配程度的目標
在這裡插入圖片描述特點:P1=P2時,KL散度為零,且KL散度具有非負性。但是對於資料分佈P(x)和Q(x),KL(P(x)||Q(x))和KL(Q(x)||P(x))並不相等,因此KL散度不對稱。
因此引入了JS散度:在這裡插入圖片描述JS散度具有非負性以及對稱性。
GAN的生成模型就是在學習找到資料的分佈。