공부정리/Computer Vision

[GAN] GAN이란?

sillon 2024. 1. 8. 14:05
728x90
반응형

Generative Adversarial Networks(GANs)

1강 - GAN이란 무엇인가?

문제

  • 복잡하고 고차원인 학습 분포로부터 데이터를 샘플링을 하고자 하나, 이를 직접적으로 하는 것이 불가능
    해결책
  • 쉽게 데이터를 샘플링하는 것이 가능한 간단한 분포를 이용(random noise와 같은 것)
  • 이 간단한 분포를 학습 분포로 변형(transformation) 하는 법을 학습

 

 

Q. 이러한 복잡한 변형을 표현하려면 어떤 것을 사용해야할까?
-> 정답은 Neural network!!!

 

 

 

Pasted image 20240104165819.png

 

입력 이미지를 따르는 정규 분포로 Z를 흭득함 -> 그것으로 학습

 

 

Neural Network 문제

  • 하지만 각 Sample Z가 어떤 이미지로 매핑 되는지 알 수 없음
  • 학습 이미지를 복원하는 것으로는 학습 불가능
    해결책
    discriminator network를 사용하여 생성된 이미지가 데이터 분포 내에 속하는지 판단하도록함

Pasted image 20240104170354.png

 


 

GAN 학습: Two-player game

 

Pasted image 20240104171009.png

  • 제너레이터: 표준정규분포로부터 랜덤으로 추출한 샘플을 받음
  • 페이크 이미지들을 생성
  • 학습 데이터로 제공하는 진짜 이미지로 Discriminator 에서 구분함
  • 제너레이터에서는 각각의 생성 이미지에 대해 실제 이미지와 비슷해야한다는 loss를 걸지 않음.
  • 그래디언트 시미널에서 제너레이터 까지 역전파하여 손실을 전달함

 

   1. 제너레이터(Generator): 제너레이터는 표준 정규 분포에서 랜덤으로 추출한 샘플(잠재 공간 벡터)을 입력으로 받음.           그 후, 이 샘플을 사용하여 가짜 이미지들을 생성함

  1. 디스크리미네이터(Discriminator): 디스크리미네이터는 진짜 이미지(학습 데이터셋에서 가져온 이미지)와 제너레이터가 생성한 가짜 이미지를 구분하려고 함
    • 디스크리미네이터의 목표: 가짜 이미지와 진짜 이미지를 정확히 구별하는 것
  2. 손실 함수와 역전파(Backpropagation): 제너레이터와 디스크리미네이터는 경쟁적으로 학습함. 디스크리미네이터는 가짜와 진짜를 구분하는 능력을 향상시키려고 하며, 제너레이터는 디스크리미네이터를 속이는 더 현실적인 가짜 이미지를 생성하려고 함. 이 과정에서 제너레이터는 디스크리미네이터의 판별 결과를 바탕으로 손실을 계산하고, 이 손실을 역전파하여 제너레이터의 네트워크를 업데이트하게됨.
  3. 제너레이터의 손실: 제너레이터의 손실은 디스크리미네이터가 제너레이터의 가짜 이미지를 얼마나 잘 구별하는지에 기반함. 즉, 제너레이터는 디스크리미네이터를 속이도록 학습되며, 디스크리미네이터가 가짜 이미지를 진짜로 잘못 판단할수록 제너레이터의 손실은 감소함
    • 즉, 가짜 이미지를 잘못 판단한다는 것은 제너레이터가 현실 분포를 따르는 이미지에 가까워진다는 의미이므로
    • 손실 값이 작을 수록 목표 값에 가까워진다는 것을 의미함
  4. 학습 과정: 이러한 학습 과정은 반복되며, 각 반복마다 제너레이터는 더 현실적인 이미지를 생성하고, 디스크리미네이터는 더 정확하게 진짜와 가짜를 구별하게 됨. 이 과정은 균형점에 도달할 때까지 계속됨.

요약하자면, GAN의 학습 과정은 제너레이터가 가짜 이미지를 생성하고, 디스크리미네이터가 이러한 가짜 이미지와 진짜 이미지를 구별하는 경쟁적인 과정임. 이 과정에서 각 네트워크는 서로를 개선하는 방향으로 학습된다.

 

 

 

Pasted image 20240104171019.pngPasted image 20240104171212.png

 

 

 

GAN의 직관적인 이해

Pasted image 20240104171347.png

x: 진짜 이미지

D(x): x가 실제 이미지일 확률 0~1 로 추출

G(z): 제너레이터가 생성한 이미지
D(G(z)) : 0과 가까워져야 한다.

 

Object Function / GAN 목적 함수

 

Pasted image 20240105112719.png


minmax 최적화와 같은 목적함수로 이루어져있음

G-> 키워주도록 학습
D-> (손실이)줄어들도록 학습

Pdata: 우리가 가지는 실제 존재하는 학습데이터의 이미지

Pasted image 20240105115539.pngPasted image 20240105115555.pngPasted image 20240105144953.png

 

Pasted image 20240105145212.png


실제 학습시 제너레이터의 학습 과정이 오래 걸림
학습 초반에는 페이크 이미지가 이상하게 생성되는 경우 많음
D(G(z)) -> Discriminator 에서는 초반에는 손쉽게 페이크 이미지를 판별함

Pasted image 20240105145809.png

 

Pasted image 20240105150133.pngPasted image 20240105150155.png

K = 1일때 안정적이라는 주장과 여러개일때 안정적이라는 주장 등
다양한 방법이 있음!

 

 

 


* 이 글은 옵시디언 프로그램을 통해 티스토리에 게시되었습니다.

728x90
반응형