Mô hình khuếch tán (Diffusion Models)
(andrewkchan.dev)- Mô hình khuếch tán học cách thêm nhiễu vào dữ liệu theo từng bước rồi đảo ngược lại, nên không chỉ được dùng để tạo ảnh như Stable Diffusion mà còn áp dụng cho video, 3D, cấu trúc protein và quỹ đạo robot
- DDPM biến ảnh sạch (x_0) thành nhiễu gần với (x_T) qua nhiều timestep, rồi huấn luyện mô hình bằng hàm mất mát L2 để dự đoán hướng nhiễu ở mỗi bước
- Quá trình ngược có thể được xử lý gần đúng bằng phân phối Gaussian ở các bước nhiễu nhỏ; Ho 2020 cố định phương sai để ổn định huấn luyện và đơn giản hóa việc dự đoán trung bình thành dự đoán nhiễu
- Tốc độ sinh có thể giảm từ tối đa 1000 bước lấy mẫu của DDPM xuống khoảng 10 bước của sampler dựa trên ODE, thậm chí tới sinh một bước duy nhất với progressive distillation và adversarial distillation
- Phạm vi ứng dụng thực tế của mô hình khuếch tán đã mở rộng, nhưng suy giảm chất lượng do distillation quá mức, giới hạn trong điều khiển theo điều kiện, cùng các vấn đề về đạo đức và nguồn gốc dữ liệu vẫn là những ràng buộc dai dẳng
Vị trí của mô hình khuếch tán trong mô hình sinh
- Bài toán cơ bản của mô hình sinh là: khi có một tập mẫu được lấy từ phân phối chưa biết (p(x)), ta cần tạo ra mẫu mới từ cùng phân phối đó
- GAN tiếp cận bằng trò chơi giữa bộ sinh và bộ phân biệt, có thể tổng hợp ảnh ấn tượng, nhưng khó huấn luyện, không mô hình hóa tường minh (p(x)), và có thể gặp mode collapse
- Normalizing flow học một ánh xạ tất định và khả nghịch giữa mẫu dữ liệu và Gaussian chuẩn đơn vị
- Glow của OpenAI năm 2018 tạo ra ảnh khuôn mặt với latent space có ý nghĩa
- flow yêu cầu mỗi lớp phải khả nghịch và phải tính nhanh định thức Jacobian; trong khi việc tính định thức của Jacobian (N \times N) bất kỳ có độ phức tạp (O(N^3)), nên bị ràng buộc lớn
- Thay vì ánh xạ tất định, mô hình khuếch tán thực hiện nhiều bước ánh xạ xác suất bằng cách trộn dần nhiễu ngẫu nhiên vào dữ liệu, rồi học mô hình để đảo ngược quá trình đó
Ý tưởng cơ bản của Denoising Diffusion
- Nếu thêm nhiễu nhỏ nhiều lần vào một điểm dữ liệu sạch, cuối cùng nó sẽ trở thành trạng thái gần như nhiễu thuần
- Chỉ cần nhìn điểm dữ liệu đã bị thêm nhiễu ở một thời điểm, ta cũng có thể ước lượng phần nào nó đã đi từ hướng nào ở bước trước
- Nếu thêm đủ nhiều nhiễu, xác suất để một điểm (y) trong target space đến từ (x) trong không gian gốc có thể tiến gần tùy ý tới (p(x))
- Khi học được quá trình ngược nhiều bước, ta có thể lấy mẫu từ (p(x))
- Huấn luyện được thực hiện bằng cách thêm nhiễu ngẫu nhiên vào từng điểm dữ liệu, để mô hình dự đoán nhiễu đó, rồi tối thiểu hóa L2 loss giữa nhiễu dự đoán và hướng nhiễu thực bằng gradient descent
- Quy trình lấy mẫu cơ bản diễn ra như sau
- Bắt đầu từ một ảnh nhiễu thuần
- Dự đoán nhiễu trong ảnh rồi trừ đi theo một tỷ lệ đã định
- Lặp lại 10~1000 lần tùy sampler để thu được ảnh không nhiễu
DDPM: điểm khởi đầu toán học của mô hình khuếch tán
- DDPM (Denoising Diffusion Probabilistic Models) là cách tiếp cận đã trở thành nền tảng ngôn ngữ và toán học cho sự phát triển sau này của các mô hình khuếch tán
- Ảnh đầu vào (x_0) liên tục được trộn thêm nhiễu ngẫu nhiên nhỏ trong các timestep (t=1,2,\dots,T), dịch chuyển tới một điểm của phân phối chuẩn đơn vị
- Bước khuếch tán thuận tạo (x_t) bằng cách trộn nhiễu (\epsilon \sim \mathcal{N}(0,I)) vào ảnh trước đó (x_{t-1})
- (\alpha_t) nhỏ hơn 1 nhưng gần 1
- Được thiết lập sao cho (\prod_{t=1}^T \alpha_t \approx 0)
- Hạng căn bậc hai giúp phương sai được giữ nguyên sau mỗi bước
- Mỗi bước chỉ phụ thuộc vào timestep ngay trước đó, và nhiễu được trộn là độc lập với nhiễu trước, nên có thể biểu diễn trực tiếp (x_t) bằng (x_0) và một vector nhiễu Gaussian duy nhất
- Tính chất này được dùng để suy ra quá trình ngược và mục tiêu huấn luyện dự đoán nhiễu
Quá trình ngược và huấn luyện dự đoán nhiễu
- Nếu biết ảnh nhiễu (x_t) và ảnh gốc (x_0), phân phối của phiên bản ít nhiễu hơn ở bước trước (x_{t-1}) có dạng đóng Gaussian
- Tại thời điểm sinh, vì không biết ảnh gốc (x_0), ta cần trực tiếp dùng (q(x_{t-1} \mid x_t)), nhưng không thể dùng toàn bộ tập dữ liệu ở thời điểm sinh
- Tập dữ liệu có thể gồm hàng chục tỷ ảnh
- Nếu làm như vậy ở mọi timestep, kết quả sẽ là khôi phục mẫu huấn luyện thay vì tạo mẫu mới
- (q(x_{t-1} \mid x_t)) xấp xỉ Gaussian ở các bước nhiễu rất nhỏ, đây là một kết quả lâu đời của vật lý thống kê
- Mô hình ước lượng các tham số Gaussian (\mu_\theta, \Sigma_\theta) và giảm KL divergence với phân phối đã biết (q(x_{t-1} \mid x_t, x_0)) của từng ví dụ huấn luyện
- Ho 2020 cố định (\Sigma_\theta) bằng (\Sigma(t))
- Nếu cố học phương sai thì quá trình huấn luyện trở nên quá bất ổn
- Trên thực tế chỉ học trung bình (\mu_\theta)
- Bài toán dự đoán trung bình được chuyển thành bài toán dự đoán nhiễu bằng cách tận dụng việc (x_t) có thể được biểu diễn như hỗn hợp của (x_0) và nhiễu Gaussian (\epsilon)
- Hàm mất mát đơn giản cuối cùng (L_\text{simple}) tối thiểu hóa sai số bình phương giữa nhiễu thực (\epsilon) và dự đoán của mô hình (\epsilon_\theta)
- Bỏ qua weighting lại cho chất lượng kết quả tốt hơn
- Có thể xem đây là cách giảm trọng số của các hạng loss ở (t) thấp, để mạng tập trung vào bài toán khó hơn là khử nhiễu cho những ảnh có nhiều nhiễu
Lấy mẫu DDPM và ví dụ 2D
- Khi đã có mô hình ước lượng nhiễu được huấn luyện (\epsilon_\theta(x_t,t)), ta có thể lấy mẫu quá trình ngược
- Lấy mẫu một ảnh nhiễu ngẫu nhiên (x_T \sim \mathcal{N}(0,I))
- Chạy ngược timestep từ (T) về 1 để dự đoán nhiễu
- Lấy mẫu (x_{t-1}) từ trung bình và phương sai đã dự đoán
- Luồng của DDPM như sau
- Cố gắng học phân phối nền của tập dữ liệu ảnh
- Dùng quá trình thêm nhiễu thuận để biến dần (x_0) thành (x_T)
- Quá trình ngược có thể được xử lý như gần Gaussian khi (T) đủ lớn
- Nếu giả định (x_0) là một ảnh cụ thể trong tập dữ liệu, ta có thể tính chính xác phân phối đã biết
- Huấn luyện để tiến gần phân phối đã biết này trên mọi ảnh huấn luyện bằng KL divergence
- Quá trình này tối ưu hóa một lower bound của khả năng tái sinh lại tập dữ liệu
- Ví dụ với tập dữ liệu Datasaurus gồm 142 điểm cho thấy việc học một phân phối 2D
- Một MLP dùng 3 hidden layer, hidden size 64 và ReLU có hơn 12.000 tham số
- Nếu không đưa thông tin timestep vào, sẽ không thu được phân phối hình khủng long mong muốn
- Khi chuẩn hóa timestep (t=0,\dots,50) về khoảng 0~1 rồi đưa vào làm đầu vào, kết quả tốt hơn
- Nếu biến đổi đầu vào sang không gian random frequency feature bằng Fourier encoding, mô hình học được phân phối tốt hơn
- Điều chỉnh noising schedule cũng rất quan trọng với hiệu năng
- Cách của Ho 2020 giảm tuyến tính (\alpha_t) và đặt sao cho (\bar\alpha_T \approx 0), phù hợp với ảnh độ phân giải cao
- Dữ liệu ít chiều đã trông như nhiễu ngay từ giữa quá trình, nên nếu điều chỉnh schedule để học từ nhiều ví dụ high-signal hơn thì hiệu năng được cải thiện
- Schedule gốc của ví dụ có (\bar\alpha_T \approx 0.28), chưa đi tới nhiễu thuần; schedule mới kết thúc ở giá trị trung gian 0.6 của schedule cũ
Những tiến bộ giúp tăng tốc độ sinh
-
Score matching và sampler dựa trên ODE
- Nhược điểm ban đầu của mô hình khuếch tán là tốc độ sinh chậm do giả định phân phối ngược Gaussian của DDPM
- Hướng nhiễu mà mô hình dự đoán từ noisy input (x_t), nếu bỏ qua hằng số theo timestep, chính là gradient log-likelihood để quá trình forward tạo ra (x_t), tức score
- Có thể xem score là một vector field cho biết hướng cần di chuyển về phía mode của phân phối
- Noise-conditioning score network học score của tập dữ liệu được thêm nhiễu dần dần, rồi tạo mẫu mới bằng cách đi theo score field
- Quá trình forward diffusion có thể được mô tả bằng stochastic differential equation (SDE)
- Cũng tồn tại một ODE mô tả quá trình xác định có cùng phân phối theo từng timestep, và ODE này có dạng khép kín bao gồm score function
- Nhờ vậy, ngay cả với mô hình diffusion đã tiền huấn luyện cũng có thể lấy mẫu hoàn toàn xác định, đồng thời có thể dùng bộ giải ODE phổ dụng cho việc lấy mẫu
- DDPM có thể cần tới 1000 bước để cho ra kết quả chất lượng cao trong Stable Diffusion
- Sampler dựa trên Euler method có thể tạo ra kết quả chất lượng cao chỉ với khoảng 10 bước
- Karras 2022 bàn về tradeoff của sampler và việc tính ngẫu nhiên của các stochastic sampler như DDPM có thể quan trọng trong một số trường hợp
-
Distillation
- Progressive distillation dùng teacher đã tiền huấn luyện lấy mẫu trong 1000 bước để huấn luyện student dự đoán đầu ra 2 bước của teacher chỉ trong 1 bước
- Lặp lại quá trình này và dùng student làm teacher mới thì số bước có thể giảm một nửa sau mỗi lần
- Progressive distillation có mất mát, và nếu áp dụng quá nhiều thì mẫu có thể bị mờ hoặc thiếu thực tế
- Adversarial distillation huấn luyện thêm discriminator để tăng tính chân thực của mẫu từ student, nhưng như trong GAN, có tradeoff với sample diversity
- Stable Diffusion XL Turbo được huấn luyện theo cách này nên có thể tạo ảnh chất lượng cao chỉ trong một bước duy nhất
Sinh có điều kiện và Guidance
-
Mô hình khuếch tán có điều kiện
- Nếu muốn chỉ tạo mèo từ một mô hình được huấn luyện bằng ảnh động vật, cần mô hình hóa phân phối có điều kiện (p(x \mid y))
- Nếu huấn luyện diffusion model (\epsilon_\theta(x_t,t,y)) bằng các cặp ((x_0,y)) trong tập dữ liệu, có thể dùng thông tin điều kiện như class label, text embedding, segmentation mask
- Ho 2021 đã huấn luyện mô hình khuếch tán có điều kiện theo lớp trên ImageNet
- Nếu không có đủ mẫu (p(x \mid y)) cho một (y) cụ thể, label có thể dẫn đến các mẫu thiếu thực tế hoặc độ đa dạng thấp
- Vì vậy cần guidance để điều chỉnh mức độ mô hình bám theo label trong lúc sinh
-
Classifier guidance
- Nếu classifier xuất ra (p_\phi(y \mid x_0)), có thể dùng gradient theo đầu vào để đẩy ảnh về phía class mong muốn (y)
- Ở mỗi bước lấy mẫu, nếu cộng gradient của classifier vào estimated mean, quá trình diffusion có thể đưa ảnh vào vùng image space trông hợp lý
- Classifier được huấn luyện bằng noisy image để có thể xử lý noisy image (x_t)
- Trong ví dụ class “T-shirt” của Fashion-MNIST, ngay cả classifier có độ chính xác 40% cũng có thể tạo classifier-guided sample
- Tham số guidance
cgdùng để scale gradient của classifier - Guidance mạnh hơn sẽ làm nổi bật đặc trưng của class hơn nhưng có thể làm giảm realism
-
Classifier-free guidance
- Classifier-free guidance thực hiện guidance mà không cần classifier riêng
- Khi áp dụng Bayes rule, gradient theo class trở thành hiệu giữa score có điều kiện và score của toàn bộ dữ liệu
- Denoising diffusion model học score của dữ liệu huấn luyện, nên một diffusion model được huấn luyện theo hai cách trên cùng một mẫu
- Huấn luyện cùng với class label (y)
- Huấn luyện cùng với null class label
- Khi lấy mẫu, thực hiện cả lời gọi với class label mong muốn và lời gọi không có label, rồi dùng hiệu của chúng làm guidance vector
Điều kiện hóa và điều khiển hình ảnh
-
Image-to-image và SDEdit
- Image-to-image cơ bản có thể thực hiện mà không cần huấn luyện lại mô hình
- Thêm nhiễu vào ảnh đầu vào theo conditioning strength mong muốn rồi khử nhiễu
- Muốn conditioning mạnh hơn thì thêm ít nhiễu hơn
- Muốn conditioning yếu hơn thì thêm nhiều nhiễu hơn
- Cách này là SDEdit, và tạo ra kết quả có hình dạng tổng thể giống với ảnh đầu vào
- Nhược điểm là không thể chỉ định chi tiết ảnh đầu vào sẽ kiểm soát điều gì
- Nếu có sketch đầu vào, sẽ xuất hiện tradeoff giữa việc kết quả trông giống sketch và việc không bám đủ sát hình dạng đã chỉ định
-
Sketch-Guided Diffusion và ControlNet
- Để điều kiện hóa quá trình sinh bằng ảnh sketch (y), có thể huấn luyện một mô hình dự đoán các nét sketch (\hat{y}=F(x_t)) từ noisy image (x_t), rồi dùng sketch loss gradient để guide từng bước sampling
- Đây là ý tưởng của Sketch-Guided Diffusion
- Một cách khác là thay đổi architecture để denoiser nhận conditioning image (y), rồi fine-tuning bằng các cặp ((x_0,y))
- Fine-tuning đơn thuần có thể gây ra các vấn đề overfitting và catastrophic forgetting
- ControlNet tạo một bản sao để bảo toàn weight của mô hình gốc, giữ nguyên mô hình gốc ở trạng thái freeze và chỉ huấn luyện control-net cùng các tham số 1x1 convolution
- convolution ban đầu được khởi tạo bằng zero để dần dần học delta cho bước denoising
- Trong ControlNet thực tế, cách này được áp dụng ở mức per-block chứ không phải ở mức toàn bộ denoising model
- Theo human evaluation, nó cho hiệu năng tốt hơn các phương án thay thế như Sketch-Guided Diffusion
- Có thể kết hợp với LoRA để huấn luyện ControlNet hiệu quả trên GPU phổ thông
-
Inpainting
- Inpainting là tác vụ điền vào phần bị mask của ảnh
- Cách image-to-image đơn giản chỉ thêm nhiễu vào phần bị mask sẽ không hoạt động
- Ở (t>0), denoising model không biết phải xử lý phần không có nhiễu như thế nào
- Cách hoạt động được là thêm nhiễu vào cả phần masked lẫn unmasked rồi đưa vào dưới dạng (x_T)
- Sau đó ở mỗi bước sampling (t), sao chép phần unmasked của ảnh gốc, thêm nhiễu tương ứng với timestep (t), rồi đặt phần này lên trên (x_t) để dùng làm đầu vào cho denoiser
-
Text-to-image
- Text-to-image là conditional generation sử dụng text embedding label
- Dall-E của OpenAI huấn luyện mô hình encoding CLIP để chiếu hình ảnh và văn bản vào cùng một không gian
- Không nhất thiết phải có multimodal embedding space
- Google Imagen mã hóa văn bản thành embedding bằng large language model T5
- Nếu embedding là biểu diễn đủ phong phú thì có thể dùng làm điều kiện cho text-to-image
Dữ liệu huấn luyện và đạo đức
- Dataset của các mô hình sinh ảnh không phải là vấn đề chỉ riêng của diffusion model, nhưng là một yếu tố quan trọng trong thảo luận về mô hình sinh
- Ví dụ về dataset như sau
- Dall-E 1 được huấn luyện với 250 triệu cặp text-image, Dall-E 2 được huấn luyện với 650 triệu cặp, và dataset là closed source
- Stable Diffusion 1 được huấn luyện trên 2 tỷ cặp của LAION-2B-en, sau đó được fine-tuning bằng 170 triệu cặp từ LAION-5B
- Sau đó các checkpoint Stable Diffusion 1 được fine-tuning trên một tập con của LAION-5B được chọn theo tiêu chí “aesthetics”
- LAION-400M được công bố vào tháng 8/2021 và là một nỗ lực tái hiện quy trình mà OpenAI đã dùng để huấn luyện CLIP
- LAION có nguồn gốc từ Common Crawl, thu thập các thẻ image HTML có alt-text và dùng CLIP để loại bỏ những mục không khớp với nội dung
- Một số người dùng đã tạo danh sách artist xuất hiện trong LAION, và haveibeentrained.com cho phép người dùng kiểm tra xem hình ảnh của họ có nằm trong LAION hay các dataset khác hay không
- Một yếu tố lớn của làn sóng phản đối AI art là vấn đề đạo đức khi các dataset như LAION thu thập tác phẩm nghệ thuật mà không có sự đồng ý của artist và dùng chúng để huấn luyện mô hình sinh ảnh
- Cùng với đó là lo ngại rằng các mô hình hình ảnh có thể là mối đe dọa trực tiếp tới sinh kế của artist
- Cũng có những nỗ lực nhằm huấn luyện các mô hình sinh ảnh cạnh tranh hơn theo cách có đạo đức hơn
- Adobe Firefly được cho là chỉ được huấn luyện bằng licensed content như Adobe Stock và public domain content đã hết thời hạn bản quyền
- Gần đây đã có scandal rằng Firefly được huấn luyện một phần trên ảnh Midjourney
- Stable Diffusion 3 cho phép artist opt-out khỏi việc sử dụng cho huấn luyện, và kết quả là hơn 80 triệu hình ảnh đã bị loại bỏ
Data poisoning
- Nightshade là một cuộc tấn công data poisoning nhắm vào mô hình sinh ảnh, nổi bật trong làn sóng phản đối AI art
- Mô hình được huấn luyện trên hàng tỷ hình ảnh, nhưng với một số concept cụ thể thì có thể chỉ có vài chục hình ảnh
- Nightshade là cách tiếp cận nhằm poison dữ liệu theo từng concept cụ thể
- Các tác giả bài báo cho thấy họ có thể tấn công Stable Diffusion XL bằng 50 hình ảnh đã chỉnh sửa, khiến mô hình xuất ra bò mỗi khi prompt nhắc tới “car”
- Các chỉnh sửa được thiết kế để ít bị mắt người nhận ra nhất có thể bằng cách tối ưu một hàm đa mục tiêu có bao gồm perceptual loss
- Cuộc tấn công ban đầu cần quyền truy cập vào feature extractor của mô hình
- Các tác giả đã khảo sát cách một cuộc tấn công dựa trên một trong 4 mô hình hoạt động trên các mô hình khác, và cho biết cuộc tấn công có thể tổng quát hóa sang cả những mô hình ngoài mô hình ban đầu
Sinh ảnh độ phân giải cao
- Cascaded Diffusion là cách tiếp cận ban đầu, trong đó quá trình sinh ban đầu được thực hiện ở độ phân giải thấp rồi ảnh được upscale bằng nhiều diffusion model super-resolution
- Stable Diffusion sử dụng latent diffusion
- Sinh ảnh bằng diffusion trong latent space của auto-encoder
- Sau đó giải mã latent để thu được ảnh độ phân giải cao
- Các tác giả của latent diffusion cho rằng, thay vì huấn luyện auto-encoder và diffusion model cùng nhau, cách hoạt động tốt nhất là trước tiên huấn luyện auto-encoder để nén dữ liệu ảnh, rồi huấn luyện riêng diffusion model trên các latent đã được mã hóa
- Cascaded Diffusion và latent diffusion đều mở rộng ảnh sinh ra bằng cách gắn thêm nhiều mô hình khác vào backbone diffusion model
- Sự tiến bộ về độ phân giải của single-model dựa trên nhiều training trick như multi-scale loss và việc sử dụng backbone architecture như transformer
Ứng dụng của mô hình khuếch tán ngoài hình ảnh
-
Âm thanh, video, 3D
- Riffusion là mô hình tạo nhạc đời đầu, được fine-tuning từ Stable Diffusion để xuất ra spectrogram image và tạo bài hát dài 12 giây
- Sonauto là mô hình điều khiển được mới hơn dựa trên diffusion transformer, có thể tạo bài hát dài 1 phút 35 giây với lời bài hát mạch lạc
- OpenAI Sora và Google Veo là các mô hình tạo video bằng diffusion transformer có thể tạo video clip 1080p dài 1 phút từ text prompt
- Sora phân rã video thành các spacetime patch và được huấn luyện để denoise các patch đó
- Insight cốt lõi trong technical report của Sora là diffusion transformer có thể scale cho video generation, và hiệu năng cũng scale cùng compute
- OpenAI không làm rõ ở đây compute là dataset size, model size hay training time
- Cả hai mô hình đều hỗ trợ masked editing, tạo video loop hoàn chỉnh, animation từ ảnh tĩnh, và mở rộng video theo thời gian về phía trước lẫn phía sau
- Trong các nghiên cứu video diffusion trước đây có Imagen Video, và các autoregressive model như VideoPoet cũng là một lựa chọn thay thế
- Mô hình khuếch tán 2D ngầm học được các đặc trưng 3D như correspondence
- DreamFusion dùng mô hình khuếch tán text-to-image làm prior để dẫn dắt thuật toán tái tạo 3D dựa trên gradient descent
- Stable Video 3D cải thiện multi-view consistency bằng video diffusion
- Các mô hình này vẫn phụ thuộc vào các thuật toán tái tạo 3D như photogrammetry, 3D gaussian splatting và neural radiance field
- Một lý do có thể là dữ liệu 3D tương đối khan hiếm
-
Khoa học sự sống
- Mô hình khuếch tán đang tìm thấy nhiều ứng dụng trong medicine và biology
- Chụp CT và MRI một phần có thể giảm đáng kể mức phơi nhiễm radiation của bệnh nhân và tăng sự thoải mái, nhưng khó vì phải tái tạo full scan từ dữ liệu một phần
- Mô hình khuếch tán mang lại hiệu năng và khả năng generalization vượt trội hơn các phương pháp supervised trong tái tạo ảnh y khoa, qua đó đẩy xa state-of-the-art
- AlphaFold 3 của DeepMind sử dụng kiến trúc dựa trên diffusion và cho thấy cải thiện đáng kể so với phiên bản trước cũng như các công cụ chuyên biệt
- Khi được cung cấp danh sách molecule đầu vào, AlphaFold 3 bắt đầu từ một atom cloud rồi tinh chỉnh lặp đi lặp lại để tạo ra cấu trúc 3D chung
- Điều này cho thấy các molecule khớp với nhau như thế nào
- Các ứng dụng khác trong computational biology gồm phân tích dữ liệu single-cell, thiết kế thuốc và small molecule, cùng tương tác protein-ligand
-
Robotics
- Robot tương tác với thế giới thực phải thực hiện được phạm vi hành vi vật lý rất rộng
- Cách tiếp cận truyền thống là lập trình tường minh vô số edge case và phương pháp recovery cho các tác vụ như mở cửa hay buộc dây giày
- Cách này hoạt động trong các môi trường được kiểm soát như factory nhưng không scale
- Policy learning from demonstration là cách tiếp cận có khả năng mở rộng hơn, dùng human demonstration để dạy robot thực hiện tác vụ
- Thông thường con người cung cấp demonstration bằng cách điều khiển robot motor qua teleoperation
- Có thể cần từ vài chục đến vài trăm demonstration
- Sau đó robot học cách tạo action dựa trên sensor observation và trong một số trường hợp là natural language prompt làm điều kiện
- Mô hình khuếch tán hiện là state-of-the-art trong các mô hình sinh policy, cho thấy cải thiện đáng kể so với các kỹ thuật trước đây
- Chúng xử lý tự nhiên phân phối action đa phương thức
- Phù hợp với không gian action có số chiều cao
- Training stability rất ấn tượng
1 bình luận
Ý kiến trên Hacker News
Nói cách khác, ngay cả khi OpenAI huấn luyện trên 250 triệu ảnh, họ cũng chưa có một lý thuyết thật sự xuất sắc để giải thích vì sao lại mô hình hóa phân phối nền, nên đó là một lựa chọn khá táo bạo
Thực ra bài báo Dickstein 2015 [1] ban đầu đã chính thức hóa diffusion như một cách tối đa hóa cận dưới của log-likelihood cho việc sinh phân phối, nên không phải là hoàn toàn không có lý thuyết
Tuy nhiên tôi hiểu rằng bước đột phá là các kết quả thực nghiệm của Ho [2] và Nichol [3]. Vì chúng cho thấy diffusion không chỉ có thể tạo ra mẫu chất lượng cao, mà trong một số trường hợp còn tốt hơn GAN
[1] https://arxiv.org/abs/1503.03585
[2] https://arxiv.org/abs/2006.11239
[3] https://arxiv.org/abs/2105.05233
HuggingFace Diffusers dùng giấy phép Apache và hỗ trợ Diffusion Transformers: https://huggingface.co/docs/diffusers/en/api/pipelines/dit
Ngoài HuggingFace còn có kho DDPT: https://github.com/lucidrains/denoising-diffusion-pytorch/
Cũng tìm thấy mấy cái này:
https://paperswithcode.com/paper/scalable-diffusion-models-w...
https://github.com/mindspore-lab/mindone/tree/master/example...
Trông giống cùng vấn đề với phần “nếu chưa thấy đủ mẫu p(x∣y)p(x∣y) cho một yy cụ thể, nhãn có thể tạo ra mẫu phi thực tế hoặc thiếu đa dạng. Vì vậy khi sinh, ta muốn điều chỉnh mức độ mô hình ‘tuân theo’ nhãn”
Tuy vậy, đúng là nếu đặt guidance quá mạnh thì sẽ phát sinh vấn đề tương tự là giảm tính chân thực
Dù vậy tôi vẫn mong tác giả tiếp tục vẽ. Càng thấy AI lấn vào công việc sáng tạo, tôi lại càng muốn phá bỏ tất cả
Tôi cố lấy output của các công cụ này rồi tự tái hiện hoặc vẽ theo
Giờ là lúc tự code một cái bằng một ngôn ngữ tương đối không phù hợp. Cũng không có nhiều thứ để tóm tắt cho những ai chỉ lướt bình luận. Bản thân bài này đã là bản tóm tắt của Stable Diffusion rồi
Không rõ bạn đang nói công thức nào, nhưng theo tôi hiểu thì mạng không trực tiếp “nhìn thấy” ảnh đáp án. Thay vào đó, nó phải được huấn luyện để suy luận thông tin gián tiếp thông qua hàm mất mát
Hàm mất mát chứa thông tin về nhiễu, và vì mạng nhìn chính xác ảnh đã trộn nhiễu, nên điều đó tương đương với việc học từ ảnh mẫu thật. Cũng có thể thiết kế hàm mất mát đo chênh lệch giữa output và ảnh thật, lượng thông tin là tương đương, nhưng nhờ tính chất của nhiễu Gaussian, người ta biết rằng phía dự đoán nhiễu thuận lợi hơn nhiều cho ước lượng gradient. Điểm cốt lõi là thông tin ảnh thật vẫn nằm trong vòng lặp, nhưng chỉ đi vào qua lăng kính của một loại nhiễu nào đó
Đúng. Nó phải giống công thức ngay trước đó
xts = alpha_bar[t].sqrt() * x0s + (1.-alpha_bar[t]).sqrt() * epsHơn nữa code cũng không nhất quán. Code sampling dùng time embedding, còn code huấn luyện thì không dùng
Tuy nhiên khi bật Reader View thì hơi tiếc. Nó như thể đang cố chứng minh “trang này hoàn hảo về mặt ngữ nghĩa!!”, nhưng trong môi trường đó, line-height của danh sách điều hướng nhỏ hơn 1 nên bị dính chùm nghiêm trọng. Dù sao cũng cho qua ;)