GAN의 구조
간단하게 설명하자면, Generator는 랜덤 노이즈 z를 입력 받아서 이미지를 생성하고, Deiscriminater는 가짜 이미지(G가 생성한 이미지)와 진짜 이미지를 랜덤으로 입력 받아서 진짜인지 가짜인지 구분한다. 진짜 이미지라면 1에 가까운 값을 가짜 이미지라면 0에 가까운 값을 출력한다.
여기서 헷갈리면 안되는 점은 X는 이미지 한개가 아니라 여러 이미지가 있는 이미지 데이터 셋이다. 따라서, 생성자는 실제 이미지 하나에 대해 특징을 학습하는 것이 아니라 이미지 데이터 셋 전체의 이미지들의 특징을 파악한다.
1. 초기 생성 과정
- 이미지에서 보이듯이 상단의 노이즈 벡터가 생성기(G)의 입력으로 들어갑니다
- 생성기는 이 랜덤 노이즈를 기반으로 초기 이미지를 생성합니다
2. 학습 과정
- 이미지의 중앙부에서 보이듯이 판별기(D)는 실제 이미지와 생성된 이미지를 비교합니다
- 이 피드백을 통해 생성기는 이미지넷의 특성을 학습하게 됩니다
3. 최종 생성 결과
- 학습 완료 후, 생성기는 입력된 노이즈 벡터의 특성에 따라
- 이미지 하단에 보이는 것처럼 실제와 유사한 이미지를 생성할 수 있게 됩니다
❓랜덤 노이즈 z란?
어떤 값들인지는 정확히는 모르지만 정규 분포 또는 균등 분포와 같은 분포를 생성하는 데이터이다.
GAN에서의 Generative model(생성)
생성 모델의 주요 목적은 진짜 이미지와 비슷한 분포를 가지는 이미지를 생성하는 것이다. 따라서 비슷한 분포를 G가 가졌다면 평균적인 특징들 가지는 데이터를 잘 생성할 수 있다.
- 검은색 점선
- 의미: 실제 이미지 데이터의 분포
- 초록색 선
- 의미: 현재 G가 생성한 데이터의 분포
- 파란색 점선
- 의미: 현재 D가 출력한 데이터의 분포
❓위의 그래프에서 파란색 점선은 0 ~ 1 사이의 값을 갖는데 (d)에서는 왜 1/2를 가질까?
실제 데이터의 분포와 G 모델의 분포가 같아져서 D 모델은 더 이상 진짜인지 가짜인지 구분하지 못하게 되어 결과는 0.5가 나오게 된다.
GAN의 목적 함수
위의 식을 간단하게 문장으로 나타내보면, “Generator(생성자)는 해당 목적 함수 V(D,G)를 작게 만들고 싶고, Discriminator(판별자)는 해당 목적 함수 V(D, G)를 크게 만들고 싶어한다.”
“Generator(생성자)는 작게 만들고 싶어한다”는 말은 뒤의 판별자(G)가 D(G(z))에 대한 값을 진짜로 판단하고 1로 출력해야하기를 원한다 즉, log(1 - D(G(z)))의 값이 0으로 가기를 원하기 떄문에 작게 만들고 싶어하는 것이다.
“Discriminator(판별자)는 해당 목적 함수 V(D, G)를 크게 만들고 싶어한다”라는 말은 뒤의 판별자(G)가 D(G(z))에 대한 값을 가짜로 판단하고 0로 출력해야하기를 원한다. 즉, log(1 - D(G(z)))의 값이 1으로 가기를 원하기 떄문에 크게 만들고 싶어하는 것이다.
기존의 이미지와 다른 이미지를 생성할 수 있는 이유는?
이렇게 검은색 점선처럼 실제 데이터는 이산적인 데이터를 갖고 있는데, 생성 모델의 데이터는 연속적인 데이터들의 분포를 갖게 된다. 따라서, 실제 이미지의 데이터와 다른 새로운 데이터 부분을 추출해서 이미지를 생성하면 실제 이미지와는 비슷하지만 다른 이미지를 생성할 수 있다.
GAN의 한계
1. 모드 붕괴(다양성 부족)
모드 붕괴(Mode collapse): GAN에서 생성 모델 G가 다양한 출력을 갖지 못하고, 특정 데이터만 생성하는 현상
판별 모델 D가 너무 강할 때
: D가 너무 잘 판단을 하기 때문에 D를 속이려는 것에만 노력하여 D의 약점인 데이터의 특징만 학습해서 이미지를 생성할 수 있다.
판별 모델 D가 너무 약할 때
: D가 판단을 잘 못하기 때문에 D가 판단하지 못하는 수준의 데이터의 특징만 학습해서 이미지를 생성할 수 있다.
2. 제어 불가능한 출력
일반적인 GAN은 노이즈 Z를 입력 받아 데이터를 생성하기 때문에, 생성된 데이터가 어떤 특정한 특성을 가지도록 제어할 수 없다.
예를 들면, 숫자 생성 모델일 경우 GAN은 0 ~ 9를 랜덤으로 생성하기 때문에 특정 클래스에 맞는 이미지를 생성하기 어려움
'AC-GAN > 이전 논문' 카테고리의 다른 글
[이전 논문] CGAN (0) | 2024.11.12 |
---|