Diffusion: từ thêm nhiễu đến học khử nhiễu
Diffusion là một trong những bước tiến quan trọng nhất của mô hình sinh (generative models). Trong khi các mô hình phân loại chỉ học cách gán nhãn cho dữ liệu quan sát được, mô hình sinh học cách tạo ra dữ liệu mới hoàn toàn chưa từng xuất hiện nhưng vẫn tuân theo đúng phân phối của dữ liệu thật.
Ý tưởng nền tảng của diffusion thoạt nhìn khá vòng vèo: ta chủ động phá hủy dữ liệu bằng cách thêm nhiễu Gauss ngẫu nhiên qua nhiều bước nhỏ, cho đến khi mẫu chỉ còn là một khối nhiễu trắng thuần túy. Sau đó, ta huấn luyện một mạng neural học cách đảo ngược từng bước phá hủy đó. Khi cần tạo mẫu mới, ta không cần dữ liệu gốc: chỉ cần lấy mẫu ngẫu nhiên từ một phân phối Gauss chuẩn và lặp lại quá trình gỡ nhiễu từng bước cho đến khi thu được một bức ảnh sạch.
Cách tiếp cận này ổn định hơn GAN vì nó không đẩy hai mạng vào một cuộc chơi đối kháng bấp bênh, đồng thời tạo ra chất lượng hình ảnh sắc nét và đa dạng hơn hẳn Autoencoder truyền thống. Mốc son mở đầu cho kỷ nguyên này là mô hình DDPM (Denoising Diffusion Probabilistic Models) của Jonathan Ho và cộng sự (2020).
Nếu chỉ giữ lại một câu, có thể dùng câu sau:
Một mô hình diffusion là một cỗ máy khử nhiễu từng bước: thay vì sinh thẳng một bức ảnh hoàn chỉnh từ hư vô, ta dạy mạng neural dự đoán phần nhiễu đã được thêm vào qua từng thời điểm, để khi tạo mẫu mới ta chỉ cần bắt đầu từ nhiễu ngẫu nhiên và gỡ nhiễu dần.
Từ bài toán sinh dữ liệu đến bài toán khử nhiễu
Giả sử ta có một bức ảnh chụp con mèo. Nếu thêm một lượng nhiễu Gauss rất nhỏ, mắt người vẫn dễ dàng nhận ra con mèo. Nhưng nếu lặp lại việc thêm nhiễu hàng trăm lần, cấu trúc hình ảnh sẽ tan rã dần và biến mất hoàn toàn thành nhiễu ngẫu nhiên. Chiều này cực kỳ dễ vì ta nắm toàn quyền kiểm soát lượng nhiễu thêm vào.
Chiều ngược lại mới là bài toán then chốt: xuất phát từ một hình ảnh bị nhiễu, làm thế nào mạng neural có thể bóc tách đâu là chi tiết thật và đâu là nhiễu hạt để gỡ bỏ? Nếu mạng học được cách khử một lượng nhiễu nhỏ ở mọi mức độ nhiễu khác nhau, ta hoàn toàn có thể khởi đầu từ một màn nhiễu trắng và dẫn dắt nó dần về một bức ảnh hợp lý.

Hình 1. Quá trình xuôi phá hủy ảnh gốc và quá trình ngược khử nhiễu từng bước. Nguồn: Benyamin Ghojogh & Ali Ghodsi, Diffusion Models: Tutorial and Survey, Figure 1. Ảnh mèo: Arash Vahdat.
Một điểm trực giác cần nắm vững: mạng neural không học cách nhớ lại bức ảnh cụ thể đã bị phá hủy. Khi tạo ảnh mới trong thực tế, điểm xuất phát là một mẫu nhiễu ngẫu nhiên hoàn toàn mới. Mạng chỉ học một quy luật cục bộ: tại trạng thái nhiễu này, vectơ biến đổi nên trỏ về hướng nào trong không gian đặc trưng để bức ảnh trông tự nhiên hơn.
Quá trình xuôi: thêm nhiễu có kiểm soát vào ảnh
Ký hiệu dữ liệu sạch ban đầu là . Ta định nghĩa một chuỗi biến ngẫu nhiên qua các bước thời gian :
Ở mỗi bước , ta hòa thêm một lượng nhiễu Gaussian nhỏ:
với quy ước quen thuộc:
Trong đó là tham số điều khiển lượng nhiễu được bơm thêm tại bước . Hệ số giữ vai trò co tỉ lệ tín hiệu cũ lại để tổng phương sai của không bị bùng nổ qua thời gian.
Vì sao phải chia nhỏ thành nhiều bước?
Nếu biến thẳng một bức ảnh thành nhiễu trắng trong một bước duy nhất, bài toán đảo ngược gần như bất khả thi vì toàn bộ thông tin cấu trúc đã biến mất. Nhưng khi chia thành bước rất nhỏ (ví dụ ), mỗi bước ngược chỉ cần giải một bài toán đơn giản hơn rất nhiều: từ một mẫu hơi nhiễu, dự đoán một dịch chuyển nhỏ để mẫu sạch hơn một chút.
Đây là sự khác biệt cơ bản so với GAN. GAN bắt Generator phải ánh xạ một phát từ vector nhiễu sang ảnh phân giải cao , khiến mặt phẳng tối ưu rất gồ ghề và dễ gặp hiện tượng sụp đổ mode (mode collapse). Diffusion biến bài toán thành một chuỗi bước suy diễn mượt mà.
Công thức nhảy cóc trực tiếp đến bước t
Nếu mỗi lần huấn luyện ta phải chạy lặp tuần tự bước thêm nhiễu cho từng ảnh trong batch, chi phí tính toán sẽ rất lớn. May mắn thay, nhờ đặc tính của phân phối Gauss, ta có thể tính trực tiếp phân phối của từ mà không cần đi qua các bước trung gian.
Đặt:
Ta chứng minh được:
Điều này cho phép ta biểu diễn bằng một phương trình tường minh duy nhất:
Công thức này là hòn đá tảng giúp huấn luyện DDPM hiệu quả:
- Lấy một mẫu ảnh sạch từ tập dữ liệu.
- Bốc ngẫu nhiên một bước thời gian .
- Lấy mẫu một nhiễu ngẫu nhiên .
- Tính trực tiếp trong một phép tính tensor duy nhất.
- Đưa và vào mạng neural để bắt mạng đoán lại vector nhiễu .
Nhìn quá trình thêm nhiễu dưới góc độ tín hiệu và tỉ số SNR
Trong công thức sinh , ta thấy rõ hai thành phần cạnh tranh nhau:
- Tín hiệu gốc: được điều chế bởi .
- Nhiễu tích lũy: được điều chế bởi .
Tương quan giữa hai thành phần này được định lượng qua tỉ số tín hiệu trên nhiễu (Signal-to-Noise Ratio — SNR):
t = 0 : SNR rất lớn (ảnh sạch 100%, hầu như không có nhiễu)
t trung bình: SNR xấp xỉ 1 (tín hiệu và nhiễu cân bằng, cấu trúc mờ ảo)
t = T : SNR xấp xỉ 0 (ảnh gần như 100% là nhiễu trắng)
Khi nhỏ, mạng nhìn thấy rõ vật thể và chỉ cần khử nhiễu bề mặt. Khi lớn, mạng nhìn thấy một mớ hỗn độn và phải học cách phác thảo bố cục tổng thể từ số 0. Vì các timestep có độ khó và thang gradient rất chênh lệch, các phương pháp hiện đại (như Min-SNR weighting) thường gán trọng số thích nghi cho hàm loss để mạng không bị thiên lệch vào các bước thời gian quá dễ hoặc quá khó.
Lịch trình nhiễu: thêm tuyến tính hay theo hàm cosine?
Dãy giá trị được gọi là noise schedule (lịch trình nhiễu). Nó quyết định tốc độ phá hủy thông tin diễn ra nhanh hay chậm qua các bước thời gian.
| Loại Schedule | Đặc điểm cơ chế | Ứng dụng thực tế |
|---|---|---|
| Linear | tăng tuyến tính từ đến | Dễ cài đặt, là chuẩn mặc định trong bài báo DDPM gốc (2020). |
| Cosine | giảm dần theo hàm cosine mềm mại | Tránh phá hủy thông tin quá đột ngột ở các bước đầu, ảnh tạo ra giàu chi tiết hơn. |
| Sigma-based (EDM) | Mô tả mức nhiễu liên tục bằng độ lệch chuẩn | Tách bạch giữa tham số hóa mô hình và bộ giải phương trình vi phân (Karras et al., 2022). |
| Flow Matching | Định nghĩa vận tốc đi theo đường thẳng từ nhiễu sang dữ liệu | Hướng đi hiện đại trong các mô hình như Stable Diffusion 3, Flux. |
Lưu ý quan trọng: Không có một schedule nào tối ưu cho mọi checkpoint. Nếu bạn tải về một checkpoint pretrained, lịch trình nhiễu và thuật toán lấy mẫu bắt buộc phải tương thích với cấu hình mà mô hình đã được huấn luyện.
Quá trình ngược: mạng neural thực sự phải học điều gì?
Sau khi đã làm chủ quá trình xuôi, mục tiêu của ta là xấp xỉ phân phối của bước đảo ngược:
Trong DDPM, bước ngược được mô hình hóa dưới dạng một phân phối chuẩn:
Thay vì bắt mạng neural học cách dự đoán trực tiếp vector trung bình , Ho et al. nhận thấy toán học sẽ trở nên thanh thoát hơn nếu cho mạng dự đoán chính vector nhiễu đã tạo ra :
Khi đã có dự đoán , ta suy ngược lại giá trị trung bình bằng công thức giải tích:
Sau đó lấy mẫu trạng thái tiếp theo:
Tại bước cuối cùng (), ta triệt tiêu thành phần ngẫu nhiên () để thu được bức ảnh sạch hoàn toàn.
Hàm mất mát đơn giản: đoán nhiễu bằng sai số bình phương (MSE)
Mặc dù nền tảng lý thuyết xác suất của diffusion bắt nguồn từ việc tối ưu cận dưới biến phân (Evidence Lower Bound — ELBO), kết quả thực nghiệm chỉ ra rằng một hàm mất mát rút gọn không trọng số mang lại chất lượng mẫu vượt trội:
Bản chất của hàm loss này rất dễ hiểu:
- Ta tự tay gieo một lượng nhiễu , nên ta nắm trong tay đáp án đúng tuyệt đối.
- Mô hình nhận vào ảnh nhiễu cùng bước thời gian , rồi giải bài toán hồi quy (regression) để tái tạo lại vector .
Đây là một bài toán học tự giám sát (self-supervised learning) hoàn hảo: không tốn bất kỳ chi phí gắn nhãn thủ công nào từ con người, dữ liệu huấn luyện được tự động sinh ra không giới hạn từ chính kho ảnh sạch.
# Pseudocode một bước huấn luyện DDPM tiêu chuẩn
for x0 in dataloader:
# 1. Bốc ngẫu nhiên bước thời gian t cho từng mẫu trong batch
t = torch.randint(1, T + 1, (batch_size,), device=device)
# 2. Lấy mẫu nhiễu Gauss ngẫu nhiên
noise = torch.randn_like(x0)
# 3. Tính trực tiếp ảnh nhiễu xt
xt = sqrt_alpha_bar[t] * x0 + sqrt_one_minus_alpha_bar[t] * noise
# 4. Mạng neural dự đoán phần nhiễu
noise_pred = model(xt, t)
# 5. Tối ưu hàm mất mát MSE
loss = F.mse_loss(noise_pred, noise)
optimizer.zero_grad()
loss.backward()
optimizer.step()
Quá trình sinh mẫu: đi từ nhiễu ngẫu nhiên về ảnh sạch
Khi mô hình đã hội tụ, quá trình sinh dữ liệu mới hoàn toàn độc lập với tập dữ liệu gốc:
Quy trình suy diễn của DDPM kinh điển:
# Khởi đầu từ nhiễu trắng thuần túy
x = torch.randn(batch_size, channels, height, width, device=device)
# Vòng lặp khử nhiễu ngược từ T về 1
for t in reversed(range(1, T + 1)):
# Dự đoán nhiễu tại bước t
noise_pred = model(x, t)
# Tính giá trị trung bình cho bước t-1
mean = compute_reverse_mean(x, noise_pred, t)
# Gieo thêm một lượng nhiễu nhỏ (trừ bước cuối cùng)
z = torch.randn_like(x) if t > 1 else 0
x = mean + sigma[t] * z
# x lúc này là ảnh sạch x0
Nhược điểm lớn nhất của quy trình nguyên bản này là tốc độ: nếu , ta phải gọi mạng neural chạy forward tới 1000 lần liên tiếp để tạo ra một bức ảnh duy nhất. Các bài học tiếp theo sẽ giới thiệu các bước đột phá để giải quyết vấn đề này: DDIM, DPM-Solver++, Latent Diffusion và Distillation.
Khung kiến trúc U-Net: vì sao skip connection là chìa khóa?
Trong bài toán khử nhiễu ảnh, mạng neural cần đảm bảo hai yêu cầu khắt khe:
- Nhận thức được ngữ cảnh tổng thể: vật thể là người, xe hay phong cảnh.
- Bảo toàn chính xác chi tiết cục bộ: từng cọng tóc, đường nét, hạt da.
Kiến trúc U-Net đáp ứng hoàn hảo hai tiêu chí này nhờ cấu trúc đối xứng hình chữ U kết hợp với các đường nối tắt (skip connections):
- Nhánh co (Downsampling): Nén giảm dần độ phân giải không gian qua các tầng Convolution và Pooling, đồng thời tăng số kênh để trích xuất biểu diễn ngữ cảnh trừu tượng ở tầng sâu (Bottleneck).
- Nhánh mở (Upsampling): Tăng dần độ phân giải ngược lại kích thước ảnh ban đầu.
- Skip connections: Nối trực tiếp feature map từ nhánh co sang nhánh mở tương ứng. Nhờ vậy, các chi tiết không gian độ phân giải cao không bị thất lạc trong quá trình nén và được truyền thẳng tới đầu ra.
- Timestep Embedding: Vì cùng một mạng U-Net phải xử lý ảnh ở mọi bước , giá trị được mã hóa thành một vector embedding (tương tự Positional Encoding trong Transformer) rồi đưa vào từng khối ResNet block của U-Net. Nếu không có timestep embedding, mạng sẽ không biết ảnh đang ở mức nhiễu nào để áp dụng chiến lược khử phù hợp.
Ba cách chọn mục tiêu dự đoán: epsilon, x0 hay vận tốc v?
Không phải mọi mô hình diffusion đều dự đoán vector nhiễu . Trong thực tế, có ba cách tham số hóa mục tiêu dự đoán phổ biến:
1. Dự đoán nhiễu (epsilon-prediction):
Mạng dự đoán: epsilon_hat = model(xt, t)
Ưu điểm: Dễ học, là chuẩn của DDPM gốc.
2. Dự đoán ảnh sạch (x0-prediction):
Mạng dự đoán: x0_hat = model(xt, t)
Ưu điểm: Tự nhiên khi SNR rất cao hoặc trong các bài toán khôi phục ảnh.
3. Dự đoán vận tốc (v-prediction):
Đặt: v = sqrt(alpha_bar_t) * epsilon - sqrt(1 - alpha_bar_t) * x0
Mạng dự đoán: v_hat = model(xt, t)
Ưu điểm: Cân bằng số học hoàn hảo ở cả hai cực (nhiễu cao và tín hiệu cao),
được sử dụng rộng rãi trong Imagen Video và SD 2.x.
Lưu ý: Bạn tuyệt đối không được đổi tùy tiện cấu hình sampler (ví dụ chuyển từ epsilon sang v) nếu checkpoint không được huấn luyện theo mục tiêu đó. Việc lệch pha tham số hóa sẽ khiến ảnh đầu ra bị nổ nhiễu hoặc sai màu hoàn toàn.
Góc nhìn Score Matching: đi theo hướng tăng dần mật độ xác suất
Bên cạnh góc nhìn xác suất của DDPM, một cách tiếp cận toán học sâu sắc khác là Score-based Generative Modeling của Yang Song và Stefano Ermon (2019-2021).
Hàm score của một phân phối xác suất được định nghĩa là gradient của log-xác suất theo dữ liệu:
Về mặt hình học, score là một vector trường trỏ về hướng mà mật độ dữ liệu tăng nhanh nhất. Nếu ta ở một vị trí bất kỳ trong không gian dữ liệu, việc đi theo hướng của score sẽ dẫn ta về vùng chứa dữ liệu thật.
Khi dữ liệu bị nhiễu bởi phân phối Gauss phương sai , score của phân phối nhiễu có mối liên hệ trực tiếp đến vector nhiễu :
Điều này cho thấy: Dự đoán nhiễu bản chất chính là ước lượng hàm score của dữ liệu. Góc nhìn này mở đường cho việc quy nạp toàn bộ quá trình diffusion về việc giải các phương trình vi phân ngẫu nhiên (SDE) hoặc phương trình vi phân thường (ODE) trong thời gian liên tục.
Diffusion khác GAN và Autoencoder ở đâu?

Hình 2. Cơ chế đối kháng giữa Generator và Discriminator trong GAN. Trích từ tài liệu Deep Learning Cơ Bản.
| Tiêu chí | Autoencoder / VAE | GAN | Diffusion (DDPM) |
|---|---|---|---|
| Cơ chế cốt lõi | Nén vào không gian ẩn rồi tái tạo | Trò chơi đối kháng 2 người (Generator vs Discriminator) | Khử nhiễu lặp từng bước theo phương trình vi phân |
| Độ ổn định huấn luyện | Rất ổn định (tối ưu ELBO / Reconstruction Loss) | Bấp bênh, dễ mất cân bằng min-max, dễ sụp đổ mode | Rất ổn định (bài toán hồi quy MSE có giám sát) |
| Chất lượng ảnh | Thường bị mờ do giả định Gaussian ở pixel | Rất sắc nét, chi tiết cao | Cực kỳ sắc nét, độ chân thực và chi tiết vượt trội |
| Độ đa dạng mẫu | Khá cao nhưng thiếu sắc nét | Dễ bị nghèo nàn do mode collapse | Độ phủ phân phối rất cao, đa dạng mẫu xuất sắc |
| Tốc độ sinh mẫu | Cực nhanh (1 lần forward qua Decoder) | Cực nhanh (1 lần forward qua Generator) | Chậm hơn (cần từ 20 đến 1000 bước lặp khử nhiễu) |
| Khả năng điều khiển | Hạn chế qua biến ẩn | Khá khó khăn khi điều kiện hóa phức tạp | Rất linh hoạt qua Text Prompt, CFG, ControlNet |
Diffusion không thay thế GAN trong mọi bài toán. Nếu bạn cần sinh ảnh với độ trễ tính bằng mili-giây trên thiết bị di động, GAN hoặc VAE vẫn là lựa chọn hàng đầu. Nhưng nếu bạn cần chất lượng thị giác đỉnh cao, tính đa dạng và khả năng điều khiển chi tiết theo ngôn ngữ, Diffusion là ông vua tuyệt đối.
Một số hiểu nhầm nên bỏ sớm
“Diffusion chỉ là một Autoencoder khử nhiễu (Denoising Autoencoder)”
Không chính xác. Denoising Autoencoder chỉ học cách làm sạch một mức nhiễu cố định trong một lượt forward duy nhất. Diffusion định nghĩa một quá trình sinh hoàn chỉnh qua chuỗi thời gian liên tục, với lịch trình phương sai toán học chặt chẽ.
“Mô hình diffusion chỉ đang sao chép lại ảnh trong tập huấn luyện”
Không đúng. Đầu vào khi sinh mẫu mới là một mảng nhiễu Gauss hoàn toàn ngẫu nhiên. Mạng học cấu trúc xác suất của phân phối dữ liệu đa chiều, không phải học vẹt từng điểm ảnh cụ thể. Các nghiên cứu đã chứng minh không gian sinh của diffusion có tính tổng quát hóa cao.
“Càng chạy nhiều bước lấy mẫu thì ảnh sinh ra càng đẹp”
Chưa chắc. Số bước tối ưu phụ thuộc vào thuật toán sampler và scheduler. Với các bộ giải hiện đại (như DPM-Solver++), chất lượng ảnh thường bão hòa sau 20-30 bước; tăng lên 100 bước chỉ gây lãng phí tài nguyên tính toán mà không làm tăng độ sắc nét.
“Thay đổi Scheduler chỉ làm ảnh hưởng đến tốc độ chạy”
Hoàn toàn sai. Scheduler định nghĩa quỹ đạo dịch chuyển qua các mức nhiễu. Nếu dùng một scheduler không tương thích với cách mạng được huấn luyện (ví dụ lệch tham số hóa giữa epsilon và v), ảnh tạo ra có thể bị méo mó, sọc màu hoặc nổ hạt dù code vẫn chạy không báo lỗi.
“Loss MSE càng thấp thì ảnh sinh ra chắc chắn càng đẹp”
Không đủ. Loss huấn luyện chỉ đo lường sai số dự đoán nhiễu cục bộ tại từng bước ngẫu nhiên. Chất lượng ảnh cuối cùng còn phụ thuộc vào sự tích lũy sai số qua vòng lặp, tính chân thực của phân phối và cảm nhận thị giác của con người (thường đo bằng FID hoặc CLIP Score).
Nếu chỉ nhớ 8 ý
- Diffusion phá hủy dữ liệu bằng nhiễu Gauss qua quá trình xuôi, rồi dạy mạng neural học cách đảo ngược từng bước qua quá trình ngược.
- Nhờ tính chất của phân phối Gauss, ta có thể nhảy cóc thẳng từ ảnh sạch đến ảnh nhiễu ở bất kỳ bước nào mà không cần tính tuần tự.
- Hàm mất mát của DDPM thực chất là một bài toán hồi quy MSE đơn giản: mạng nhìn và , rồi dự đoán vector nhiễu đã được thêm vào.
- Tỉ số tín hiệu trên nhiễu giảm dần theo thời gian, định hình độ khó của bài toán khử nhiễu ở từng bước.
- U-Net là backbone kinh điển nhờ các skip connections giúp giữ lại toàn vẹn chi tiết độ phân giải cao từ ảnh gốc.
- Timestep embedding là thông tin bắt buộc để mạng biết nó đang khử nhiễu ở mức độ nào.
- Ước lượng nhiễu trong diffusion tương đương về mặt toán học với việc ước lượng hàm score (gradient log-xác suất) của dữ liệu.
- Diffusion đổi chi phí tính toán khi suy diễn (nhiều bước lặp) để lấy độ ổn định huấn luyện tuyệt đối và chất lượng hình ảnh vượt trội so với GAN.
Câu hỏi tự kiểm tra
- Vì sao ta có thể tính trực tiếp từ mà không phải chạy lặp qua từng bước từ đến ?
- Timestep embedding đóng vai trò gì trong mạng U-Net? Nếu bỏ nó đi thì chuyện gì sẽ xảy ra?
- Tại sao hàm mất mát của DDPM được gọi là học tự giám sát (self-supervised)? Đáp án đúng (ground truth) lấy từ đâu?
- Tỉ số SNR thay đổi như thế nào khi tăng dần từ đến ?
- So sánh sự khác nhau cốt lõi giữa cơ chế sinh dữ liệu của GAN và Diffusion.
- Ba cách tham số hóa mục tiêu dự đoán (
epsilon,x0,v) khác nhau ở điểm nào? - Skip connection trong U-Net giải quyết vấn đề gì trong bài toán khử nhiễu ảnh?
- Tại sao việc quan sát loss MSE trên tập train giảm dần chưa đủ để khẳng định mô hình đã sinh ảnh đẹp?
Mạch nối sang bài tiếp theo
Đến đây, ta đã nắm vững nguyên lý hoạt động của một mô hình diffusion vô điều kiện: bắt đầu từ nhiễu và kết thúc ở một hình ảnh ngẫu nhiên.
Nhưng trong ứng dụng thực tế, người dùng không muốn nhận một bức ảnh ngẫu nhiên. Họ muốn bảo mô hình vẽ “một phi hành gia cưỡi ngựa trên mặt trăng”, hoặc giữ nguyên dáng người và chỉ đổi trang phục. Làm thế nào để điều khiển quá trình khuếch tán bằng văn bản? Và tại sao các hệ thống hiện đại như Stable Diffusion không khử nhiễu trên từng điểm ảnh pixel mà lại chuyển sang không gian ẩn?
Đó là nội dung của bài tiếp theo: Từ prompt đến ảnh: điều khiển hóa và Latent Diffusion.
Tài liệu tham khảo và đọc thêm
- Ho, Jain & Abbeel (2020), Denoising Diffusion Probabilistic Models, NeurIPS 2020: https://arxiv.org/abs/2006.11239
- Nichol & Dhariwal (2021), Improved Denoising Diffusion Probabilistic Models, ICML 2021: https://arxiv.org/abs/2102.09672
- Song, Sohl-Dickstein, Kingma, Kumar, Ermon & Poole (2021), Score-Based Generative Modeling through Stochastic Differential Equations, ICLR 2021: https://arxiv.org/abs/2011.13456
- Karras, Aittala, Aila & Laine (2022), Elucidating the Design Space of Diffusion-Based Generative Models, NeurIPS 2022: https://arxiv.org/abs/2206.00364
- Peebles & Xie (2023), Scalable Diffusion Models with Transformers (DiT), ICCV 2023: https://arxiv.org/abs/2212.09748