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에 추가되는 가우시안 잡음의 분산을 결정하는 값.
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은 오토인코더와 비슷.
- 다운샘플링 -> 공간 압축, 채널 확장 / 업샘플링 -> 공간 확장, 채널 축소.
- 스킵 연결을 갖고 있음.
* 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는 보간하려는 랜덤하게 샘플링된 두개의 가우스 잡음 텐서.
* 구면 선형 보간 : 단순한 선형 보간이 아닌 벡터들을 고차원 구면 상에 분포해 구면에서 호를 따라 연결하는 최단 경로.
=> 더 자연스럽고 부드러운 보간.
'읽어보기, 교재 > 만들면서 배우는 생성 AI' 카테고리의 다른 글
CHAPTER 10. 고급 GAN(Part 1.) (3) | 2025.04.06 |
---|---|
CHAPTER 9. 트랜스포머 (1) | 2025.03.30 |
CHAPTER 7. 에너지 기반 모델 (0) | 2025.03.02 |
CHAPTER 6. 노멀라이징 플로 모델 (0) | 2025.02.23 |
CHAPTER 5. 자기회귀 모델 (4) | 2025.02.16 |