[Deep Learning] Generative Model - GAN

이한량·2025년 6월 8일
0

Deep Learning

목록 보기
9/10

Generative adversarial networks (GAN)

GAN은 성격이 다른 두 가지 신경망이 서로 경쟁을 통해 학습하도록 설계된 네트워크이다.

생성 모델 GG는 실제 데이터와 비슷한 가짜 데이터의 분포를 생성한다.

판별 모델 DD는 입력 받은 데이터의 분포가 실제 데이터의 분포인지, 생성 모델이 생성한 가짜 데이터의 분포인지 판별한다.

두 모델은 서로 경쟁을 통해 학습한다. 생성 모델 GG는 더욱 정교한 데이터 분포를 생성하도록 학습되며, 판별 모델 DD는 실제 데이터와 가짜 데이터를 더 잘 판별하도록 학습된다.

학습이 모두 종료된 시점의 생성자 GG는 판별 모델 DD가 더이상 가짜와 진짜를 구별할 수 없을 정도의 생성 능력을 갖추게 된다.

Generator

생성자는 확률 분포 zpz(z)z \sim p_z(z)에서 생성된 노이즈 zz를 입력으로 받아 데이터의 분포를 생성한다.

G(z)G(z)

Discriminator

판별자 네트워크는 실제 데이터의 확률 분포 xpdata(x)x \sim p_{data}(x)로부터 추출된 데이터 xx와 생성자가 만들어낸 데이터 G(z)G(z)를 입력으로 받아 두 데이터 분포 중 어떤 것이 실제 데이터 분포인지 판별한다.

D(x),D(G(z))D(x), D(G(z))

Loss function

판별자 DDD(x)D(x)는 1, D(G(z))D(G(z))는 0으로 판별하는 것을 학습 목표로 한다.

Expdata[logD(x)]+Ezpz[log(1D(G(z)))]\mathbb{E}_{\mathbf{x} \sim p_{\mathrm{data}}} \left[ \log D(\mathbf{x}) \right] + \mathbb{E}_{\mathbf{z} \sim p_{\mathrm{z}}} \left[ \log (1-D({G(z)})) \right]

생성자 GG판별자가 D(G(z))D(G(z))을 1로 판별하는 것을 학습 목표로 한다.

Ezpz[log(1D(G(z)))]\mathbb{E}_{\mathbf{z} \sim p_{\mathrm{z}}} \left[ \log (1-D({G(z)})) \right]

따라서 전체 GAN 네트워크의 손실 함수는 Min(G)(G), Max(D)(D)로 정의되며, 수식은 다음과 같다.

minGmaxDV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{\text{data}}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)}[\log (1 - D(G(z)))]

Conditional

기본적인 GAN 네트워크는 Unconditional 방식으로, 생성자는 랜덤 노이즈 zz를 입력으로 받아 데이터를 생성한다.

ConditionaGAN은 랜덤 노이즈 zz를 입력 받는 것은 동일하지만, 특정한 조건을 추가로 입력받아 DDGG가 주어진 레이블에 따라 조건부로 동작하도록 설계되었다.

profile
한량 극복 프로젝트

0개의 댓글