Contribution

  1. Architecture를 향상시킴
  2. Class-conditional generation 방법 제시 (guided diffusion). Class-conditional generation을 위해 noisy한 $x_t$에 대해 classifier를 훈련하고 그 gradient를 이용해 reverse process를 guide 한다.

1번은 사실 자잘한 개선에 불과하고, 논문의 novelty는 2번에 집중되어 있다.

Architecture 개선

  1. Multi head attention
  2. Multi resolution attention
  3. Upsampling과 downsampling 시에 BigGAN resblock 사용.
  4. Adaptive Group Normalization (AdaGN)

DDPM에서도 얘기했듯이 PixelSNAIL에서 제안한 self-attention을 UNet의 16 x 16 resolution 구간에서 사용한다. 이 때 self attention의 head를 늘리고, resolution을 16 x 16 뿐 아니라 32 x 32과 8 x 8에서도 사용하게 했다. BigGAN resblock을 사용한 것은 NCSM++의 선택을 그대로 따른 것이다.

Untitled

Group normalization은 위와 같이 layer norm과 instance norm의 중간 형태라고 볼 수 있다. Feature map들을 몇 개의 group으로 묶어서 그 안에서 normalization을 하는 방식이다.

Untitled

AdaGN은 위와 같이 정의되는데, $h$에 group normalization을 한 다음 다시 scale / shift 해주는 방식이다. AdaIN에서 instance norm만 group norm으로 바꾼 것이다. AdaIN과 비교하지 않은게 조금 의아하다. $y=[y_s,y_b]$는 class label과 time embedding을 linear projection해서 만든다. 결국 styleGAN이 AdaIN을 이용해 style로 generator를 modulate 하듯이, 여기서는 class label과 time step으로 reverse process를 modulate하려는 의도로 보인다.

Class Guidance

GAN의 sample quality가 좋은 이유는 diversity와 fidelity를 교환했기 때문이다. Generator는 본질적으로 discriminator만 속일 수 있으면 되기 때문에 diversity가 일반적으로 낮다. 또한 truncation trick으로 의도적으로 diversity를 더 낮추고 fidelity를 끌어올릴 수도 있다. 저자들은 DDPM에도 이런 전략이 필요하다고 생각했고, classifier guidance라는 방법을 제시했다. 처음 고안된 의도는 generation process를 특정 class를 만들도록 guide한다는 의도였지만, 이 방법을 이용하면 diversity를 조금 손해보고 fidelity를 높일 수 있어 생성된 결과의 quality를 향상시킬 수 있다는 발견을 했다. 우선 noise한 이미지 $x_t$를 분류하는 classifier $p_\phi(y|x_t)$를 학습하고 그 gradient를 이용해서 pre-trained DDPM의 생성 과정을 guide한다는 아이디어이다.

Untitled