Autoencoder Là Gì? Mô Hình Nén Và Trích Xuất Đặc Trưng ML

Chatgpt Image Sep 7, 2026, 09_22_31 Am

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ư GANsDiffusion 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.

Dữ liệu gốc (x)   →   Encoder   →   Bottleneck (z)   →   Decoder   →   Dữ liệu tái tạo (x̂)

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.

z = f(Wex + be)

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ụ:

1024 chiều   →   512   →   128   →   16 chiều

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.

x̂ = g(Wdz + bd)

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 = (1 / N) × Σ(xi − x̂i)2

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.

Loss = −Σ[xi log(x̂i) + (1 − xi) log(1 − x̂i)]

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:

Dữ liệu sạch → Thêm nhiễu → Encoder → Decoder → Dữ liệu sạch

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 ConvolutionPooling 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ư:

Mean (μ)   và   Variance (σ2)

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:

28 × 28 × 1   →   Flatten   →   784

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

  1. 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.
  2. Cấu trúc cơ bản gồm Encoder → Bottleneck → Decoder.
  3. Mục tiêu là tối thiểu hóa Reconstruction Loss.
  4. Denoising Autoencoder giúp khử nhiễu.
  5. 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.
  6. Cần chú ý Feature Scaling trước khi huấn luyện.

Tài liệu tham khảo

  1. Keras Documentation: Building Autoencoders in Keras
  2. PyTorch Tutorials: PyTorch Tutorials
  3. 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

Chỉ mục