CHAPTER 8. 확산 모델

2025. 3. 10. 01:25읽어보기, 교재/만들면서 배우는 생성 AI

8.2 잡음 제거 확산 모델

잡음 제거 확산 모델의 핵심 아이디어는 연속해서 매우 조금씩 이미지에서 잡음을 제거하도록 딥러닝 모델 훈련.

8.2.2 정방향 확산 과정

  • 정방향 확산 : 원본 이미지 X_0를 많은 단계에 걸쳐 점짐적으로 잡음을 추가해 표준 가우스 잡음과 구별할 수 없게 만듬.

=> T 단계에 걸쳐 잡음을 추가했을 때 X_T의 평균은 0이고 단위 분산.

* 평균 0 : 추가된 잡음이 데이터의 평균 값을 변화시키지 않고 데이터의 중심을 이동시키지 않음.

* 단위 분산 : 추가되는 잡음의 변동 폭이 일정해 모든 단계에서 동일하게 유지.

  • 이미지 X_t-1에 분산 β_t를 갖는 소량의 가우스 잡음을 추가해 새로운 이미지 X_t 생성하는 함수 q 정의 가능.

* β_t는 정방향 확산 과정에서 각 타임 스텝 t에 추가되는 가우시안 잡음의 분산을 결정하는 값.

점진적 잡음 추가
ε_t-1은 평균이 0이고 단위 분산을 갖는 표준 가우스 분포, 즉 잡음.

8.2.3 재매개변수화 트릭

  • 재매개변수화 트릭 : 이미지 X_0에서 X_t로 바로 건너뛰는 트릭.
  • 원래 β_t 대신 원본 이미지(신호)를 이용한 분산을 사용해 확산 스케줄 정의.

8.2.4 확산 스케줄

  • 각 타임 스텝마다 다른 β_t를 자유롭게 선택. => 모두 동일할 필요는 없음.

=> β_t(또는 신호 분산) 값이 t에 따라 변하는 방식을 확산 스케줄.

  • 원래 논문에서는 선형 확산 스케줄에 따라 선택.

=> 잡음 추가 초기 단계가 후기 단계 보다 더 적은 잡음 추가.(0.0001 ~ 0.02)

  • 이후 논문에서는 코사인 확산 스케줄 사용.

코사인 확산 스케줄 업데이트 공식

  • 여기에 더해 선형 확산 스케줄처럼 확산 과정 초기에 잡음 추가가 너무 적게 되지 않도록 오프셋 항과 스케이링 항 추가.

  • 코사인 확산 스케줄은 선형 확산 스케줄보다 이미지에 잡음을 더 점진적으로 추가. => 훈련 효율성과 생성 품질 향상.

8.2.5 역방향 확산 과정

  • 역방향 확산 과정은 VAE의 디코더와 유사.(랜덤한 잡음 -> 의미있는 출력)
  • 차이점
    • VAE : 정방향 과정이 모델의 일부 => 인코더.
    • 확산 모델 : 정방향 확산 과정이 미리 정의된 노이즈 추가 과정으로, 모델의 학습 대상이 아님.
  • 확산 모델에서 손실 함수는 타임 스텝 t에서 이미지 X_0에 추가되는 잡음( ε )를 예측하는 신경망을 훈련해 최적화.
  • 즉, t번의 잡음 단계 거친 이미지와 잡음 비율을 신경망에 전달해 잡음을 예측하고 예측 잡음과 실제 잡음 사이의 제곱 오차에 대한 경사 하강법 단계 수행.
  • 확산 모델은 두 개의 신경망을 사용.
    • 경사 하강법 사용한 훈련된 신경망(일반적).
    • EMA(지수이동평균) 신경망
      • EMA란 과거 값에 가중치 부여해 평균 계산법. => 최근 값에 높은 가중치, 오래된 값에 낮은 가중치.
      • 학습 과정에서의 가중치들을 EMA 계산을해 신경망에 저장.
      • 단기적인 변동과 등락에 영향 안받음.

8.2.6 U-Net 잡음 제거 모델

U-Net의 구조

  • 출력이 입력과 같아야 할 때 U-Net이 유용.
  • U-Net은 오토인코더와 비슷.
  • 다운샘플링 -> 공간 압축, 채널 확장 / 업샘플링 -> 공간 확장, 채널 축소.
  • 스킵 연결을 갖고 있음.

* Residual Block과 스킵 연결은 다름. 스킵 연결 + 입력 값 처리 레이어로 구성된 신경망이 Residual Block.

  • U-Net에 들어가는 네 가지 핵심 개념.

1. 사인파 임베딩

  • 신경망 후속층에서 사용할 수 있도록 스칼라 값(잡음의 분산)을 더 복잡한 고차원 벡터로.
  • 제시한 논문에서는 문장 위치 임베딩으로 사용했지만 여기서는 연속적인 값으로 확장.

사인파 임베딩 패턴

2. ResidualBlock

  • ResNet 논문에서 처음 제시된 잔차 연결 블록.
  • U-Net에서는 스킵 연결할 때 Conv2D를 사용해 출력층 크기를 맞춤.

3 & 4. DownBlock과 UpBlock

  • DownBlock
    • 연속되는 DownBlock의 갯수(2개) 만큼 ResidualBlock 추가.
    • 이미지 크기를 절반으로 줄이려고 마지막에 AveragePooling2D층 적용.
    • UpBlock층에서 스킵 연결 사용하도록 전달.
  • UpBlock
    • 이중 선형 보간을 통해 이미지 크기를 두 배로 늘리는 UpSampling2D 층 적용.
    • 연속되는 UpBlock의 갯수(2개) 만큼 ResidualBlock 추가하고 스킵 연결으로 U-Net을 가로지르는 DownBlock의 출력을 이용.

8.2.8 잡음 제거 확산 모델에서 샘플링하기

  • 훈련된 모델에서 이미지를 샘플링하려면 역방향 확산 과정.
  • 모델은 훈련 세트의 이미지에 추가된 잡음의 총량을 예측하도록 훈련.
  • 잡음을 한 번에 제거하는 것이 아니라 여러 단계에 걸쳐 점진적 제거.

=> 모델로 잡음 예측을 사용해 X_0를 추정한 다음 이걸 t-1 타임 스텝까지만 적용해 X_t-1 생성.

  • 단계 수는 자유롭게 선택하고, 훈련 단계와 동일할 필요는 없음.

과정의 대한 식

  • 마지막 랜덤한 잡음(가우스 잡음)을 추가하는 이유는 생성형 모델의 목적인 창의적 이미지를 생성하는 것에 있음.
  • 랜덤한 잡음을 추가하지 않는 완전한 결정론적 모델은 잡음 제거 확산 암묵 모델(DDIM)이 있음.
  • 역방향 확산 과정을 실행하고 마지막에 출력을 비정규화해 샘플 생성.

* 신경망 출력 이미지는 평균이 0이고 단위 분산 이므로, 비정규화 과정을 통해 픽셀 값을 다시 [0, 1] 범위로 바꿈.

  • 역방향 과정에서 확산 단계 갯수와 품질은 비례 하므로 시간과 품질의 균형을 찾는게 중요.

에폭에 따른 이미지 품질

  • 이미지 보간
    • VAE에서 가우스 잠재 공간 사이에 포인트를 보간해 이미지 사이를 부드럽게 전환.
    • 확산 모델에서는 두 가우스 잡음을 섞으며 분산을 일정히 유지하는 구면 선형 보간 사용.
    • t는 0 ~ 1 사이의 값, a와 b는 보간하려는 랜덤하게 샘플링된 두개의 가우스 잡음 텐서.

구면 선형 보간 식

* 구면 선형 보간 : 단순한 선형 보간이 아닌 벡터들을 고차원 구면 상에 분포해 구면에서 호를 따라 연결하는 최단 경로.

=> 더 자연스럽고 부드러운 보간.

728x90