Diffusion Models hoạt động như thế nào?
Hiểu forward noising, dự đoán noise và reverse sampling mà không nhầm với phục hồi chính xác một ảnh.
Diffusion model học một quá trình tạo mẫu từ nhiễu bằng nhiều bước khử nhiễu có điều kiện. Khi sinh ảnh, mô hình không đơn giản mở lại một ảnh đã bị che, mà lấy mẫu theo phân bố đã học.
Mục tiêu học tập
- Phân biệt quá trình thêm nhiễu cố định và quá trình reverse học được.
- Đọc công thức lấy mẫu x_t và mục tiêu dự đoán noise đơn giản.
- Nêu vai trò timestep, schedule và số bước sampling.
Từ dữ liệu đến nhiễu
Thêm nhiễu dần làm cấu trúc ảnh khó nhận ra. Nếu luyện nhiều ví dụ ở các mức nhiễu, một mạng có thể học tín hiệu giúp đi theo chiều ngược. Ẩn dụ “lau mờ” chỉ giải thích trực giác, không bảo đảm tìm lại đúng ảnh ban đầu.
Forward process của DDPM dùng các bước Gaussian với noise schedule được chọn trước. Khi train, có thể lấy trực tiếp một phiên bản nhiễu ở timestep t thay vì mô phỏng mọi bước từ đầu. Mạng nhận cả x_t và thông tin t.
Giá trị pixel cần theo quy ước normalization của mô hình. Không cộng cùng một độ nhiễu lên ảnh ở thang [0,1] và [0,255] rồi coi là cùng điều kiện training.
Đặt , . Ta lấy , với . Công thức này mô tả marginal forward dưới giả định DDPM Gaussian.
Schedule cần giữ các hệ số trong miền hợp lệ. Một sample noise là ngẫu nhiên; giữ seed giúp lặp ví dụ trong cùng môi trường nhưng không thay đổi bản chất xác suất của quy trình.
Mạng học dự đoán gì?
Trong bài tập, ta biết ảnh sạch và chính noise vừa thêm nên có đáp án để luyện mạng. Sau nhiều ví dụ, mạng học mẫu liên quan đến cấu trúc dữ liệu. Nó không nhận được một danh sách đáp án chính xác cho mọi ảnh nhiễu mới.
Một parameterization phổ biến dự đoán epsilon noise từ x_t và timestep. Cách parameterize bằng x0 hoặc velocity là lựa chọn khác. Noise-prediction loss và cách sampling phải nhất quán; không thay một công thức mà giữ mọi hệ số từ công thức khác.
Mục tiêu đơn giản trong DDPM có dạng . Đây là một training objective, không phải bằng chứng mô hình trả về đúng sample x0 đã tạo ra xt.
Điều kiện như text embedding và guidance thay đổi quy trình sinh có điều kiện. Không đồng nhất guidance mạnh với chất lượng tổng thể tốt hơn; trade-off fidelity, diversity và prompt adherence cần đánh giá riêng.
Sampling và kiểm tra ví dụ
Khi sinh, bắt đầu bằng Gaussian noise rồi lặp các bước sử dụng mô hình. Những seed khác nhau có thể cho các ảnh khác nhau. Giảm số bước thường thay đổi trade-off giữa thời gian và đầu ra, không đơn thuần bỏ bớt bước giống nhau.
DDPM reverse transition và các sampler khác cần công thức cập nhật riêng. Mã chỉ kiểm tra forward mixture 1D với alpha-bar tự chọn; không có mạng khử nhiễu và không tạo ảnh. Nhờ vậy có thể kiểm tra hệ số mà không giả vờ đã huấn luyện generator.
So sampling cost phải ghi số bước, model calls, resolution, precision và thiết bị. Các metric phân bố ảnh không tự đo correctness nội dung hoặc ghi nhớ dữ liệu; cần review tác vụ cụ thể và điều kiện dữ liệu huấn luyện.
Workflow & kiến trúc
Ứng dụng & giới hạn
- Hiểu pipeline sinh ảnh và các công việc khử nhiễu.
- Kiểm tra training target, normalization và sampler compatibility.
Điểm mạnh
Một khuôn khổ xác suất có training targets cụ thể và quy trình sinh từng bước.
Giới hạn cần nhớ
Sampling có thể tốn tài nguyên; hình hợp mắt không chứng minh nội dung đúng, mới hay phù hợp mọi điều kiện.
Thử trong một project nhỏ
Tính hệ số của x0 và epsilon khi alpha-bar bằng 1 và khi gần 0. Giải thích vì sao mã khôi phục dùng epsilon thật không phải là phép thử model học được.
from math import sqrt
from random import Random
rng = Random(7)
x0, alpha_bar = 0.6, 0.8
epsilon = rng.gauss(0.0, 1.0)
xt = sqrt(alpha_bar)*x0 + sqrt(1-alpha_bar)*epsilon
recovered = (xt - sqrt(1-alpha_bar)*epsilon) / sqrt(alpha_bar)
assert abs(recovered - x0) < 1e-12
print({"x_t": xt})Forward noising 1D; việc khôi phục dùng noise thật đã biết, không phải khả năng của một denoising model.
