본문 바로가기

전체 글

[질문/답] DDPM에서 pθ(xt−1∣xt)를 학습할 때는 q(xt−1​∣x0​)에 일치 시키면 안되는가? **결론부터 말씀드리면**, \(\\\) DDPM에서 \(\displaystyle p_\theta(x_{t-1}\mid x_t)\)를 학습할 때는 **\(\displaystyle q(x_{t-1}\mid x_t, x_0)\)**와 일치시키는 것이 맞고, \(\displaystyle q(x_{t-1}\mid x_0)\)와 직접 일치시키는 것은 올바른 방식이 아닙니다.아래에 그 이유를 좀 더 구체적으로 정리해 드리겠습니다.\(\\\) 1. Forward Process와 Posterior의 정의 \(\\\)DDPM(또는 일반적인 마코프 체인 기반 확산 모델)에서 **Forward Process**는 \[q(x_1, x_2, \dots, x_T \mid x_0) = \prod_{t=1}^T q(x.. 더보기
DDPM에서 원본 데이터 복원 신경망에서 x_0를 예측 하는 이유 우선 DDPM의 “학습(Training)”과 “샘플링/생성(Sampling)” 과정을 구분해서 생각해보면 이해가 좀 더 수월합니다. \(\\\) 1. 학습(Training) 단계에서의 모델 동작 \(\\\) 학습 단계에서는 다음 과정을 거쳐 모델을 훈련합니다. \(\\\) 1. **(Forward 과정) \( x_0 \)에서 \( x_t \) 만들기** \[ x_t = \sqrt{\bar{\alpha}_t} \, x_0 + \sqrt{1-\bar{\alpha}_t} \, \epsilon, \quad \epsilon \sim \mathcal{N}(0,I). \] - 이 때 \( x_0 \)는 우리가 알고 있는 **실제 데이터(ground truth)** 입니다. \(\\\) - \(\bar{\alph.. 더보기
DDPM에서 노이즈 예측 신경망 평균 공식 유도 다음은 DDPM에서 역확산 단계의 평균 \(\mu_q(x_t,x_0)\)가\[\mu_q(x_t,x_0)=\frac{1}{\sqrt{\alpha_t}}\left(x_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon\right)\]로 계산되는 과정을 단계별로 유도하는 방법입니다.\(\\\) 1. Forward Process에서 \(x_t\) 표현 \(\\\)DDPM의 forward process에서는 \[x_t = \sqrt{\bar{\alpha}_t}\,x_0 + \sqrt{1-\bar{\alpha}_t}\,\epsilon,\quad \epsilon\sim\mathcal{N}(0,I),\]로 정의됩니다. 여기서 \[\bar{\alpha}_t=\prod_{.. 더보기
KL 발산 계산하기 두 개의 다변량 정규분포 \(\mathcal{N}(\mu_1, \Sigma)\)와 \(\mathcal{N}(\mu_2, \Sigma)\) 간의 KL 발산은 다음과 같은 간단한 형태를 갖습니다: \[ D_{\mathrm{KL}}\bigl(\mathcal{N}(\mu_1, \Sigma) \,\big\|\, \mathcal{N}(\mu_2, \Sigma)\bigr) \;=\; \frac12\,(\mu_2 - \mu_1)^\top \Sigma^{-1} (\mu_2 - \mu_1). \] 즉, 공분산 \(\Sigma\)가 동일할 때(특히 \(\Sigma_1 = \Sigma_2 = \Sigma\)) KL 발산에서 “두 평균 벡터 간의 거리”만 남고, 아래와 같이 간단히 표현됩니다. \(\\\) 유도 개요 \(\.. 더보기
트위디 공식(Tweedies' Formula) 주어진 식의 증명은 조건부 기대값의 정의와 베이즈 추론, 로그 우도의 그라디언트를 계산하는 과정을 통해 이루어집니다. 여기서 \( \mathbb{E}[\mu | x] = x + \sigma^2 \nabla_x \log p(x) \) 또는 \( \mathbb{E}[\mu | x] = x + \sum \nabla_x \log p(x) \)의 형태는 관측값 \( x \)에 대한 사후 확률 \( p(\mu | x) \)를 활용합니다.조건부 기대값 정의조건부 기대값은 다음과 같이 정의됩니다: \[ \mathbb{E}[\mu | x] = \int \mu \, p(\mu | x) \, d\mu \] 베이즈 정리를 통해 \( p(\mu | x) \)는 다음과 같이 표현됩니다: \[ p(\mu | x) = \frac{p.. 더보기
EM(expectation maximization) 알고리즘 python 구현 EM 알고리즘은 다음과 같은 목표 함수를 최소화 하는 것이다.$$J= {\sum_{n=1}^N \sum_{k=1}^K r_{nk} \Vert x_n - u_k \Vert^2}$$여기서 \(N\)은 데이터의 갯수 \(K\)는 집단의 갯수이다.\( r_{nk}\)는 데이터 포인터 \(x_n\)대한 이진 표시 변수 \(r_{nk} \in {0,1}\)을 도입한 것이다.목표는 \( J\)를 최소화하는  \(\{r_{nk}\}\)와 \(\{u_{k}\}\) 를 찾는 것이다.이를 위하여 반복적 과정을 통해 \(r_{nk}\) 와 \(u_{k}\)의 최적화를 수행한다.일단 \(u_{k}\) 에 대한 초기값을 설정한다.첫단계 \(u_{k}\) 를 고정한 채로 \( J\)를 최소화하는 \(r_{nk}\) 를 찾는다.두번.. 더보기
윈도우에서 tensorrt 설치 하기 및 python 확인 처음 tensorRT를 윈도우에서 설치하려면 어디서 부터 시작 해야 할지 조금 당황스럽다. 인터넷을 찾아 보면 아래와 같이 설치한다고 되어 있지만, pip install nvidia-pyindex pip install nvidia-tensorrt 실제로 해보면 두번째 줄에서 에러가 발생한다. 윈도우는 내길이 아닌가 하는 생각이 들지만 계속 구글링을 해본다. 1. tensorRT 홈페이지에 들어가 환경에 맞는 zip 파일을 다운로드 받는다. https://developer.nvidia.com/nvidia-tensorrt-download 윈도우 버전이고 CUDA 11.2가 설치 되어 있으므로 TensorRT 8.4를 선택했다. 파일을 다운 받아 D: 최상위에 풀면 아래와 같이 된다. D:\TENSORRT-8.. 더보기
tensorflow dataset padded_batch 함수 입력데이터의 크기가 가변 일때 같은 크기로 읽을 수 있게 변환해 주는 함수이다. 샘플을 보면 그리 어렵지 않게 사용법을 익힐수 있다. padded_batch padded_batch( batch_size, padded_shapes=None, padding_values=None, drop_remainder=False ) Combines consecutive elements of this dataset into padded batches. This transformation combines multiple consecutive elements of the input dataset into a single element. Like tf.data.Dataset.batch, the components of the .. 더보기