Belajar Deep Learning - Generative Models: GAN, VAE & Diffusion (Pengenalan)
Episode 18 of 25

Belajar Deep Learning - Generative Models: GAN, VAE & Diffusion (Pengenalan)

Memahami cara mesin menciptakan data baru: konsep GAN dan VAE, lalu diffusion models yang mendasari Stable Diffusion 3.5 dan FLUX.1, plus praktik denoising diffusion dan pipeline text-to-image dengan Diffusers.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Semua model sejauh ini adalah discriminative: mempelajari batas antar kelas, memetakan input ke label. Ada keluarga lain yang jauh lebih ambisius: generative models, yang mempelajari distribusi data sehingga bisa menciptakan data baru — gambar yang belum pernah ada, suara, teks, video.

Dari episode 1 kita sudah singgung GAN di 2014. Sekarang kita bedah tiga arsitektur generatif — GAN, VAE, dan diffusion — dan mengapa diffusion akhirnya memenangkan generasi gambar. Di akhir episode kalian menjalankan pipeline text-to-image dengan Diffusers, gerbang menuju dunia generative AI yang meledak di 2025-2026.

GAN: Generator vs Discriminator

GAN (Generative Adversarial Network) memperkenalkan ide jenius: dua jaringan yang saling bersaing.

  • Generator: menerima noise acak, menghasilkan gambar palsu.
  • Discriminator: menerima gambar, menebak asli atau palsu.

Keduanya dilatih bergantian. Generator berusaha membodohi discriminator; discriminator makin pintar membedakan. Secara teori, ketika seimbang, output generator tak bisa dibedakan dari data asli:

Permainan minimax GAN
Generator:  minimalkan log(1 - D(G(z)))
Discriminator: maksimalkan log(D(x)) + log(1 - D(G(z)))
100%

Kendala terkenalnya: mode collapse — generator menemukan satu output yang selalu membodohi discriminator dan berhenti memproduksi variasi. Training GAN yang stabil adalah seni yang sulit. Di 2026, GAN masih kuat untuk super-resolution dan domain transfer, tetapi untuk generasi bebas (text-to-image), diffusion mengambil alih.

VAE: Ruang Latent dengan Struktur

VAE (Variational AutoEncoder) berbeda: ia menyandikan input ke distribusi probabilitas dalam ruang latent, bukan titik tunggal. Encoder menghasilkan mean dan varians; sampel diambil dari distribusi itu lalu didecode kembali. Penalti KL memaksa distribusi latent mendekati normal standar.

Hasilnya: ruang latent yang kontinu dan terstruktur — interpolasi dua titik latent menghasilkan gambar transisi yang halus. VAE tidak menghasilkan gambar setajam GAN/diffusion, tetapi konsep ruang latent-nya dipakai di hampir semua model generatif modern, termasuk latent diffusion di bawah ini.

Diffusion: Denoising Bertahap

Ide Dasar

Diffusion bekerja mundur dari proses perusakan:

  1. Forward: tambahkan noise Gaussian secara bertahap ke gambar sampai menjadi noise murni.
  2. Reverse: latih jaringan (biasanya U-Net dari episode 10) untuk menghilangkan noise satu langkah demi satu langkah.

Pada saat inference, model mulai dari noise acak murni lalu denoise berulang kali sampai muncul gambar. Ide briliannya: alih-alih mempelajari distribusi data secara langsung (sulit), model hanya belajar "seperti apa noise pada tahap ini" — tugas yang jauh lebih sederhana.

Alur diffusion
gambar → +noise → +noise → ... → noise murni   (forward)
noise  → -noise → -noise → ... → gambar         (reverse, dilatih)

Latent Diffusion dan Text-to-Image

Denoising langsung pada piksel 1024x1024 sangat mahal. Stable Diffusion mengatasi dengan bekerja di ruang latent: VAE menyusutkan gambar ke representasi kecil, diffusion denoise di ruang itu, lalu decoder VAE mengembalikannya ke piksel. Text disuntikkan lewat cross-attention antara prompt text dan feature U-Net.

Inilah arsitektur di balik Stable Diffusion 3.5 dan FLUX.1 (yang memperbaiki prompt following dan kualitas teks dalam gambar).

Praktik: Pipeline Text-to-Image dengan Diffusers

Hugging Face diffusers menjadikan semua ini beberapa baris:

PythonText-to-image dengan Diffusers
from diffusers import DiffusionPipeline
import torch
 
pipeline = DiffusionPipeline.from_pretrained(
    "stabilityai/sdxl-turbo",
    torch_dtype=torch.float16,
    variant="fp16",
).to("cuda")
 
image = pipeline(
    prompt="sebuah kucing memakai kacamata, gaya ilustrasi",
    num_inference_steps=4,
    guidance_scale=0.0,
).images[0]
 
image.save("kucing.png")

num_inference_steps mengontrol jumlah langkah denoise — lebih banyak = kualitas lebih tinggi tapi lebih lambat. guidance_scale mengontrol seberapa kuat model mengikuti prompt (lebih tinggi = patuh, tapi bisa oversaturate).

Tip

Jumlah langkah dan guidance_scale adalah dua knob utama kualitas text-to-image. Mulai dari nilai default model (lihat model card), lalu bereksperimen: prompt kompleks butuh guidance lebih tinggi, prompt sederhana tidak. Model "turbo" dan "LCM" menjalankan pipeline dengan sangat sedikit langkah untuk kecepatan real-time.

Inpainting dan Image-to-Image

Ekosistem diffusion lebih dari text-to-image:

  • Image-to-image: mulai dari gambar nyata dan "diarahkan" oleh prompt — restyle foto.
  • Inpainting: mengisi bagian gambar yang di-mask dengan objek baru.
  • ControlNet: mengendalikan komposisi lewat pose/edge/depth.
PythonInpainting
from diffusers import AutoPipelineForInpainting
 
pipeline = AutoPipelineForInpainting.from_pretrained(
    "runwayml/stable-diffusion-inpainting", torch_dtype=torch.float16
).to("cuda")
 
image = pipeline(prompt="langit malam berbintang", image=photo, mask_image=mask).images[0]

Common Pitfalls

  • Vae dtype mismatch: di pipeline diffusion, pastikan VAE di fp16 atau bf16 untuk GPU Ampere+ — VAE di fp32 saat pipeline fp16 adalah sumber artefak warna paling umum.
  • Guidance terlalu tinggi: gambar overexposed, warna jenuh. Turunkan guidance_scale.
  • Memakai diffusion untuk semua hal: diffusion lambat dan mahal; untuk task yang bisa dikerjakan model discriminative, jangan generatif.
  • Random seed diabaikan: generasi bersifat stokastik; set seed untuk reproduktibilitas saat tuning prompt.

Warning

Model generatif tidak netral secara etika dan legal: cek lisensi model (beberapa arsitektur dan weight punya syarat komersial), dan jangan generate konten melanggar kebijakan atau memakai wajah orang tanpa izin. Verifikasi hasil sebelum disebar — diffusion bisa membuat objek yang tampak meyakinkan tapi salah secara faktual.

Penutup

Pada episode 18 ini, kalian telah mengenal generasi data.

Inti yang harus dibawa pulang:

  • GAN: generator vs discriminator, kuat tapi rawan mode collapse.
  • VAE: ruang latent kontinu, fondasi latent diffusion.
  • Diffusion: belajar menghilangkan noise bertahap; latent diffusion menjadikannya praktis.
  • Stable Diffusion 3.5/FLUX.1 = VAE + diffusion latent + cross-attention teks.
  • Diffusers memungkinkan text-to-image, img2img, dan inpainting dalam beberapa baris.

Di episode 19 selanjutnya kita akan membuat model ringan: optimisasi inference — quantization FP16/INT8/GGUF/AWQ/GPTQ, pruning, dan distillation, plus praktik ONNX Runtime, TFLite, dan llama.cpp untuk edge. Sampai jumpa di episode 19!

Belajar Deep Learning - Generative Models: GAN, VAE & Diffusion (Pengenalan) | Belajar Deep Learning