Series: Machine Learning Fundamentals – Bài 38
Sau khi đã đi qua các kiến trúc Deep Learning tạo sinh hình ảnh như GANs và Diffusion Models, ở bài viết này chúng ta sẽ tìm hiểu một mô hình nền tảng cực kỳ quan trọng thuộc nhóm Học không giám sát (Unsupervised Learning): Autoencoder.
Autoencoder đóng vai trò là “chiếc cầu nối” giúp nén dữ liệu, trích xuất đặc trưng ẩn (Feature Extraction), khử nhiễu (Denoising) và làm tiền đề cho các mô hình tạo sinh xác suất nâng cao như Variational Autoencoder (VAE).
Autoencoder là gì?
Autoencoder là một lớp mạng nơ-ron nhân tạo (ANN) được thiết kế để học một bản biểu diễn hiệu quả của dữ liệu đầu vào mà không cần nhãn (Unsupervised Learning).
Mục tiêu chính của Autoencoder không phải là dự đoán nhãn y, mà là tái tạo lại chính dữ liệu đầu vào, sao cho:
x ≈ x̂
Mô hình thực hiện điều này bằng cách ép dữ liệu đi qua một “nút thắt cổ chai” (Bottleneck) có số chiều nhỏ hơn nhiều so với dữ liệu ban đầu.
Ví dụ, một dữ liệu có 1024 chiều có thể được nén xuống chỉ còn 16 chiều trong Latent Space, sau đó được giải nén trở lại 1024 chiều.
Tài liệu của Keras mô tả Autoencoder là mô hình học cách tạo ra một biểu diễn nén của dữ liệu và tái tạo lại dữ liệu từ biểu diễn đó.
👉 Keras – Building Autoencoders
Cấu trúc của Autoencoder
Một Autoencoder tiêu chuẩn gồm 3 thành phần chính:
1. Encoder – Bộ mã hóa
Encoder có nhiệm vụ nén dữ liệu đầu vào x có số chiều lớn thành một vector biểu diễn ẩn z có số chiều nhỏ hơn.
Trong đó:
- x: dữ liệu đầu vào.
- We: trọng số của Encoder.
- be: bias.
- z: biểu diễn ẩn.
2. Bottleneck / Latent Space – Không gian ẩn
Đây là phần hẹp nhất của mạng.
Bottleneck buộc mô hình phải chắt lọc những thông tin quan trọng nhất thay vì đơn giản học thuộc dữ liệu đầu vào.
Ví dụ:
3. Decoder – Bộ giải mã
Decoder nhận vector ẩn z và giải nén nó để khôi phục dữ liệu ban đầu.
Mục tiêu là làm cho dữ liệu tái tạo x̂ càng giống dữ liệu gốc x càng tốt.
Cơ chế hoạt động và Hàm mất mát
Trong quá trình huấn luyện, Autoencoder cố gắng tối thiểu hóa sự khác biệt giữa dữ liệu gốc và dữ liệu tái tạo.
Đây được gọi là Reconstruction Loss.
1. Mean Squared Error (MSE)
MSE thường được sử dụng với dữ liệu liên tục.
Loss càng nhỏ nghĩa là dữ liệu tái tạo càng gần với dữ liệu gốc.
2. Binary Cross-Entropy (BCE)
BCE thường được sử dụng khi dữ liệu được chuẩn hóa về khoảng [0, 1], ví dụ như giá trị pixel của ảnh.
Các biến thể phổ biến của Autoencoder
Denoising Autoencoder (DAE)
DAE cố tình thêm nhiễu vào dữ liệu đầu vào:
Nhờ đó, mô hình học cách loại bỏ nhiễu và khôi phục dữ liệu ban đầu.
Sparse Autoencoder
Thêm một thành phần phạt Sparsity Penalty vào hàm Loss để buộc phần lớn neuron trong Bottleneck có giá trị gần bằng 0.
Điều này giúp mô hình học được những đặc trưng quan trọng và có tính phân biệt cao.
Convolutional Autoencoder (CAE)
CAE sử dụng các tầng Convolution và Pooling thay cho các tầng Dense truyền thống, đặc biệt phù hợp với dữ liệu hình ảnh 2D hoặc 3D.
Variational Autoencoder (VAE)
VAE mở rộng Autoencoder bằng cách biến Latent Space thành một phân phối xác suất liên tục.
Thay vì học một vector cố định, mô hình học các tham số như:
Nhờ đó, VAE có khả năng sinh ra dữ liệu mới từ không gian ẩn.
Dữ liệu có cần Preprocessing / Scaling không?
Rất quan trọng.
1. Scaling dữ liệu
Decoder thường sử dụng Sigmoid hoặc tanh ở tầng đầu ra. Vì vậy dữ liệu đầu vào cần được chuẩn hóa đồng bộ.
- Sigmoid: dữ liệu thường được scale về [0, 1].
- tanh: dữ liệu thường được scale về [-1, 1].
Có thể sử dụng MinMaxScaler hoặc Rescaling.
2. Flatten / Reshape
Cần đảm bảo kích thước dữ liệu đầu vào khớp với kiến trúc Encoder.
Ví dụ một ảnh:
So sánh PCA và Autoencoder
| Tiêu chí | PCA | Autoencoder |
|---|---|---|
| Bản chất | Biến đổi tuyến tính | Mạng nơ-ron phi tuyến |
| Mối quan hệ dữ liệu | Chủ yếu tuyến tính | Có thể học quan hệ phi tuyến |
| Cấu trúc | Eigenvectors / Principal Components | Encoder – Bottleneck – Decoder |
| Tốc độ | Nhanh trên dữ liệu nhỏ/vừa | Cần nhiều tài nguyên hơn |
Ưu điểm và Nhược điểm của Autoencoder
Ưu điểm
- Học đặc trưng phi tuyến tính tự động.
- Không cần dữ liệu được gắn nhãn thủ công.
- Có khả năng giảm chiều dữ liệu.
- Có thể dùng để khử nhiễu.
- Hữu ích trong phát hiện bất thường.
Nhược điểm
- Dễ bị Overfitting nếu Bottleneck quá lớn.
- Dữ liệu tái tạo đôi khi bị mờ.
- Phụ thuộc nhiều vào kiến trúc mạng.
- Việc lựa chọn Loss Function ảnh hưởng đáng kể đến kết quả.
Ứng dụng thực tế của Autoencoder
1. Khử nhiễu hình ảnh và âm thanh
Autoencoder có thể học cách loại bỏ nhiễu khỏi ảnh hoặc tín hiệu âm thanh.
2. Phát hiện bất thường (Anomaly Detection)
Đây là một trong những ứng dụng rất trực quan của Autoencoder.
Dữ liệu bình thường → Reconstruction Loss thấp
Dữ liệu bất thường → Reconstruction Loss cao
Ví dụ: phát hiện giao dịch gian lận hoặc lỗi trong hệ thống.
3. Nén dữ liệu và Feature Extraction
Latent Space có thể được sử dụng như một biểu diễn nhỏ gọn của dữ liệu ban đầu.
4. Recommendation Systems
Autoencoder có thể được sử dụng để học và khôi phục các mẫu trong ma trận User–Item, phục vụ bài toán gợi ý.
Tóm tắt
- Autoencoder là mạng nơ-ron học không giám sát dùng để nén và tái tạo dữ liệu.
- Cấu trúc cơ bản gồm Encoder → Bottleneck → Decoder.
- Mục tiêu là tối thiểu hóa Reconstruction Loss.
- Denoising Autoencoder giúp khử nhiễu.
- VAE mở rộng Latent Space thành một phân phối xác suất và có khả năng sinh dữ liệu mới.
- Cần chú ý Feature Scaling trước khi huấn luyện.
Tài liệu tham khảo
- Keras Documentation: Building Autoencoders in Keras
- PyTorch Tutorials: PyTorch Tutorials
- Goodfellow, Bengio & Courville (2016): Deep Learning – Chapter 14: Autoencoders
Khóa học tại MCNA Technology School
Nếu bạn muốn thực hành Machine Learning, Python và xây dựng các mô hình trên dữ liệu thực tế, có thể tham khảo các khóa học tại MCNA Technology School.
Tác giả: Bùi Đình Tuyển – Data Analyst tại MCNA Technology School
📞 Hotline: 0939.866.825 (Mr. Khang)
🌐 Website: MCNA Technology School
📍 Hà Nội:
30 Trung Liệt, Đống Đa
Liền kề 44B TT2 Văn Quán, Hà Đông
📍 TP.HCM:
50B Phan Tây Hồ, Cầu Kiệu

