Conditional Model
생성 모델에서 생성을 제어하는 가장 단순한 방법은 조건부 likelihood 를 최대화하기 위해 쌍을 학습하는 것이다.
조건 신호 가 스칼라이면(예: 클래스 라벨), 이를 임베딩 벡터에 매핑한 다음 공간 추가를 통해 네트워크를 통합하거나 이것을 사용하여 group normalization 레이어를 모듈화할 수 있다. 입력 가 또 다른 이미지면 추가 채널 집합인 에 간단히 연결할 수 있다. 입력 가 텍스트 프롬프트이면 이를 임베딩한 다음 공간 추가나 cross-attention을 사용할 수 있다.
아래 conditional에서 는 text 뿐만 아니라 image나 기타 다른 형태의 데이터일 수 있다. Stable Diffusion에서는 가 이미지였으면 이미지 인코더(VAE)를 이용하고 가 텍스트 였으면 텍스트 인코더(CLIP)을 이용해서 prior를 생성하면, 모델은 애초에 가 이미지였는지 텍스트였는지를 구분하지 않고 주어진 prior 를 이용해서 이미지를 생성한다. 가 이미지인 경우는 inpainting이나 coloring, 오염된 이미지를 깨끗한 이미지로 변환하는 등의 image-to-image 작업을 수행할 수 있다.
Classifier guidance
conditional diffusion 모델의 한 가지 문제는 수행하기를 원하는 각 종류의 조건에 대해 모델을 재학습 해야 한다는 것이다. classifier guidance라고 알려진 대안 접근은 형식의 사전 학습된 판별 분류기를 활용하여 생성 절차를 제어한다. 아이디어는 다음과 같다. 우선 베이즈 규칙을 사용하여 다음과 같이 작성한다.
이것에 대한 score 함수는 다음이 된다. (는 의 함수가 아니므로 사라짐)
이제 unconditional score 대신 이 conditional score를 사용하여 샘플을 생성할 수 있다. 또한 조건부 신호의 factor 로 스케일링하여 영향을 증폭 할 수 있다.
실제에서 다음에서 샘플을 생성할 수 있다.
Classifier-free guidance
불행히 는 입력 의 많은 디테일을 무시할 수 있는 판별 모델이다. 따라서 에 의해 지정된 방향을 따라 최적화하면 adversarial 이미지를 생성할 때 발생하는 것과 유사하게 빈곤한 결과를 만들 수 있다. 게다가 의 블러 수준이 다르기 때문에 각 시간 단계마다 분류기를 훈련해야 한다.
생성 모델에서 분류기를 유도하는 classifier-free guidance라 부르는 기법이 제안 되었다. 이것은 를 사용하여 다음을 얻는다.
이것을 위해 2개 생성 모델 즉 와 을 학습해야 한다. 그러나 실제에서 이것에 대해 동일한 모델을 사용할 수 있고, unconditional 경우를 나타내기 위해 간단하게 로 설정할 수 있다. 그 다음 이 암시적 분류기를 사용하여 다음의 수정된 score 함수를 얻을 수 있다.
일반적으로 guidance 가중치 가 클수록 더 나은 image-text alignment를 이끌지만 이미지의 fidelity(충실도)는 낮아진다.
guidance 가중치에 의한 train-test mismatch는 생성 모델에서 학습 단계와 테스트 단계 사이의 설정이 다를 때 발생하는 문제를 지칭한다. 이는 일반적으로 학습 단계에서 또는 낮은 가중치를 사용하여 데이터의 자연스러운 분포를 학습하게 하지만, 테스트 단계에서는 높은 를 설정하여 학습된 모델이 특정 조건 에 더 의존하여 이미지를 생성하도록 하기 때문이다. 이를 해결하기 위한 2가지 thresholding 전략이 유도되었다.
•
static thresholding: 학습 데이터 가 의 범위 내에 존재한다면 예측을 로 clip 한다.
•
dynamic thresholding: 각 샘플링 단계에서 를 특정한 백분위수 절대 픽셀 값으로 계산. 이면 예측을 로 clip하고 로 나눈다.