GAN - 논문 핵심 내용

조영재·2021년 7월 15일
1

GAN

목록 보기
2/4

Generative Adversarial Nets - paper

https://papers.nips.cc/paper/2014/file/5ca3e9b122f61f8f06494c97b1afccf3-Paper.pdf

1. 목적함수

G는 목적 함수의 값을 최소 값으로 만들고, D는 목적 함수의 값을 최대 값으로 만드는 방향으로 학습합니다. 따라서, 위 식을 Expdata(x)[logD(x)]E_{x\sim p_{data}(x)}[log D(x)] 항과 Ezpz(z)[log(1D(G(z)))].E_{z\sim p_{z}(z)}[log(1-D(G(z)))]. 항으로 나누었을 때, D는 **좌측항에서의 D(x)D(x)가 더 높은 값을 출력하는 방향으로, 우측항에서의 (1D(G(z)))(1-D(G(z)))는 더 낮아지는 방향으로 학습하게 되고, G는 우측항에서의 (1D(G(z)))(1-D(G(z)))를 최대화 시키는 방향으로 학습하는데, (1D(G(z)))(1-D(G(z)))가 최대가 되는 가장 좋은 경우가 G(z)=xG(z) = x가 되는 경우가 됩니다. 앞서 언급한 것처럼 D**는 D(x)D(x)를 최대화 시키고 있으니까요. 기호를 해석하며 한번 더 상세하게 설명해 보겠습니다.

더 상세하게 설명합니다.

minGmaxDV(D,G){min\atop G} {max\atop D}V(D, G) Adversarial Nets의 목적함수 V는 변수 D, G를 사용하며, G는 이 함수의 값을 최소화 시킬 것이고, D는 이 함수의 값을 최대화 시킵니다.

EE 기대값, 평균값입니다. 뒤의 [] 안의 식을 계산한 기대값을 산출합니다.

Expdata(x)E_{x\sim p_{data}(x)}
pdatap_{data}라는 집합에서 임의의 xx를 여러번 추출하여 계산한 기대값을 말합니다.
이미지 생성 모델을 학습한다면, 이미지 데이터를 제공 할 것이고 pdatap_{data}는 학습과정에서의 mini batch가 될 것이고, xx는 한장의 이미지가 됩니다.

이제 Expdata(x)[logD(x)]E_{x\sim p_{data}(x)}[log D(x)] 좌측항 전체를 보자면,
pdatap_{data}라는 집합에서 임의의 xx를 여러번 추출하여 모델 D에 넣고 나온 출력값이 최대가 되도록 D는 변화합니다. D(x)D(x)에 한장의 이미지를 넣은 결과값으로는 0 ~ 1 사이의 값이 발생하는데, 진짜 데이터를 넣은 좌측항에서는 최대값이 될 수 있는 1을 출력하는 방향으로 학습합니다.

Ezpz(z)E_{z\sim p_{z}(z)}
pz(z)p_z(z)라는 분포에서 임의의 zz를 추출하여 계산한 기대값을 말합니다. 여기서 임의의 zz는 주로 1차원의 Latant Vector로 구성되는데, 이 zz가 모델 G의 입력값으로 들어가서, D에 입력이 될 수 있는 한 장의 이미지로 출력됩니다.

Ezpz(z)[log(1D(G(z)))].E_{z\sim p_{z}(z)}[log(1-D(G(z)))].
D는 해당 식을 최대화 시켜야합니다. 음수 기호가 적용된 입장에서 D는 D(G(z))D(G(z))의 값을 최소한으로 출력하기를 원할 것 입니다. 따라서 가짜 이미지를 생성하는 G(z)G(z)에 대해서는 0을 출력하는 방향으로 학습합니다.
G는 해당 식을 최소화 시켜야합니다. 그럼 음수 기호가 적용된 D(G(z))D(G(z))의 값이 커질 수록 식이 최소화 될 것이고, G(z)G(z)xx와 비슷한 값을 출력하는 방향으로 학습합니다.

요약하자면

D는 진짜 이미지 xx를 입력 받기도하고, 가짜 이미지 G(z)G(z)를 입력 받기도 합니다.
xx를 받았을 때는 1을 출력하고, G(z)G(z)를 받았을 때는 0을 출력하는 방향으로 가중치를 갱신합니다.

G는 임의의 Latant Vector인 zz를 입력으로 받습니다. 이 zz는 주로 1차원으로 구성된 벡터로, 이런 모양 일 수 있습니다. [0.1, 0.8, 0.23, 0.6, 0.72, 0.3, ... , 0.43, 0.85, 0.36]
zz를 입력으로 받아, 진짜 이미지 xx와 동일한 모양인, 그러니까 이미지 xx가 28x28 크기의 이미지라면 G(z)G(z) 또한 28x28의 이미지를 출력합니다. 이렇게 발생하는 출력은 최종 학습 후에 이미지 xx와 유사한 형태를 갖게 됩니다.

profile
Be Good Developer

0개의 댓글