카테고리 30

디퓨전 모델 설명 04. DDPM: 역확산을 학습. ELBO에서 Noise 예측까지

0. 한눈에 — DDPM이란 (요약)DDPM(Denoising Diffusion Probabilistic Models)은 03장의 '분포들의 경로를 거꾸로 내려오기'를 실제로 학습 가능한 형태로 만든 모델입니다. 출발점은 likelihood의 하한인 ELBO(= 분포를 맞추는 문제)지만, 그것이 놀랄 만큼 단순한 'noise 맞추기 MSE'로 정리됩니다. 이 장은① 고정된 forward,② 학습하는 reverse(어떤 Gaussian을, 무슨 '정답'에 맞추는지),③ 왜 noise를 예측하는지와 ELBO와의 연결,④ noise·$x_0$·score·$v$가 사실 한 대상임,⑤ 학습과 샘플링 알고리즘(코드), ⑥ 그 네 좌표를 차례로 봅니다.1. Forward process는 고정되어 있다DDPM의 for..

디퓨전 모델 설명 03: Diffusion의 기본 구조

0. 한눈에 — Diffusion의 기본 구조 (요약)Diffusion 모델의 기본 구조는 두 과정으로 이뤄집니다. forward process는 데이터 분포를 정해진 규칙으로 Gaussian noise 분포까지 '보내고',reverse process는 그 길을 거꾸로 내려오며 데이터를 생성합니다. 그리고 reverse가 실제로 배우는 것은 각 noise level 분포의 score(= log 밀도의 기울기, 02장)입니다. 이 장은 그 구조를 근본부터 풀어,① forward가 왜 하필 그런 형태인지,② $x_0$에서 임의의 $x_t$로 한 번에 점프하는 방법과 그 이득,③ reverse가 정확히 어떤 확률 분포를 모델링하는지,④ score를 학습하는 구체적 과정,⑤ autoregressive 모델과 무..

[자료구조 00-1] 자료구조는 무엇을 최적화하는가?

0. 이 장의 질문자료구조는 왜 배울까요?많은 사람은 자료구조를 처음 만날 때 이렇게 생각합니다.배열을 배운다.연결 리스트를 배운다.스택과 큐를 배운다.트리와 그래프를 배운다.각 구조의 시간복잡도를 외운다. 이 방식으로도 시험 문제는 어느 정도 풀 수 있습니다.하지만 실제 문제를 만나면 금방 막힙니다.왜냐하면 자료구조의 본질은 이름 암기가 아니라 “무엇을 빠르게 만들 것인가”를 판단하는 일이기 때문입니다.이 장의 질문은 하나입니다.자료구조는 정확히 무엇을 최적화하는가?답은 아래처럼 정리할 수 있습니다.자료구조는 데이터를 어떤 연산에 맞춰, 어떤 비용 모델 위에 배치할지 정하는 표현 전략입니다.이 문장은 길지만, 핵심 단어는 네 개입니다.데이터: 저장하고 다룰 대상연산: 그 데이터에 반복해서 하는 질문과 ..

[자료구조 00-0] AI 딸깍 시대에 왜 자료구조를 알아야 하는가?

0. 이 장의 질문요즘은 코드를 직접 한 줄씩 쓰지 않아도 됩니다.Claude code, Codex.. 등등에게 “로그 처리 코드를 짜줘”, “RAG 검색 API를 만들어줘”, “캐시를 붙여줘”라고 말하면 꽤 그럴듯한 코드가 나옵니다. 그렇다면 자료구조는 덜 중요해졌을까요?아니라고 생각합니다.AI가 코드를 더 쉽게 만들어 줄수록, 사람은 “어떤 데이터 표현이 이 문제에 맞는가”를 더 잘 판단해야 합니다.자료구조는 문법 지식이 아닙니다. 자료구조는 데이터가 어떤 질문을 자주 받을지, 어떤 연산이 반복될지, 어떤 하드웨어 위에서 움직일지, 어떤 비용을 감수할지 정하는 판단 체계입니다.AI가 코드를 만들어 주는 시대에는 단순 구현 노동은 줄어들 수 있습니다. 하지만 구조 선택의 책임은 사라지지 않습니다.AI가..

디퓨전 모델 설명 02: 확률 분포와 Score. 노이즈 제거를 넘어 diffusion을 분포(distribution)으로 이해하기

0. 이 장의 질문Diffusion에서 왜 score라는 개념이 중요할까요? Diffusion을 깊게 이해하는 가장 빠른 길은 "노이즈 제거"가 아니라 분포에서 출발하는 것입니다. 데이터 분포는 직접 알기 어렵다. 그러니 그 분포에서 데이터다운 쪽을 가리키는 방향만 배우자. 그 방향이 score다. 이 '방향'이 뒤따르는 모든 장(03의 경로, 04의 DDPM, 05의 SDE/ODE)을 관통하는 실입니다.1. 확률 분포를 직접 알기는 어렵다이미지 $x$가 데이터 분포 $p_{\text{data}}(x)$에서 왔다고 합시다. 학습 이미지는 많지만 그 공식은 모릅니다.2026.06.23 - [인공지능 이론/Diffusion] - 00. 생성 모델의 목표에서 봤듯 이미지 공간은 20만 차원처럼 거대하고, 자연..

[파이토치 01] 환경 준비와 Quick Start

0. 목표이 페이지의 목표는 PyTorch 코드의 전체 모양을 먼저 보는 것입니다.처음부터 모든 줄을 완벽히 이해하려고 하지 않아도 됩니다. 먼저 “전체 구조가 이렇게 생겼구나”를 잡는 것이 중요합니다.1. 설치 확인import torchprint(torch.__version__)print(torch.cuda.is_available())torch.cuda.is_available()가 False여도 괜찮습니다. 기본 실습은 CPU에서도 가능합니다.True라면 앞으로 큰 Tensor 계산을 GPU에서 실행할 수 있다는 뜻입니다.# 최신 PyTorch 권장 방식: CUDA / MPS(Mac) / XPU 등 사용 가능한 가속기를 자동 선택device = torch.accelerator.current_accele..

디퓨전 모델 설명 01: GAN에서 Diffusion으로. 생성 모델을 바라보는 관점 (중요)

-1. 들어가기 전에Diffusion을 알기 위해서 GAN을 반드시 잘 알아야 할까요? 굳이 그럴 필요는 없습니다. 이쪽 분야는 워낙 빠르게 변하다보니, 이전 기술을 전부 follow up 하고 최신걸로 들어가는건 쉽지 않습니다. 차라리, 이전거는 대략적으로 개념만 알고, 최신 기술을 먼저 습득한다음 다시 이전걸 공부하면 더 효율적일 수 있습니다. 본 글도 같은 방식으로 진행합니다.0. 이 장의 질문왜 Diffusion을 설명할 때 GAN과 비교하는 것이 도움이 될까요? GAN과 Diffusion은 둘 다 생성 모델이고, 목표도 같습니다 — $p_{\text{data}}(x)$와 비슷한 분포에서 새 샘플을 뽑는 것입니다.차이는 그 분포를 맞추는 방식입니다. 그 방식의 차이를 보면, 왜 Diffusion이..

디퓨전 설명 00: 생성 모델의 목표 - 디퓨전은 단순 노이즈 제거로만 이해하면 안된다!

0. 시작하기 전에 — 왜 '큰 그림'부터 보는가Diffusion을 다룬 글은 대부분 이걸 "노이즈를 넣었다가 다시 지우는 학습 기법"으로 소개합니다. 그 설명만으로도 코드는 돌아갑니다. 하지만 거기서 멈추면 시야가 좁아집니다. 왜 하필 noise를 쓰는지, 왜 분포가 아니라 score를 배우는지, 그 손실함수는 어디서 튀어나왔는지를 모른 채 레시피만 외우게 됩니다. 그러면 막상 응용하거나 새로운 연구로 확장하려 할 때 손에 잡히는 게 없습니다. "denoise하는 과정"에만 익숙해진 채로 advanced한 작업에 들어가 길을 잃는 경우가 그래서 많습니다. 여기서 작성하는 Diffusion관련 내용은 순서를 뒤집어 서술합니다.. Diffusion을 '생성 모델'이라는 더 큰 문제의 한 가지 해법으로 놓고..

디퓨전 모델 설명 00-0: 생성형 모델을 이해하는데 필요한 기초 수학. 필요한것만 간단히!

0. 이 페이지를 읽는 법이 페이지는 Diffusion을 읽기 전에 수학 기호 때문에 막히지 않도록 만든 준비 운동입니다.수학은 잘 모르지만, 그렇다고 선형대수학, 미적분학, 확률변수론... 등을 처음부터 시작하기에는 답이 없는 분들을 위해서 만들었습니다! (내용이 부족하다면 지속 수정 예정입니다)확률, 조건부 확률, 미분, gradient를 이미 편하게 읽을 수 있다면 건너뛰어도 됩니다.반대로 수식만 보면 멈칫한다면, 이 페이지를 천천히 읽고 나서 본문으로 가면 훨씬 편합니다.여기 나오는 어려운 단어는 나오는 최대한 설명하면서 잘 읽히도록 작성하겠습니다.이 글을 작성한 목적:수식을 외우는 것이 아니라, 수식이 무슨 말을 짧게 적은 것인지 읽을 수 있게 되는 것.1. 먼저 큰 그림부터생성형 모델을 한 문..

11-2. FashinMNIST 확장

목표FashionMNIST는 PyTorch 공식 Quickstart에서 사용하는 대표적인 이미지 분류 예제입니다.Synthetic data 프로젝트가 끝난 뒤, 실제 이미지 데이터셋으로 확장할 때 사용합니다.1. 전체 흐름FashionMNIST 다운로드→ ToTensor transform→ DataLoader→ Flatten + Linear model→ CrossEntropyLoss→ Optimizer→ train/test loop→ state_dict 저장2. 데이터 준비from torchvision import datasetsfrom torchvision.transforms import ToTensorfrom torch.utils.data import DataLoadertrain_data = data..