[딥러닝] GAN의 이해

김영민·2023년 1월 21일
0

DeepLearning

목록 보기
26/33
post-custom-banner

GAN : Generative Adversarial Networks

생성적 적대 신경망이라는 뜻으로, 비지도 학습에 사용되는 인공지능 알고리즘.
제로섬 게임 틀 안에서 서로 경쟁하는 두 개의 신경 네트워크 시스템에 의해 구현.

이미지 데이터에 대한 확률 분포

  • 이미지에서의 다양한 특징들이 각각의 확률 변수가 되는 분포 (여러 개의 변수)
  • 다변수 확률 분포를 학습

  • 모델이 확률 분포를 학습을 잘하면 더 그럴듯한 이미지를 생성

생성 모델이란 ?

  • 실존하지 않지만 있을 법한 이미지를 생성할 수 있는 모델

생성 모델의 목표

  • 모델 G는 원래 데이터(이미지)의 분포를 근사할 수 있도록 학습

: (a) → (d)로 시간이 지나면서 원본 데이터의 분포를 학습

GAN

  • 생성자(generator)와 판별자(discriminator) 2개의 네트워크를 학습

  • 학습이 완료된 이후에는 보통 생성자만 활용하여 데이터 생성



Generator : G
Discrimintor : D

x~Pdata(x) : 하나의 원본 이미지를 사용하는 것, 이후 D에 넣고 기댓값 계산
z~Pz(z) : 노이즈를 샘플링
G(z) : 생성자에 노이즈를 넣어서 가짜 이미지 생성
D(G(z)) :가짜 이미지를 D에 넣어 판별
1 : 진짜 이미지, 0: 가짜 이미지


D는 원본 이미지에 대해서는 1로 분류할 수 있도록 학습
→ 진짜 데이터에 대해서는 확률을 높임 (V가 높아지도록)

D에 가짜 이미지가 들어오면 D(G(z))를 낮춰서 1-D(G(z))가 Maximum이 되도록
G 입장에서 보면, G에 노이즈 이미지 z를 넣어서 가짜 이미지를 만듦

D에 넣으면 D가 속아야 G 입장에서는 성공한 것이니까 D가 1에 가까운 값을 내놓도록 해야함.
즉 목적함수가 최소가 되도록 하는 것이 목표

실제 코드에서는 매번 미니 배치마다 D를 학습하고 G를 학습하거나 / G를 학습하고 D를 학습하는 식으로 번갈아 가면서 학습 → 각각 Optimal한 값으로 잘 학습할 수 있도록

간단하게 GAN에 대해 리뷰해보았습니다.

post-custom-banner

0개의 댓글