16. BIGGAN 이론
특징
고해상도 이미지 생성: BigGAN은 고해상도(예: 512x512 픽셀) 이미지를 생성하는 데 탁월한 능력을 가지고 있으며, 이전 모델들보다 훨씬 선명하고 상세한 이미지를 생성할 수 있다.
큰 규모의 네트워크와 데이터셋: BigGAN은 매우 큰 규모의 데이터셋(예: ImageNet)을 학습하고, 이를 통해 다양한 종류의 이미지를 생성할 수 있는 능력을 개발했다. 이는 또한 대규모 모델 구조를 필요로 한다.
Class-conditional 생성: BigGAN은 클래스 조건부 생성을 지원하여, 주어진 클래스 레이블에 해당하는 이미지를 생성할 수 있다. 이는 모델이 특정 카테고리의 이미지를 생성할 때 더욱 정확하게 특정할 수 있게 한다.
Truncation trick: 이미지의 다양성과 품질 사이의 균형을 맞추기 위해 truncation trick을 사용한다. 이는 생성된 이미지의 품질을 높이면서도 다양성을 유지할 수 있게 해준다.
구조
BigGAN의 구조는 기본적인 GAN 구조를 따른다. GAN은 생성자(Generator)와 판별자(Discriminator) 두 가지 주요 구성 요소로 이루어져 있다.
- 생성자(Generator): 무작위 노이즈를 입력으로 받아 이미지를 생성하는 네트워크. BigGAN의 생성자는 크기가 크고, deep한 구조를 가지며, 특정 클래스 레이블을 조건으로 받아 해당 클래스의 이미지를 생성한다.
- 판별자(Discriminator): 진짜 이미지와 생성된 이미지를 구분하는 역할을 하는 네트워크이다. 판별자 역시 크고 복잡한 구조를 가진다.
Truncation trick은 GANs, 특히 BigGAN과 같은 고해상도 이미지 생성 모델에서 이미지의 품질과 다양성 사이의 균형을 맞추기 위해 사용되는 기법으로 이 방법은 생성된 이미지의 다양성을 약간 희생시키는 대신 이미지의 품질을 향상시키는데 목적을 둔다. Truncation trick의 주요 아이디어는 생성자의 입력으로 사용되는 노이즈 벡터의 분포를 조정하여, 모델이 더 신뢰할 수 있는, 즉 학습 데이터 분포에 더 가까운 데이터 포인트들만 생성하도록 유도하는 것이다.
Truncation Trick의 작동 원리
노이즈 샘플링: GAN의 생성자는 보통 표준 정규 분포에서 무작위로 샘플링된 노이즈 벡터를 입력으로 받는다.
Truncation: Truncation trick은 특정 임곗값(truncation threshold)을 설정하여, 이 임곗값을 초과하는 노이즈 값을 잘라낸다(truncate). 즉, 표준 정규 분포의 꼬리 부분에 해당하는 노이즈 값을 사용하지 않고, 분포의 중앙에 더 가까운 값들만을 사용한다.
재조정: 잘린 노이즈 분포를 사용하여 생성자가 이미지를 생성하도록 한다. 이렇게 하면 생성자는 학습 데이터 분포에 더 가까운, 즉 더 “정상적인” 이미지를 생성하는 경향이 있다.
장점 및 단점
장점:
- 품질 향상: Truncation trick을 사용하면 더 높은 품질의 이미지를 생성할 수 있다.
- 제어 가능: Truncation threshold를 조정함으로써, 생성된 이미지의 품질과 다양성 사이의 균형을 유동적으로 조절할 수 있다.
단점:
- 다양성 저하: 특정 임곗값을 넘는 노이즈 값을 사용하지 않기 때문에, 생성 가능한 이미지의 다양성이 저하될 수 있습니다. 이는 모델이 덜 일반화될 수 있음을 의미한다.
실제 응용
실제 응용에서는 truncation threshold를 실험적으로 결정하여, 특정 작업에 대한 최적의 품질과 다양성의 균형을 찾아야 한다. 예를 들어, 높은 품질의 이미지를 원할 때는 낮은 threshold 값을 사용하고, 더 다양한 이미지를 생성하고자 할 때는 높은 threshold 값을 설정할 수 있다.
Truncation trick은 BigGAN과 같은 고해상도 이미지 생성 모델에서 중요한 기술적 진보를 나타내며, 생성된 이미지의 품질을 크게 향상시키는데 기여했다. 이 기법은 GANs의 가능성을 확장시키고, 실제 응용에서의 유용성을 높이는 중요한 역할을 한다.
로스 함수
BigGAN은 GAN 특유의 대립적 손실(adversarial loss)을 사용한다. 이는 생성된 이미지와 진짜 이미지 사이의 구별을 학습하는 동시에, 생성자가 판별자를 속일 수 있는 더 정교한 이미지를 생성하도록 유도한다. 로스 함수는 다음과 같은 두 부분으로 구성된다:
- 생성자 로스: 판별자가 생성자가 생성한 이미지를 진짜로 분류하도록 하는 것을 목표
- 판별자 로스: 진짜 이미지와 생성된 이미지를 올바르게 구분하는 것을 목표