Series: Machine Learning Fundamentals – Bài 36
Ở bài viết trước, chúng ta đã khám phá Transformer Architecture – kiến trúc mở ra kỷ nguyên Large Language Models (LLM) chuyên xử lý và sinh văn bản.
Tuy nhiên, trong mảng Generative AI dành cho hình ảnh, âm thanh và dữ liệu đa phương tiện, một trong những phát minh đột phá và ấn tượng nhất từng được công bố chính là Generative Adversarial Networks (GANs) – hay Mạng đối kháng tạo sinh. Được tạo ra bởi Ian Goodfellow vào năm 2014, GANs từng được Yann LeCun (Trưởng bộ phận AI của Meta) đánh giá là “ý tưởng xuất sắc nhất trong lĩnh vực Machine Learning trong 20 năm qua”.
Generative Adversarial Networks là gì?
Generative Adversarial Networks (GANs) là một mô hình Học sâu (Deep Learning) thuộc nhóm Học không giám sát (Unsupervised Learning) / Học bán giám sát (Semi-supervised Learning).
Khác với các mạng nơ-ron truyền thống chỉ đóng vai trò phân loại hoặc dự đoán (Discriminative Models), GANs là một Mô hình tạo sinh (Generative Model) có khả năng tự tạo ra các dữ liệu hoàn toàn mới (hình ảnh, âm thanh, mô hình 3D) có phân phối dữ liệu giống hệt với dữ liệu thực tế.
Dữ liệu thực (Real Data) ──────────┐
▼
[Generator (Tạo ảnh giả)] ──> [Discriminator (Đánh giá)] ──> Thật / Giả
▲ │
└───────────── Cập nhật ─────────┘
Tài liệu chính thức mô tả GANs là cuộc đấu trí liên tục giữa hai mạng nơ-ron để cùng nhau nâng cao chất lượng dữ liệu sinh ra. Xem thêm tại TensorFlow GANs Guide.
Cấu trúc của Generative Adversarial Networks
Một hệ thống GANs tiêu chuẩn gồm hai mạng nơ-ron riêng biệt hoạt động đối kháng trực tiếp với nhau:
1. Generator (Mạng tạo sinh – “Kẻ làm tiền giả”)
-
Nhiệm vụ: Tiếp nhận một vectơ nhiễu ngẫu nhiên (Random Noise Vector $z$) và biến đổi nó thành một điểm dữ liệu giả $\hat{x} = G(z)$ (ví dụ: một bức ảnh gương mặt người không có thật).
-
Mục tiêu: Tạo ra dữ liệu giả ngày càng tinh vi để đánh lừa mạng Discriminator, khiến Discriminator tin rằng đây là dữ liệu thật từ Dataset.
2. Discriminator (Mạng phân biệt – “Cảnh sát”)
-
Nhiệm vụ: Tiếp nhận cả dữ liệu thật $x$ (từ Dataset) lẫn dữ liệu giả $\hat{x}$ (từ Generator) và đưa ra dự đoán xác suất $D(x) \in [0, 1]$ liệu dữ liệu đó là Thật (1) hay Giả (0).
-
Mục tiêu: Phân biệt chính xác $100\%$ đâu là dữ liệu thật và đâu là dữ liệu giả do Generator tạo ra.
Cơ chế hoạt động: Trò chơi Minimax (Minimax Game)
Quá trình huấn luyện GANs được biểu diễn toán học dưới dạng một Trò chơi hai người có tổng bằng không (Zero-Sum Game) với hàm mục tiêu Minimax:
Giải thích công thức toán học:
-
$\mathbb{E}_{x \sim p_{\text{data}}(x)} [\log D(x)]:$ Kỳ vọng Discriminator đoán đúng dữ liệu thật là 1.
-
$\mathbb{E}_{z \sim p_z(z)} [\log (1 – D(G(z)))]:$ Kỳ vọng Discriminator phát hiện ra dữ liệu giả $G(z)$ là 0.
-
$\max_{D}:$ Discriminator cố gắng tối đa hóa khả năng phân biệt thật – giả.
-
$\min_{G}:$ Generator cố gắng tối thiểu hóa khả năng bị Discriminator phát hiện (tức cố làm cho $D(G(z))$ tiến gần về 1).
Khi đạt đến Cân bằng Nash (Nash Equilibrium), Generator tạo ra dữ liệu giả hoàn hảo đến mức Discriminator chỉ có thể đoán mò với xác suất đúng là $50\%$ ($D(x) = 0.5$).
Thuật toán huấn luyện GANs từng bước
Quá trình huấn luyện diễn ra theo hai giai đoạn luân phiên:
[Bước 1: Huấn luyện Discriminator]
- Khóa trọng số Generator.
- Cho Discriminator học nhận biết Ảnh thật (Label=1) và Ảnh giả (Label=0).
- Cập nhật trọng số Discriminator qua Backpropagation.
[Bước 2: Huấn luyện Generator]
- Khóa trọng số Discriminator.
- Tạo Nhiễu z -> Qua Generator -> Tạo Ảnh giả.
- Cho Discriminator chấm điểm Ảnh giả (Hy vọng thu được Label=1).
- Cập nhật trọng số Generator để tối ưu sai số đánh lừa.
Các thách thức lớn khi huấn luyện GANs
Mặc dù GANs mang lại kết quả ấn tượng, việc huấn luyện GANs nổi tiếng là cực kỳ khó khăn do các sự cố kỹ thuật sau:
-
Mode Collapse (Sụp đổ chế độ): Generator phát hiện ra một mẫu ảnh giả duy nhất dễ đánh lừa Discriminator nhất và chỉ tạo ra duy nhất mẫu đó lặp đi lặp lại (ví dụ: dataset có 10 loại chữ số nhưng Generator chỉ tạo ra đúng số 8).
-
Vanishing Gradient (Triệt tiêu Gradient): Nếu Discriminator quá giỏi so với Generator ngay từ đầu, Gradient gửi về cho Generator sẽ bằng 0, khiến Generator ngừng học hoàn toàn.
-
Non-Convergence (Không hội tụ): Do hai mạng liên tục cập nhật đối kháng, hệ thống dễ rơi vào vòng lặp vô tận mà không bao giờ tìm được điểm cân bằng Nash.
Các biến thể nâng cấp phổ biến của GANs
Để khắc phục các nhược điểm trên, nhiều kiến trúc GANs cải tiến đã ra đời:
-
DCGAN (Deep Convolutional GAN): Kết hợp kiến trúc tích chập CNN vào cả Generator và Discriminator, giúp việc tạo ảnh ổn định và sắc nét hơn nhiều.
-
cGAN (Conditional GAN): Cho phép điều khiển loại dữ liệu sinh ra bằng cách truyền thêm thông tin nhãn (Condition $y$), ví dụ: yêu cầu GANs vẽ “một con mèo màu đen”.
-
CycleGAN: Chuyển đổi phong cách hình ảnh (Image-to-Image Translation) mà không cần cặp dữ liệu tương ứng (ví dụ: biến ảnh chụp ban ngày thành ban đêm, biến bức ảnh chụp thành tranh vẽ Monet).
-
WGAN (Wasserstein GAN): Sử dụng thước đo Wasserstein Distance để khắc phục triệt để hiện tượng Mode Collapse và giúp hàm Loss hội tụ ổn định.
Dữ liệu có cần Preprocessing / Scaling không?
CỰC KỲ BẮT BUỘC.
-
Chuẩn hóa điểm ảnh về $[-1, 1]$: Mạng Generator thường sử dụng hàm kích hoạt
tanhở tầng Output (trả về giá trị trong khoảng $[-1, 1]$). Bắt buộc phải Rescale toàn bộ ảnh đầu vào của Dataset về khoảng $[-1, 1]$ bằng công thức:$$X_{\text{scaled}} = \frac{X – 127.5}{127.5}$$ -
Latent Space Sampling: Vectơ nhiễu đầu vào $z$ của Generator thường được lấy mẫu từ Phân phối chuẩn hóa Gaussian $\mathcal{N}(0, 1)$.
So sánh Discriminative Models và Generative Models (GANs)
| Tiêu chí | Discriminative Model (Logistic, CNN, SVM) | Generative Model (GANs) |
| Mục tiêu chính | Phân loại hoặc dự đoán nhãn $y$ từ dữ liệu $x$ | Tạo ra dữ liệu mới $x$ có phân phối giống dữ liệu gốc |
| Xác suất học được | $P(y \mid x)$ (Xác suất có điều kiện) | $P(x)$ hoặc $P(x, y)$ (Xác suất đồng thời) |
| Đầu ra | Nhãn phân loại hoặc giá trị dự đoán số | Bức ảnh mới, tệp âm thanh mới, mô hình 3D mới |
| Dữ liệu yêu cầu | Thường cần dữ liệu có nhãn (Labeled Data) | Học không giám sát trên dữ liệu thô không nhãn |
Ưu điểm và Nhược điểm của Generative Adversarial Networks
Ưu điểm
-
Sinh ra hình ảnh và dữ liệu có độ chi tiết, sắc nét và chân thực vượt trội.
-
Không cần dữ liệu dán nhãn thủ công tốn kém.
-
Mở ra các ứng dụng sáng tạo vô tận trong thiết kế, nghệ thuật và y tế.
Nhược điểm
-
Cực kỳ khó huấn luyện: Dễ mất cân bằng giữa Generator và Discriminator.
-
Nhạy cảm với Hyperparameters (Learning rate, Optimizer).
-
Khó đánh giá chất lượng mô hình định lượng (thường phải dùng chỉ số Inception Score – IS hoặc Fréchet Inception Distance – FID).
Ứng dụng thực tế của GANs
-
Tạo ảnh chân thực & AI Art: Tạo ảnh người giả (ThisPersonDoesNotExist.com), thiết kế nhân vật 3D, thời trang.
-
Super Resolution (Tăng chất lượng ảnh): Nâng cấp ảnh độ phân giải thấp, mờ thành ảnh $4K$ sắc nét (SRGAN).
-
Image-to-Image Translation: Đổi màu tóc, biến đổi độ tuổi khuôn mặt, đổi thời tiết trong video.
-
Y tế & Sinh học: Tạo dữ liệu ảnh X-quang/MRI giả lập để huấn luyện mô hình chẩn đoán bệnh mà không vi phạm quyền riêng tư bệnh nhân.
Tóm tắt
-
Generative Adversarial Networks gồm hai mạng Generator (tạo dữ liệu giả) và Discriminator (phân biệt thật – giả) đấu trí đối kháng.
-
Mục tiêu toán học dựa trên Cân bằng Nash của Minimax Game.
-
Các vấn đề lớn nhất khi huấn luyện là Mode Collapse và Vanishing Gradient.
-
Bắt buộc Rescale ảnh về $[-1, 1]$ để phù hợp với hàm
tanhcủa Generator.
Tài liệu tham khảo
-
Goodfellow et al. (2014): Generative Adversarial Nets – Bài báo gốc kinh điển về GANs.
-
Radford et al. (2015): Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks – Bài báo gốc về DCGAN.
-
TensorFlow Documentation: Deep Convolutional Generative Adversarial Network (DCGAN)
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:
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

