GAN là gì? Mạng đối kháng tạo ảnh và cách huấn luyện thực tế

Sơ đồ kiến trúc StyleGAN-1 và StyleGAN-2 cho thấy vector phong cách w đi qua lớp affine để điều biến trọng số và độ lệch theo từng kênh, kèm nhiễu Gauss

GAN là mô hình học máy độc đáo: hai mạng neural được huấn luyện cùng lúc, một bên tạo ra ảnh giả, bên kia cố gắng phân biệt ảnh thật từ ảnh giả. Nhờ chơi trò này qua vô số vòng lặp, mạng tạo ảnh giả dần học cách tạo ra ảnh thực tế đến mức người thường phân biệt không ra. Mạng GAN do Ian Goodfellow đề xuất năm 2014 là nền tảng của nhiều công nghệ sinh ảnh hiện đại từ StyleGAN cho tới diffusion models.

Sơ đồ dòng chảy của GAN: vector nhiễu đưa vào generator tạo ảnh giả, ảnh giả cùng ảnh thật từ tập dữ liệu đều được discriminator phân biệt

GAN hoạt động như thế nào

Hai mạng trong GAN được gọi là Generator (G) và Discriminator (D). Generator nhận một vector nhiễu ngaussian z và tạo ra một ảnh giả. Discriminator nhận một ảnh (có thể thật từ dataset hoặc giả từ Generator) và ra xác suất ảnh đó là thật. Hai mạng cùng được huấn luyện để tối ưu hàm mục tiêu minmax:

min_G max_D V(D,G) = E_x~pdata[log D(x)] + E_z~pz[log(1 − D(G(z)))]

Ở optimum lý tưởng (giả sử đủ điều kiện và mạng đủ mạnh), Generator sẽ phân phối giống hoàn toàn dữ liệu thực tế, và Discriminator sẽ luôn ra 0.5 cho mọi đầu vào — nghĩa là nó không thể phân biệt thật giả nữa.

Quy trình huấn luyện thực tế gồm các bước lặp lại:

  1. Lấy một batch ảnh thật từ dataset.
  2. Tạo batch ảnh giả bằng Generator với vector z ngẫu nhiên.
  3. Cập nhật Discriminator để tăng log D(x) trên ảnh thật và giảm log(1−D(G(z))) trên ảnh giả (tương đương tối ưu V(D,G) theo D).
  4. Cập nhật Generator để giảm log(1−D(G(z))) trên ảnh giả (tăng log D(G(z)) – gọi là loss non-saturating).
  5. Lặp lại từ bước 1 với batch mới.

Trong thực tế nhằm ổn định, thường dùng hai hàm mất mát khác nhau: cho Discriminator giữ nguyên, thay cho Generator bằng hàm loss non-saturating – tăng log D(G(z)) – khi D(G(z)) quá nhỏ thì log(1−D(G(z))) sẽ near 0 (saturate) khiến gradient biến mất.

Hai hàm mất mát và vấn đề mode collapse

Loss GAN nguyên bản có thể gặp vấn đề khi Discriminator trở nên quá tốt sớm: Generator nhận gradient gần zero và dừng học. Hai cải tiến quan trọng là:

  • Loss non-saturating: thay vì cố giảm log(1−D(G(z))), ta tăng trực tiếp log D(G(z)) cho Generator. Đánh dấu vị trí bắt đầu các cải tiến ổn định.
  • Wasserstein GAN (WGAN): thay vì dùng JS-divergence gần trực tiếp, thay bằng khoảng cách Earth-Mover (Wasserstein-1). Điều này loại bỏ mode collapse và cung cấp loss có ý nghĩa mà dùng để debug và chọn siêu tham.

Mode collapse là hiện tượng Generator chỉ tạo ra một số ít mẫu (thậm chí một mẫu) lặp lại thay vì bao phủ toàn bộ phân phối dữ liệu. WGAN fix phần này, nhưng vì dùng weight clipping để buộc Lipschitz còn gây ra gradient tiêu thụ. Sau đó WGAN-GP thay weight clipping bằng gradient penalty – mềm enforced Lipschitz – cho phép huấn luyện ổn định lên tới các kiến trúc sâu như ResNet-101.

Các chỉ số sau WGAN giúp đánh giá chất lượng mà không phụ thuộc vào tỉ lệ lỗi khi người dùng nhìn:

  • Two Time-Scale Update Rule (TTUR): dùng learning rate riêng cho Generator và Discriminator để đạt cân bằng.
  • Frechet Inception Distance (FID): so sánh trung bình và hiệp phương sai của đặc trưng Inception giữa ảnh thật và ảnh tạo, thấp là tốt hơn.
Sơ đồ phân loại các mô hình sinh sâu, xếp GAN cạnh các mô hình hoàn toàn khả kiến, mô hình biến ẩn và mô hình Markov

So sánh GAN với các mô hình sinh khác

Thuộc tính GAN Variational Autoencoder (VAE) Diffusion Model
Mục tiêu Minimax game giữa G và D Tái tạo + KL divergence Học khử nhiễu dần dần
Tạo mẫu Một bước qua Generator Giải mã từ latent z Nhiều bước khử nhiễu từ Gaussian
Chất lượng ảnh Rất sắc nét, chi tiết cao Mượt mà nhưng đôi khi mờ Rất cao, nhất hiện tại
Độ đa dạng Có thể bị mode collapse Thường tốt Rất tốt, bao phủ phân phối
Tính ổn định Cần cân bằng hàm loss giữa G và D Rất ổn định Rất ổn định
Ví dụ tiêu biểu DCGAN, StyleGAN, BigGAN VAE, β-VAE DDPM, DDIM, Stable Diffusion

Nhìn vào bảng, ta thấy GAN cho ảnh sắc nét nhất nhưng cần cân bằng hàm loss giữa G và D. VAE ổn định nhưng ảnh thường thiếu chi tiết. Diffusion Model cho chất lượng tốt nhất hiện tại và rất ổn định, nhưng cần nhiều bước để tạo một ảnh (từ 25 tới 1000 bước).

Các thế hệ GAN tiêu biểu

  • DCGAN (2015): thay fully-connected layers bằng convolutional layers với một vài ràng buộc kiến trúc (không dùng full-connected, không dùng maxpool, sử dụng batchnorm). Kết quả học được hierarchy từ parts tới whole objects.
  • StyleGAN (2018): thay vector z trực tiếp bằng một mapping network 8 lớp -> latent style w, sau đó dùng AdaIN (adaptive instance normalization) tại mỗi lớp convolution trong synthesis network 18 lớp. Cho phép tách pose, identity khỏi chi tiết stochastic như vết nám, tóc.
  • StyleGAN-2 (2019): loại bỏ các artifact của StyleGAN bằng redesigned normalization và thêm path length regularizer.
  • BigGAN (2018): mở rộng tới ImageNet với orthogonal regularization trên Generator và dùng truncation trick để cân bằng fidelity-variety.
Sơ đồ kiến trúc StyleGAN-1 và StyleGAN-2 cho thấy vector phong cách w đi qua lớp affine để điều biến trọng số và độ lệch theo từng kênh, kèm nhiễu Gauss

Khi nào vẫn nên dùng GAN

Mặc dù diffusion model chiếm ưu thế trong text-to-image, GAN vẫn có vị trí trong một số trường hợp:

  • Tạo ảnh thực thời: vì chỉ cần một qua forward pass của Generator, GAN có thể chạy tới hơn 100 fps trên GPU hiện đại, thích hợp cho ứng dụng tương tác.
  • Tập dữ liệu nhỏ: StyleGAN2-ADA cho phép huấn luyện chất lượng cao với chỉ vài chục nghìn hình nhờ adaptive discriminator augmentation.
  • Các ứng dụng cần kiểm soát chi tiết: StyleGAN cho phép chỉnh sửa phong cách (tóc, pose, nền) qua vector style riêng cho từng lớp.
  • Nhiệm vụ super-resolution hoặc inpainting: GAN có thể được điều chỉnh để bảo vệ biên và tạo texture mượt.

Tóm tắt

GAN là bước ngoặt quan trọng trong học máy sinh, đưa ra framework đối kháng tạo ra ảnh cực kỳ sắc nét. Mặc dù diffusion models vượt mặt trong nhiều bài chuẩn để đo chất lượng ảnh và ổn định hơn, GAN vẫn là lựa chọn hàng đầu khi cần tạo ảnh thực thời, kiểm soát phong cách hoặc làm việc với dữ liệu nhỏ. Các cải tiến như WGAN-GP, StyleGAN-2 và StyleGAN2-ADA đã làm cho việc huấn luyện GAN trở nên ổn định và có thể mở rộng tới phân giải cao như 1024×1024 trên consumer GPU.

Nguồn: arXiv:1406.2661, arXiv:1511.06434, arXiv:1701.07875, arXiv:1704.00028, arXiv:1710.10196, arXiv:1809.11096, arXiv:1812.04948, arXiv:1912.04958, arXiv:2006.11239, arXiv:2105.05233, arXiv:2112.10752, github.com/NVlabs/stylegan2-ada-pytorch, en.wikipedia.org/wiki/Generative_adversarial_network

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Sơ đồ kiến trúc LoRA: trọng số tiền huấn luyện W0 cộng ma trận hạng thấp B nhân A

LoRA là gì? Kỹ thuật tinh chỉnh mô hình AI tiết kiệm bộ nhớ

LoRA là viết tắt của Low-Rank Adaptation, một kỹ thuật cho phép tinh chỉnh mô hình ngôn ngữ lớn bằng cách chỉ huấn luyện một phần rất nhỏ tham số…

Xem thêm

Object detection là gì? Cách AI nhận diện vật thể trong ảnh

Object detection là gì? Cách AI nhận diện vật thể trong ảnh Object detection (phát hiện đối tượng) là bài toán thị giác máy tính, trong đó mô hình AI…

Xem thêm

Kiến trúc Transformer là gì? Nền tảng mô hình ngôn ngữ hiện đại

Kiến trúc Transformer là gì? Nền tảng của mô hình ngôn ngữ hiện đại Transformer là kiến trúc mạng nơ-ron deep learning được giới thiệu trong bài báo “Attention Is…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất