티스토리 뷰
conditional GAN은 많은 발전을 해왔지만 SOTA 모델(SAGAN)조차 아직 실제 이미지(ImageNet)와 차이가 크며, 실제 이미지의 Inception Score인 233에 비교해 SAGAN은 52.5의 Inception Score에 그친다.
우선 BigGAN의 구조가 되는 SAGAN에 대해 설명한다.
1. SAGAN(Self-Attention GAN)
SAGAN은 convolution을 self-attention으로 대체해 long-range dependency 모델링이 가능하도록 제안된 모델이다. 전통적인 GAN들은 낮은 해상도 feature map들 안 공간적인 지역 포인트만을 함수로 쓰는 고해상도 디테일을 생성한다. 그러나 SAGAN을 통해 모든 feature 지역들로부터 단서들을 사용해 디테일들이 생성된다. 따라서, Discriminator은 영상의 먼 부분에서 매우 자세한 feature들이 서로 일치하는지 확인할 수 있다.
이전 대부분의 모델들은 다른 이미지 영역들에 걸쳐 의존성을 모델링하기 위해 convolution에 크게 의존한다. conv operator은 local receptive field를 가지고 있기 때문에 장기 의존성은 여러 conv layer들을 통과한 후에만 처리할 수 있다. 이는 다양한 이유로 장기 의존성에 대한 학습을 막을 수 있다. 작은 모델은 그것들을 표현하지 못할 수 있고, 최적화 알고리즘은 의존성을 포착하기 위해 여러 layer들을 조심스럽게 조정하는 파라미터 값들을 발견하는데 어려움을 겪을 수 있고, 이 파라미터화들은 통계적으로 불안정하고 이전에 보지못한 입력에 대해서 적용할 때 실패하는 경향이 있다. conv kernal 크기를 증가시키는 것은 네트워크 표현 용량을 증가시킬 수 있지만 그렇게 함으로써 지역적 conv 구조를 사용함으로써 얻은 계산 및 통계적 효율성을 잃을 수 있다. 그에 반해 Self-attention은 장기의존성 모델의 능력과 계산 및 통계 효율 사이에서 더 나은 균형을 보여준다. Self-attention 모듈은 weight 또는 attention 벡터들이 작은 계산 비용으로 계산되는 모든 위치에서 feature들의 weight 합으로 반응을 계산한다.

convolution layer를 통과한 feature map()를 입력으로 받아 key에 해당하는 , query에 해당하는 와 value에 해당하는 를 각각 입력 값 에 kernel_size=1인 1x1 convolution으로 계산한다. attention map은 픽셀 간의 관계를 나타내는데, 수식의 는 번째 영역을 합성 할 때 모델이 번째 위치에 어느 정도 관심을 기울이는지를 나타낸다.

Image feature들은 두 개의 feature space f와 g로 attention이 계산된다. 그 후 beta를 통해 softmax로 값을 구함으로써 attention map을 구성한다. 그 후 또 다른 feature space h간의 곱을 통해 self-attention feature map을 구성한다. attention layer의 결과를 scale parameter와 곱하고 input feature map을 더하였다.

최종 결과는 계산한 self-attention feature map인 와 입력 값 를 더해 출력한다. 이때 학습 가능한 스칼라 값으로 0으로 초기화된 를 에 곱해 self-attention feature map의 크기를 계산하는데, 논문에서는 학습 가능한 를 사용함으로써 네트워크가 처음에는 local 주변의 신호에 의존하다 점차 학습이 진행되며 non-local 신호에 더 많은 가중치를 부여하는 방법을 학습할 수 있다고 한다. 논문에서 를 0으로 초기화한 것에 대해서는 직관으로 쉬운 일을 먼저 학습하고 복잡성을 점진적으로 증가시켜 학습하기를 원했기 때문이라고 설명한다.
LOSS


위의 수식이 SAGAN에서 사용하는 adversarial hinge loss다. 판별 모델 의 경우 인 실제 데이터 를 입력으로 받는다면 인 경우 1 이상의 값을, 생성 모델이 생성한 를 입력으로 받는다면 인 경우 출력으로 -1 이하의 값을 만들어 판별값의 절대값이 커지도록(hyperplane에서 멀어지도록) 업데이트하는 것이 목표다. 반대로 생성 모델 는 가 생성한 이미지 를 에게 입력으로 준 결과가 hyperplane에 가까워지도록 만드는 것이 이상적이다.
Stabilize
- Spectral Normalization
각 layer의 spectral norm을을 특정 상수로 제한하는 것으로 판별 모델의 Lipschitz 상수를 제한하는 방법으로 모든 가중치 레이어의 spectral norm은 1로 설정하는 것이 지속적으로 잘 수행되기 때문에 다른 normalization 방법과 비교해 추가적인 hyperparameter 튜닝을 필요로 하지 않는다 한다. 또한 계산 비용이 적은 것이 장점이다.
SAGAN은 생성 모델에도 Spectral normalization을 적용하는 것으로 생성 모델의 파라미터 크기의 상승을 방지하고 비정상적인 gradient를 피할 수 있어 Spectral normalization을 생성 모델과 판별 모델 모두에 적용한다. 이후 생성 모델과 판별 모델 모두의 Spectral normalization이 안정적인 학습을 보여줄 뿐만 아니라 생성 모델 업데이트 당 판별 모델 업데이트 수를 더 적게 만드는 것이 가능해 학습에 대한 계산 비용을 크게 감소시킨다는 것을 발견했다. SAGAN은 판별모델의 learning rate는 0.0004로, 생성 모델의 learning rate는 0.0001을 사용해 판별 모델과 생성 모델 업데이트 비율을 1:1로 학습한다.
-TTUR
Two Time-Scale Update Rule(TTUR)은 생성 모델과 판별 모델에 별도의 learning rate를 사용하는 방법이다. 판별 모델 학습 : 생성 모델 학습 = 5 : 1과 같이 판별 모델의 느린 학습 문제를 보완하기 위해 SAGAN에서는 TTUR을 사용했다. TTUR을 사용해 판별 모델 학습 : 생성 모델 학습 = 1 : 1로 학습이 가능하며 판별 모델의 학습 step 수를 더 적게 사용하므로 동일한 시간에서 더 나은 결과를 얻고자 했다.
2. BigGAN
BigGAN이란 이름에서도 Big을 쓰는만큼 나타내는 것처럼 BigGAN은 기존 GAN의 파라미터의 2~4배의 파라미터를 가지고 있으며 batchsize를 8배 이상 키운 것이 특징이다. BigGAN은 GAN에서 생성된 이미지들과 실제 이미지인 ImageNet 간의 fidelity(품질), variety(다양성) 격차를 줄인다는 목표를 가진다. 다음은 BigGAN이 사용한 구조와 결정들이다.
- hinge loss를 adversarial loss로 사용한 SAGAN 구조 사용
- class 정도 conditioning을 위해 Shared embedding을 사용
- Exponential Weight Average를 G에 적용
- orthogonal Initialization/Regularization을 사용
SAGAN과 마찬가지로 adversarial loss로 hinge loss를 사용하며 와 모두에 Spectral Normalization을 사용한다. SAGAN에서는 G와 D의 학습 step 수를 1:1로 설정해 동일한 시간에서 더 나은 결과를 얻고자 한 것이 특징이지만 BigGAN에서는 와 학습 step 수를 1:2로 수정한 것을 사용한다.

BigGAN은 class 정보를 와 에 제공하기 위해 에는 Shared embedding, hierarchical latent space를 사용하고 에는 Projection Discriminator를 사용한다.
에는 single shared class embedding으로 Conditional Batch Normliazation(CBN)과 skip connection(skip-z)를 사용한다.
는 모델 입력에서 한번만 쓰이는게 일반적이지만 BigGAN은 Residual Block마다 class 정보와 함께 입력되며 (a)와 (b)에서 구조를 확인할 수 있다. latent vector 가 channel 차원에 따라 동일한 크기로 분할되고 각 분할된 는 shared class embedding인 CBN과 연결되어 residual block에 conditioning vector로 전달된다. 이 가 여러 층에 전달되기에 이를 hierarchical latent space라 하고 skip connection처럼 layer를 뛰어넘어 concat되는 를 skip-z라고 한다. skip-z 사용으로 약 4% 성능 향상과 함께 학습 속도 또한 18% 향상시켰다고 한다.
는 Projection Discriminator 방식을 사용한다. Residual Block과 Scalar function을 사용해 class 정보를 사용하는 것이 특징이다.
Shared embedding & CBN - G

CBN은 기존의 Batch Normalization의 learnable parameter인 , 에 class 정보가 영향을 미칠 수 있도록 해 conditional 정보를 BN에 주는 방법이다. 주고자 하는 condition에 해당하는 를 MLP layer에 통과시켜 channel 수 마다 2개의 값 와 를 계산한다. 이후 Batch Normalization의 , 에 계산된 값을 더한 와 를 Conditional Batch Normalization으로 사용한다.
Projection - D


는 BigGAN에서 Residual network를 사용하며 은 와 연결되는 scalar function으로 입력된 이미지가 진짜인지 가짜인지 판별하는 함수로 이미지 판별 결과 값 하나를 출력하기 때문에 scalar function이다.
수식으로는 복잡해 보이지만 는 Residual network 에 이미지 를 입력하고 결과 값을 activation(scalar function) 에 연결해 이미지가 진짜인지 가짜인지 판별하는 구조이다.
는 의 embedding matrix로 가 Figure의 (d)에서 가 입력되는 부분을 의미한다. Residual network 에 가 입력되었을 때의 feature map이 두 갈래로 나뉘어 하나는 activation(scalar function)인 로 입력되고 다른 한 갈래는 condition에 해당하는 의 embedding과 계산되어 이후 두 갈래로 나눠져 계산된 값들이 합쳐져 결과로 출력된다.
EMA
의 weight에 moving average를 사용하는데, learning rate를 decay하도록 따로 설정하지는 않지만 의 출력을 시각화하기 위해 Exponential Weight Average(Exponential Moving Average)를 사용한다고 한다. Exponential Weight Average는 지금까지 계산된 weight를 모두 사용해 weight를 업데이트하는 방법으로 가장 최신의 weight의 가중치를 더 크게 반영하고 오래된 weight의 영향을 감소시키기 위해 이전의 weight들은 iteration이 반복될 때마다 decay이 곱해져 축적된다. BigGAN에서는 decay 값으로 0.999가 사용되며 축적된 weight의 average 값이 가중치로 사용된다.
Orthogonal Initialization
신경망은 학습 초기에 가중치 분포가 잘 잡혀 있어야 gradient가 폭주/소실하지 않고 안정적으로 흐른다. 특히 BigGAN처럼 채널 수가 수천 단위인 대규모 네트워크에서는 작은 불안정이 쉽게 증폭된다. Orthogonal initinalized matrix의 고윳값은 하나이기 때문에 vanishing gradient를 방지하는데 도움을 준다. 따라서 가중치 행렬을 직교 행렬로 초기화 함으로서 입력을 변형하더라고 벡터의 norm(길이)을 크게 왜곡하지 않는다. 이로써 안정된 forward/backward 전달이 가능하다.
Orthogonal Regularization
초기에는 직교더라도, 학습하면서 W가 점점 비직교로 되며, 이는 중복된 feature 방향과 상관성을 증가시켜 표현력이 떨어지고 불안정함을 야기한다. 특히 GAN에서는 mode collapse로 이어질 위험이 있다. 따라서 Orthogonal Regularization을 통해 학습 중에도 가중치가 거의 직교를 유지하도록 term을 추가한다. Orthogonal Regularization이란 overfitting에 의해 모델의 성능 저하를 예방하는 정규화 방법의 하나이다. BigGAN에서 직교 정규화 외에도, CNN의 학습효율을 향상시키는 방법 중 하나인 Skip connection도 사용된다.

W는 weight matrix이고 람다는 하이퍼파라미터로 weight를 orthogonal하게 제한하도록 orthogonal regularization이 제안되었으나, 직교 정규화는 singular valur에 상관 없이 모든 singular value를 1로 설정하기 때문에 spectrum 정보를 파괴하는 문제가 있다고 하여 BigGAN에서는 변형된 버전을 사용하였다.

1은 모든 요소가 1로 설정된 행렬이다.
Truncated Trick
cGAN에서뿐아니라 GAN에서는 입력 노이즈는 N(0,1)부터 샘플링하지만, 이 샘플링한 값 중 Threshold를 넘는 것은 재샘플링하여 Threshold 안에 포함되도록한다. 즉, 정규분포에서 멀리 떨어진 극단적인 값을 가지는 z의 분포를 잘라 안정적인영역의 z만 쓰도록 제한하는 것을 Truncated Trick이라고한다. 따라서, Threshold가 작으면 작을수록(0에 근접) 노이즈의 분산은 좁게 된다. 그럼 이 Threshold의 값을 변경시켜가며 FID나 IS를 구하는 것이 될까? 그것에 대한 그림은 아래와 같다. 이것은 Threshold의 값을 변화시켜가면서 Generator의 출력을 보여주는 것이다. Threshold의 값은 2.0에서 0.004 사이로 변화하여, 오른쪽으로 갈수록 Threshold의 값이 작아지고 있다. Threshold의 값이 최고 작아질 때는 다양성이 손실되고, 최대화 될 때는 질이 떨어진다.

Threshold를 작게하면 IS와 FID가 크게 된다. 즉, 적당한 Threshold를 찾을 필요가 있다.(Thruncated Trick에서 Orthogonal Regularization을 할 필요가 있음)

참조
https://engineer-mole.tistory.com/44
[논문] GAN ; BigGAN (Large Scale GAN Training for High Fidelity Natural Image Synthesis)
1. 도입 BigGAN는 512x512의 고해상도 조건이 있는 이미지 생성(예를 들어 ImageNet을 학습하여 ImageNet의 라벨을 입력 노이즈에 부수적으로 부여하여 그 라벨에 상당하는 이미지를 생성하는 작업)을 실
engineer-mole.tistory.com
https://solee328.github.io/gan/2023/09/27/sagan_paper.html
SAGAN - 논문 리뷰
이번 논문은 self-attention을 Generative model에 적용한 SAGAN(Self-Attention Generative Adversarial Network)입니다. 사실 BIGGAN 논문을 보다 해당 논문이 SAGAN 모델을 바탕으로 한 걸 알게 되어서 SAGAN를 먼저 하게 되
solee328.github.io
https://aigong.tistory.com/150
SAGAN 논문 Full Reading - Self-Attention Generative Adversarial Networks
SAGAN 논문 Full Reading - Self-Attention Generative Adversarial Networks 저자 : Han Zhang, Ian Goodfellow, Dimitris Metaxas, and Augustus Odena. Self-attention generative adversarial networks. https://arxiv.org/abs/1805.08318 2020.12.20일 기준 citat
aigong.tistory.com
https://solee328.github.io/gan/2023/11/03/biggan_paper.html
BigGAN - 논문 리뷰
이번 논문은 Large Scale GAN Training for High Fidelity Natural Image Synthesis로 BigGAN이라 불리는 논문입니다.
solee328.github.io
'용어 정리' 카테고리의 다른 글
| GAN 시리즈 - VQGAN (2) | 2025.08.25 |
|---|---|
| GAN 시리즈 - StyleGAN (4) | 2025.08.20 |
| GAN 시리즈 - PGGAN (4) | 2025.08.13 |
| GAN 시리즈 - CycleGAN (4) | 2025.08.13 |
| GAN 시리즈 - WGAN (0) | 2025.08.13 |