다음은 DDPM에서 역확산 단계의 평균 μq(xt,x0)가 μq(xt,x0)=1√αt(xt−1−αt√1−ˉαtϵ) 로 계산되는 과정을 단계별로 유도하는 방법입니다. 1. Forward Process에서 xt 표현 DDPM의 forward process에서는 xt=√ˉαtx0+√1−ˉαtϵ,ϵ∼N(0,I), 로 정의됩니다. 여기서 ˉαt=t∏s=1αs. 이를 x0에 대해 풀면, x0=1√ˉαt(xt−√1−ˉαtϵ). --- 2. 역확산 단계의 평균 μq(xt,x0) 기본 식 논문 등에서 증명된 바에 따르면, q(xt−1∣xt,x0)=N(xt−1;μq(xt,x0),˜βtI), 의 평균은 μq(xt,x0)=√ˉαt−1βt1−ˉαtx0+√αt(1−ˉαt−1)1−ˉαtxt, 로 주어집니다. 여기서βt=1−αt이며, ˉαt=ˉαt−1αt 관계를 사용합니다. 3. x0를 ϵ로 표현하여 대입 1. x0를 위의 forward process 식에서 표현한 결과를 대입합니다. x0=1√ˉαt(xt−√1−ˉαtϵ). 2. 이를 μq(xt,x0)에 대입하면: μq(xt,x0)=√ˉαt−1βt1−ˉαt1√ˉαt(xt−√1−ˉαtϵ)+√αt(1−ˉαt−1)1−ˉαtxt=√ˉαt−1βt√ˉαt(1−ˉαt)xt−√ˉαt−1βt1−ˉαt√1−ˉαt√ˉαtϵ+√αt(1−ˉαt−1)1−ˉαtxt. 3. xt에 대한 계수를 묶어 정리하면: Coefficient of xt=√ˉαt−1βt√ˉαt(1−ˉαt)+√αt(1−ˉαt−1)1−ˉαt. **여기서** ˉαt=ˉαt−1αt이므로, √ˉαt=√ˉαt−1√αt이고, βt=1−αt임을 고려하면, √ˉαt−1βt√ˉαt(1−ˉαt)=1−αt√αt(1−ˉαt). 따라서 두 항의 합은: 1−αt√αt(1−ˉαt)+√αt(1−ˉαt−1)1−ˉαt=11−ˉαt(1−αt√αt+√αt(1−ˉαt−1)). **주목할 점:** 1−ˉαt는 다음과 같이 쓸 수 있습니다. 1−ˉαt=1−αtˉαt−1=(1−αt)+αt(1−ˉαt−1). 그러므로, 1−αt√αt+√αt(1−ˉαt−1)=(1−αt)+αt(1−ˉαt−1)√αt=1−ˉαt√αt. 최종적으로 xt의 계수는: 11−ˉαt⋅1−ˉαt√αt=1√αt. 4. ϵ에 대한 항은: √ˉαt−1βt1−ˉαt√1−ˉαt√ˉαtϵ. 동일하게 βt=1−αt와 √ˉαt=√ˉαt−1√αt를 사용하면, √ˉαt−1(1−αt)1−ˉαt⋅√1−ˉαt√ˉαt−1√αt=1−αt√αt√1−ˉαt. 5. 따라서 최종적으로 μq(xt,x0)=1√αtxt−1−αt√αt√1−ˉαtϵ, 즉, μq(xt,x0)=1√αt(xt−1−αt√1−ˉαtϵ). 4. 노이즈 예측 네트워크와의 연결 실제 학습에서는 네트워크 eθ(xt,t)가 ϵ를 예측하도록 설계합니다. 따라서 위 식에서 ϵ를 eθ(xt,t)로 대체하여 μq(xt,x0)=1√αt(xt−1−αt√1−ˉαteθ(xt,t)) 와 같이 사용하게 됩니다. 요약 1. **Forward process**에서 xt를 x0와 ϵ의 선형 결합으로 표현한 후, 2. **역확산 단계**의 평균 μq(xt,x0)가 x0와 xt의 선형 결합으로 주어짐을 확인합니다. 3. x0를 xt와 ϵ로 표현한 식을 대입하고, 계수를 정리하면 xt의 계수가 1/√αt가 되고, ϵ에 대한 항이 (1−αt)/(√αt√1−ˉαt)가 되어 최종 식이 도출됩니다. 이와 같이, 위 유도 과정을 통해 DDPM의 역확산 단계에서 μq(xt,x0)가 위와 같이 계산되는 이유를 알 수 있습니다.
'학술 > deep learning' 카테고리의 다른 글
[질문/답] DDPM에서 pθ(xt−1∣xt)를 학습할 때는 q(xt−1∣x0)에 일치 시키면 안되는가? (0) | 2025.03.24 |
---|---|
DDPM에서 원본 데이터 복원 신경망에서 x_0를 예측 하는 이유 (0) | 2025.03.21 |
윈도우에서 tensorrt 설치 하기 및 python 확인 (2) | 2022.05.20 |