본문 바로가기
딥러닝 with Python

[딥러닝 with Python] 디퓨전 모델(Diffusion Model) (2) DDIM

by CodeCrafter 2024. 11. 11.
반응형

 

이번에는 지난번에 알아본 DDPM에 이어서 DDIM에 대해서 알아보겠습니다.

[딥러닝 with Python] 디퓨전 모델 (1) (Diffusion Model) : DDPM

 

 

1. DDIM (Denoising Diffusion Implicit Models)

- DDIM은 지난번 알아본 DDPM과는 다르게 Markovian process를 가정하고 있지 않습니다.

 

- 기존 DDPM에서는 각 단계에서 이전 단계만을 참조하여 다음 단계로 이동하기에 단계별 의존 관계가 단순화된다는 문제가 있습니다. 

 

- 이에 따라 Non-Markovian Process를 제시하고 있는데, 이전 단계뿐만 아니라 여러 단계에 걸쳐 의존성을 가질 수 있다는 것을 고려하고 있으며 이런 식으로 각 단계가 직전 단계만 참고하는 대신, 여러 단계의 정보를 사용할 수 있게 다양한 샘플링 방식을 적용하고 있습니다. 이는 아래 그림의 왼쪽이 DDPM, 오른쪽이 DDIM을 보여주고 있어 그 차이를 알 수 있습니다.

 

 

- 이때 활용되는 최적화 목적함수는 아래와 같고, 기존의 DDPM 모델의 경우 단순히 각 단계에서 추가된 노이즈와 예측된 노이즈 간의 차이를 최소화하는 방향으로 조정되었다면, 아래에서 보는 DDIM의 목적함수는 각 단계에서 여러 이전 단계의 정보를 반영하도록 설계가 되었습니다. 예를 들어 x t 에서의 노이즈를 예측할 때 xt-1, xt-2... 등의 정보가 포함됩니다.

 

*DDPM 손실함수

*DDIM 손실 함

 

 

- 즉 위식에서도 alpha 값은 단순히 t에 따른 누적값이 아니라, 각 단계에서 여러 이전 단계의 alpha 값의 가중합으로 설정되게 됩니다. 이로 인해 Non-Markovian Forward Process 과정에서 각 단계의 노이즈가 추가가 보다 정교하게 조정될 수 있으며, 이는 나중에 Reverse Process에서 복원 정확도를 높이는데 도움을 주게 됩니다.

 

- Non Markovian프로세스의 Reverse Process는 각 단계에서 여러 이전 단계의 정보를 활용해 노이즈를 제거하며, 예를 들어 x2를 x1으로 복원할 때 x0의 정보까지 사용해 더 정확하게 x1을 예측할 수 있다는 점입니다.

 

 

- 이렇게 여러 단계의 정보를 활용하면, 각 단계에서 발생한 오류가 다음 단계에 누적되지 않도록 조정할 수 있는데, 예를 들어 x2 단계에서 약간의 오류가 발생하더라도, x0과의 관계를 참고해 x1에서 그 오류를 보완할 수도 있습니다.

 

 

반응형

댓글