
Mô hình Tự mã hóa Biến phân (VAEs) được giải thích: Từ lý thuyết đến ELBO và Kỹ thuật Tái tham số hóa
Hướng dẫn rõ ràng, ưu tiên toán học về cách VAE học cách tạo dữ liệu mới Bài viết Variational Autoencoders (VAEs) Explained: From Theory to ELBO and the Reparameterization Trick xuất hiện lần đầu trên Towards Data Science.
Học sâu
**Giải thích về Bộ tự mã hóa biến phân (VAE): Từ lý thuyết đến ELBO và Kỹ thuật tái tham số hóa**
Hướng dẫn rõ ràng, ưu tiên toán học về cách VAE học cách tạo dữ liệu mới
Slava Efimov
Ngày 10/8/2026
11 phút đọc
**Giới thiệu**
Các bộ tự mã hóa (Autoencoder) đã là một đổi mới đáng kinh ngạc. Khả năng nén dữ liệu trong phần thắt cổ chai (bottleneck) cho phép chúng giải quyết các tác vụ tiếp theo hiệu quả hơn so với cách thông thường, tránh được lượng tính toán quá mức cần thiết để xử lý dữ liệu đầu vào có chiều cao.
Ngoài ra, chúng ta đã thấy trong bài viết về các bộ tự mã hóa rằng chúng có thể được sử dụng để giải quyết các tác vụ thị giác máy tính khác, như khử nhiễu ảnh, loại bỏ đối tượng hoặc điền vào ảnh (image inpainting).
Bạn chưa quen thuộc với các bộ tự mã hóa? Tôi đã làm một video hướng dẫn về chúng:
Mặc dù các bộ tự mã hóa thông thường (vanilla autoencoder) có vẻ mạnh mẽ, nhưng chúng vẫn có một số hạn chế có thể được cải thiện. Với nhận định đó, các nhà nghiên cứu đã phát triển một phiên bản tiên tiến hơn gọi là bộ tự mã hóa biến phân (variational autoencoder). Chúng ta sẽ nghiên cứu chúng trong bài viết này.
**Động lực**
Trong bài viết trước, chúng ta chủ yếu thảo luận về nén dữ liệu như là ứng dụng chính của các bộ tự mã hóa. Trên thực tế, có những khía cạnh thú vị khác mà chúng ta có thể xem xét.
**Sự tương đồng**
Nếu bạn tiến hành các thí nghiệm và cố gắng tính toán khoảng cách giữa các đối tượng trong không gian tiềm ẩn (latent space), bạn sẽ thấy rằng, trong nhiều trường hợp, các thuộc tính tương đồng giữa các đối tượng không được bảo toàn ở mức độ tương tự như trong các thuật toán nhúng phổ biến khác. Điều này xảy ra vì trong quá trình huấn luyện, mô hình chủ yếu tập trung vào việc tái tạo các hình ảnh gốc hơn là vào các biểu diễn nội bộ trong không gian tiềm ẩn.
Ví dụ, nếu bạn lấy hai hình ảnh tương tự và đưa chúng vào một bộ tự mã hóa đã được huấn luyện, chúng có thể sẽ ít gần nhau hơn trong không gian tiềm ẩn so với các thuật toán khác. Điều tương tự cũng xảy ra với các đối tượng không giống nhau, chúng có thể gần nhau. Kết quả là, việc bảo toàn sự tương đồng là một điểm yếu của các bộ tự mã hóa thông thường.
Sơ đồ minh họa một kịch bản tốt trong đó sự tương đồng giữa các đối tượng được bảo toàn trong không gian tiềm ẩn. Đáng tiếc, các bộ tự mã hóa thông thường không thể bảo toàn điều này.
**Tạo ảnh**
Bộ giải mã (Decoder) rất giỏi trong việc tái tạo các hình ảnh gốc. Do đó, một câu hỏi đã thu hút sự chú ý của nhiều nhà nghiên cứu là liệu, với kiến trúc bộ tự mã hóa, có thể tạo ra các hình ảnh mới chất lượng cao hay không.
Vì bộ giải mã tạo ra hình ảnh từ không gian tiềm ẩn, một cách tự nhiên để tạo ra hình ảnh mới là lấy mẫu các điểm mới từ không gian tiềm ẩn và đưa chúng làm đầu vào cho bộ giải mã. Đáng tiếc, chất lượng của các hình ảnh được tạo ra thường kém.
Ngay cả khi có một đối tượng được mã hóa trong không gian tiềm ẩn và một điểm mới được lấy mẫu trong vùng lân cận của nó, có vẻ hợp lý rằng một hình ảnh được tạo ra từ điểm đó sẽ trông rất giống với bản gốc. Nhưng một lần nữa, điều này không phải lúc nào cũng đúng.
Một kịch bản tương tự sẽ xảy ra nếu bạn lấy một điểm nằm giữa hai đối tượng được nhúng trong không gian tiềm ẩn. Chẳng hạn, hãy tưởng tượng rằng đối tượng A là hình ảnh một người đang cười, trong khi đối tượng B là hình ảnh một người với vẻ mặt thất vọng. Nếu chúng ta lấy mẫu một điểm C nằm giữa hai điểm đó, trong trường hợp lý tưởng, chúng ta sẽ mong đợi bộ giải mã tạo ra hình ảnh một người với biểu cảm khuôn mặt trung tính. Một bộ tự mã hóa có thể sẽ không làm được điều này.
Một bộ mã hóa tự động (autoencoder) thông thường thường không thể nội suy hình ảnh trong không gian tiềm ẩn (latent space).
Với tất cả những điều đó, động lực chính cho một phiên bản autoencoder mới liên quan đến cách không gian tiềm ẩn được xây dựng. Chúng ta muốn không gian tiềm ẩn bảo toàn các thuộc tính tương đồng giữa các đối tượng được nhúng. Điều này sẽ cho phép thực hiện các thủ thuật hình học với khoảng cách đối tượng và lấy mẫu các điểm mới trong không gian để tạo ra các hình ảnh mới.
**Phương pháp luận**
Hãy giới thiệu ký hiệu hình thức để giúp chúng ta rút ra các kết quả toán học.
Chúng ta đã có hai không gian riêng biệt:
Không gian thực, nơi phân phối dữ liệu p(x) chứa các hình ảnh thực.
Không gian tiềm ẩn, chứa tất cả các vectơ tiềm ẩn có thể.
Hai không gian này tách biệt, và chúng ta sẽ cần các hàm để kết nối hình ảnh từ cả hai không gian. Để đạt được điều đó, chúng ta sẽ giới thiệu hai phân phối:
Phân phối hậu nghiệm (posterior distribution) p(z | x) trả về xác suất một vectơ tiềm ẩn z được tạo ra từ hình ảnh x.
Phân phối khả năng (likelihood distribution) p(x | z) mà, với một vectơ z, tái tạo một hình ảnh x từ nó.
Ý tưởng tổng thể rất đơn giản: nếu chúng ta có thể lấy mẫu các vectơ z từ phân phối hậu nghiệm p(z | x), chúng ta có thể sử dụng chúng để tái tạo và tạo ra các hình ảnh thực tế từ phân phối gốc bằng cách sử dụng bộ giải mã (decoder) (hoặc phân phối khả năng) p(x | z).
Vấn đề là chúng ta không biết dạng của phân phối hậu nghiệm p(z | x). Nói cách khác, nó không thể tính toán được (intractable), vì vậy chúng ta không thể tính toán hoặc lấy mẫu trực tiếp từ nó.
**Ý tưởng xấp xỉ**
Để giải quyết vấn đề trên, VAE giả định rằng phân phối tiềm ẩn là phân phối chuẩn (normal distribution), N(0, 1). Điều này cho phép ước tính p(x | z).
Ngoài ra, VAE đề xuất xấp xỉ phân phối hậu nghiệm p(z | x) bằng một phân phối chuẩn q(z | x) = N(μ, σ) với các tham số μ và σ được học, sử dụng một bộ mã hóa (encoder).
Để huấn luyện toàn bộ mô hình, chúng ta sẽ cần định nghĩa một hàm mất mát (loss function). Để làm điều đó, chúng ta sẽ sử dụng ước tính ELBO.
**Mục tiêu huấn luyện**
Đầu tiên, chúng ta đặt mục tiêu là tối đa hóa log-likelihood của p(x). Tại sao?
Giả sử xi là một hình ảnh ngẫu nhiên từ tập dữ liệu huấn luyện. Khi đó, chúng ta đang cố gắng tối đa hóa biểu thức sau:
log p(x1) + log p(x2) + … + log p(xn)
Nếu một mô hình học cách gán xác suất cao cho xi, cho thấy chúng là những hình ảnh thực tế, thì nó sẽ tự động học được dữ liệu thực trông như thế nào. Đây là mục tiêu huấn luyện hợp lý nhất mà chúng ta có thể sử dụng. Do đó, việc tối đa hóa log-likelihood sẽ khiến các hình ảnh không thực tế nằm ngoài tập dữ liệu huấn luyện có xác suất thấp hơn.
Với điều đó, mục tiêu của chúng ta bây giờ là rút ra hàm mất mát. Để làm như vậy, chúng ta...




Nguồn tin: Towards Data Science — Tác giả: Slava Efimov. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.