判別式模型和生成是模型的區別:
假設研究物件為變數為x,類別變數為y,則:
判別式模型:
只是對給定的樣本進行分類,不關心資料如何生成。
按照一定的判別準則,從資料中直接學習決策函式y=f(x)或者條件概率分布p(y|x;a)作為**的模型
典型的判別模型包括:k近鄰法,決策樹,最大熵模型,支援向量機等
生成式模型:
根據生成假設,哪個類別最有可能生成這個樣本
從資料中學習聯合概率分布p(x,y),其之後可以轉變為p(y|x)作為**模型,例如利用條件概率分布p(y|x)=p(x,y)/p(x)
生成對抗網路gan基本原理:
gan包括兩部分:生成器和判別器
生成器:從隨機雜訊中生成影象(隨機雜訊通常從均勻分布或高斯分布中獲取)
判別器:其輸入為生成器生成的影象和來自訓練集中的真實影象,並對其進行判別。得到輸出值為乙個0到1之間的數,表示影象為真實影象的概率,real為1,fake為0.
來自真實資料的概率越大越好,來自生成樣本的概率越小越好
盡量正確的判斷接受到的影象是生成的還是真實的影象
生成的讓判別器難以判別真假
盡量生成接近真實資料的
先更新判別器
固定生成器g,更新判別器d
固定判別器d,更新判別器g
更新要使梯度下降
gan在生成模型之外引入乙個判別模型,通過兩者之間的對抗訓練達到優化目的
生成器:
gan生成器網路
import tensorflow as tf
import keras
from keras import layers
import numpy as np
latent_dim=
32height=
32width=
32channels=
3generator_input=keras.input(shape=
(latent_dim,))
x=layers.dense(
128*16*
16)(generator_input)
#將輸入轉換為大小為16*16的128個通道的特徵圖
x=layers.leakyrelu(
)(x)
x=layers.reshape((16
,16,128))
(x)x=layers.conv2d(
256,
5,padding=
'same'
)(x)
x=layers.leakyrelu(
)(x)
x=layers.conv2dtranspose(
256,
4,strides=
2,padding=
'same'
)(x)
x=layers.leakyrelu(
)(x)
x=layers.conv2d(
256,
5,padding=
'same'
)(x)
x=layers.leakyrelu(
)(x)
x=layers.conv2d(
256,
5,padding=
'same'
)(x)
x=layers.leakyrelu(
)(x)
x=layers.conv2d(channels,
7,activation=
'tanh'
,padding=
'same'
)(x)
generator=keras.models.model(generator_input,x)
generator.summary(
)
gan判別器網路
discriminator_input=layers.input(shape=
(height,width,channels)
)x=layers.conv2d(
128,3)
(discriminator_input)
x=layers.leakyrelu(
)(x)
x=layers.conv2d(
128,
4,strides=2)
(x)x=layers.leakyrelu(
)(x)
x=layers.conv2d(
128,
4,strides=2)
(x)x=layers.leakyrelu(
)(x)
x=layers.conv2d(
128,
4,strides=2)
(x)x=layers.leakyrelu(
)(x)
x=layers.flatten(
)(x)
x=layers.dropout(
0.4)
(x)x=layers.dense(
1,activation=
'sigmoid'
)(x)
discriminator=keras.models.model(discriminator_input,x)
#將輸入轉換為乙個二進位制分類決策
discriminator.summary(
)discriminator_optimizer=keras.optimizers.rmsprop(
lr=0.0008
, clipvalue=
1.0,
#限制梯度值的範圍
decay=1e-
8#使用學習率衰減
)discriminator.
compile
(optimizer=discriminator_optimizer,loss=
'binary_crossentropy'
)
生成式對抗網路GAN
一 背景 gan的用途 影象超畫素 背景模糊 影象修復 二 生成式對抗網路gan 生成模型 乙個能夠生成我們想要的資料的模型 圖模型 函式 神經網路 gan 目的就是訓練乙個生成模型,生成我們想要的資料 生成器和判別器是對抗的 三 訓練演算法 隨機初始化生成器和判別器 交替訓練判別器d和生成器g直到...
生成對抗式網路 GAN
lan goodfellow 加拿大蒙特婁大學 neurips 基於對抗的新生成式模型,它由乙個生成器和乙個判別器組成 生成器的目標是學習樣本的資料分布,從而能生成樣本欺騙判別器 判別器的目標是判斷輸入樣本是生成 真實的概率 gan模型等同於博弈論中的二人零和博弈 對於任意生成器和判別器,都存在乙個...
深度學習 GAN生成式對抗網路
生成式對抗網路 gan,generative adversarial network 的簡單理解就是,想想一名偽造者試圖偽造一幅畢卡索的畫作。一開始,偽造者非常不擅長這項任務,他隨便畫了幅與畢卡索真跡放在一起,請鑑定商進行評估,鑑定商鑑定後,將結果反饋給偽造者,並告訴他怎樣可以讓 看起來更像畢卡索的...