Diffusion model là gì?
date
Jul 17, 2024
slug
blog-diffusion1
status
Published
tags
Blog
summary
Diffusion model là một mô hình tạo sinh với những đột phá trong việc sinh hình ảnh. Là một bước tiến trong ngành Trí tuệ nhân tạo và là nền tảng của các ứng dụng sinh ảnh hiện nay như Stable Diffusion, Dall-E, Midjourney
type
Post
Mô hình tạo sinh (Generate model) hiện nay đang rất được quan tâm không chỉ riêng trong ngành Trí tuệ nhân tạo. Một trong những tiêu biểu của mô hình tạo sinh là mô hình Diffusion, là nền tảng của các công nghệ như Stable Diffusion, Dall-E, hay Midjourney.
Trong bài viết này, tôi sẽ trình bày cách về cơ bản của mô hình Diffusion.
1. Giới thiệu
Trước đây, khi nói đến những mô hình có khả năng tạo sinh trong lĩnh vực thị giác máy tính chúng ta luôn nói về GANs và VAEs. Trong đó, GAN đã cho thấy độ hiểu quả của mình trong nhiều ứng dụng, tuy nhiên, nó lại rất khó để huấn luyện (training) và kết quả cũng chưa thật sự phong phú. VAE, một mô hình có nền tảng lý thuyết rất vững chắc nhưng việc mô hình hóa một hàm mất mát (loss function) tốt lại là một thử thách khiên cho đầu ra của VAE không thực sự tốt.
Các nhà nghiên cứu đã lấy ý tưởng từ hiện tượng vật lý là học tập cách phân rã vào các môi trường nhiễu (Ví dụ: Liquid Diffusion), vì thế mô hình này có tên là Diffusion. Các nhà nghiên cứu sẽ cố gắng xây dựng một mô hình có thể tìm hiểu được sự phân rã thông tin do nhiễu và đảo ngược quy trình gây nhiễu sẽ thu được kết quả mong muốn. Khái niệm này khá tương tự với VAE, tuy nhiên thay vì tìm hiểu cách phân phối dữ liệu, hệ thống này sẽ nhắm đến việc mô hình hóa phân phối nhiễu của môi trường bằng mô hình Markov Chain và giải mã (decodes) dữ liệu bằng việc khử nhiễu (denoising) theo từng cấp nhỏ.
2. Khử nhiễu trong mô hình Diffusion
Ý tưởng về mô hình khử nhiễu đã có từ lâu. Nó có nguồn gốc từ khái niệm Diffusion Maps, một trong những kỹ thuật giảm kích thước được sử dụng trong tài liệu Máy học (machine learning). Nó cũng mượn các khái niệm từ các phương pháp xác suất như Markov Chain đã được sử dụng trong nhiều ứng dụng. Phương pháp khuếch tán khử nhiễu ban đầu được đề xuất trong Sohl-Dickstein et al. [1].
Mô hình khử nhiễu là một quá trình gồm hai bước: quá trình khuếch tán thuận và quá trình ngược lại hoặc tái thiết. Trong quá trình khuếch tán (forward), nhiễu gaussian được đưa vào lần lượt cho đến khi dữ liệu trở thành nhiễu hoàn toàn. Quá trình đảo ngược (backward) sẽ loại bỏ nhiễu bằng cách tìm hiểu mật độ xác suất có điều kiện bằng mô hình mạng nơ-ron. Một ví dụ mô tả quá trình như vậy có thể được minh họa trong Hình 1.
3. Khuếch tán (Forward).
Quá trình khuếch tán hướng về trước có thể được định nghĩa chính thức như một chuỗi Markov. Do đó, không giống như bộ mã hóa trong các mô hình tự mã hóa biến đổi (VAE), nó không yêu cầu đào tạo. Bắt đầu với điểm dữ liệu ban đầu, chúng ta thêm nhiễu Gaussian trong bước liên tiếp và thu được một tập các mẫu nhiễu. Dự đoán mật độ xác suất tại thời điểm chỉ phụ thuộc vào người tiền nhiệm trực tiếp tại thời điểm và do đó, mật độ xác suất có điều kiện có thể được tính như sau:
Phân phối đầy đủ của toàn bộ quá trình sau đó có thể được tính như sau:
Ở đây, giá trị trung bình và phương sai của hàm mật độ phụ thuộc vào một tham số βₜ, là một siêu tham số có giá trị có thể được lấy như một hằng số trong suốt quá trình hoặc có thể thay đổi dần dần theo các bước khuếch tán. Đối với việc gán giá trị tham số khác biệt, có thể có một loạt các hàm có thể được sử dụng để mô hình hóa hành vi (ví dụ: sigmoid, tanh, tuyến tính, v.v.).
Phép dẫn xuất trên là đủ để dự đoán các trạng thái liên tiếp, tuy nhiên, nếu chúng ta muốn lấy mẫu tại bất kỳ khoảng thời gian t nào mà không cần thông qua tất cả các bước trung gian, do đó, cho phép lấy mẫu hiệu quả, thì chúng ta có thể xây dựng phương trình trên bằng cách thay thế siêu tham số αₜ = 1 - βₜ. Công thức của phương trình trên sau đó trở thành:
Để tạo ra các mẫu tại một bước thời gian t với ước tính mật độ xác suất có sẵn tại thời điểm t-1, chúng ta có thể sử dụng một khái niệm khác từ cơ học thống kê gọi là 'động lực Langevin'. Theo 'động lực Langevin', chúng ta có thể lấy mẫu các trạng thái mới của hệ thống chỉ bằng gradient của hàm mật độ trong một Chuỗi Markov không đổi. Quá trình lấy mẫu một điểm dữ liệu mới tại thời điểm t cho một kích thước bước ε dựa trên điểm trước đó tại thời điểm t-1 có thể được tính như sau: