Lensa ML

Cara Kerja Autoencoder & VAE

Langkah 1 dari 6: Intuisinya

Apa yang dipelajari autoencoder?

inputencoderSenyum0.4Ukuran mata0.0Lebar wajah0.0Kacamata-0.6atribut latentdecoderoutput
Senyum0.4
Ukuran mata0.0
Lebar wajah0.0
Kacamata-0.6
Atribut
4
Aktif
1
Dimensi
4

Autoencoder memampatkan data berdimensi tinggi (seperti wajah) menjadi sedikit atribut latent. Decoder merekonstruksi aslinya hanya dari beberapa angka ini. Geser slider untuk melihat cara tiap atribut mengendalikan aspek wajah yang berbeda.

Geser slider Senyum, Ukuran mata, Lebar wajah, dan Kacamata. Di sini 4 angka mewakili seluruh wajah. Autoencoder sungguhan mempelajari dimensi latent-nya dari data, dan dimensi itu jarang selaras serapi ini dengan feature bernama. Satu-satunya sinyal training adalah reconstruction error, seperti rata-rata selisih kuadrat antara input x dan output x̂. Bottleneck yang sempit memaksa kompresi: kalau kodenya sebesar input, network bisa meloloskannya tanpa perubahan. Autoencoder linear yang di-train dengan squared error mempelajari subruang yang sama dengan PCA.

Langkah 2 dari 6: Arsitektur VAE

Meng-encode sebagai distribusi, bukan titik

encoderμ, σsampeldecoderdefinisikandistribusi latentsampel daridistribusiμ1μ2μ3σ1σ2σ3z1z2z3z = μ + σ · ε

Encoder VAE mengeluarkan dua vector: μ (rata-rata) dan σ (simpangan baku), yang mendefinisikan distribusi untuk tiap dimensi latent, bukan satu titik. Decoder menerima sampel dari distribusi itu, yang diambil dengan reparameterization trick: ambil ε dari N(0,1), lalu hitung z = μ + σ · ε.

Ikuti network dari kiri ke kanan: 8 input, hidden layer berisi 6 dan 4, lalu μ dan σ dengan masing-masing 3 nilai, z hasil sampling berisi 3, dan decoder cerminan berisi 4, 6, dan 8. Dalam praktik, encoder mengeluarkan log σ², bukan σ, karena log variance bisa bernilai bilangan real apa pun, sedangkan σ harus tetap positif; σ = exp(½ log σ²). Setelah training, generasi hanya butuh decoder: ambil sampel z dari N(0, 1) lalu decode. Kingma dan Welling memperkenalkan model ini pada 2013.

Langkah 3 dari 6: Motivasi Statistik

Kenapa variational inference?

zvariabel tersembunyimenghasilkanxobservasi
Dari foto orang tersenyum (x), tujuannya menyimpulkan latent feature (z), seperti senyum atau warna rambut, yang menghasilkannya. Aturan Bayes memberi:
p(z|x) = p(x|z) · p(z) / p(x)
Menghitung p(x) berarti mengintegralkan semua kemungkinan kombinasi latent feature, yang mustahil dihitung dalam praktik. Sebagai gantinya, neural network (encoder) mempelajari aproksimasi yang lebih sederhana, q(z|x). Coba cocokkan di bawah.
zp(z) = N(0,1) priorp(z|x) mustahil dihitungq(z|x) aproksimasimuSelisih KL
μ0.20
σ0.40
KL(q‖post)
0.116
KL(q‖prior)
0.516
Kecocokan
bagus
Loss function VAE menyeimbangkan dua tujuan:
1. Rekonstruksi yang baik
Decoder harus bisa membangun ulang input asli dari latent code z
2. Tetap teratur
Output encoder q(z|x) harus tetap dekat dengan kurva lonceng sederhana N(0,1)
Loss = reconstruction error + KL(q(z|x) ‖ p(z))

Cocok. q(z|x)-mu sangat mendekati posterior sebenarnya. Pada VAE sungguhan, encoder menemukan μ dan σ secara otomatis, persis seperti yang baru kamu lakukan dengan tangan.

Geser slider μ dan σ, lalu lihat kartu KL(q‖post) dan KL(q‖prior). VAE tidak bisa mengukur KL ke posterior sebenarnya secara langsung, karena itu butuh p(x). Sebagai gantinya, VAE memaksimalkan evidence lower bound (ELBO): log p(x) ≥ E_q[log p(x|z)] − KL(q(z|x) ‖ p(z)). Selisih dalam pertidaksamaan itu persis KL ke posterior sebenarnya, jadi menaikkan bound menarik q mendekatinya. Untuk q Gaussian terhadap N(0, 1), suku KL punya closed form, ½(μ² + σ² − 1 − ln σ²): sekitar 0,52 pada μ = 0.2, σ = 0.4.

Langkah 4 dari 6: Reparameterization Trick

Membuat sampling jadi differentiable

AcakDeterministikSebelummodel decoderz~ q(z|x)μσmodel encoder✗ tidak bisa backpropmelewati samplingSesudah: reparameterizedmodel decoderzz = μ + σ ⊙ ε= 0.35+0.60×(0.00)= 0.35∂z/∂μ∂z/∂σμσε~ N(0,1)ε = 0.00model encoder✓ backprop berjalangradient mengalir lewat μ, σ
ε0.00
μ
0.35
σ
0.60
ε
0.00
z = μ+σε
0.35

Saat ε ≈ 0, z tetap dekat dengan μ, jadi sampel jatuh di dekat rata-rata. Keacakan dari ε berada di luar network, sehingga gradient tetap mengalir lewat μ dan σ selama backpropagation.

Geser slider ε dari −1 ke 1. Dengan μ = 0.35 dan σ = 0.6, ε = 1 menghasilkan z = 0.35 + 0.6 × 1 = 0.95. Slider hanya mencakup ±1, tetapi ε sungguhan diambil dari N(0, 1), jadi sekitar sepertiga pengambilan jatuh di luar rentang itu. Sebelum trik ini, gradient melalui sampel acak membutuhkan score-function estimator seperti REINFORCE, yang jauh lebih noisy. Ide yang sama muncul setiap kali model harus mengambil sampel dan tetap di-train dengan backpropagation, misalnya trik Gumbel-softmax untuk pilihan diskret.

Langkah 5 dari 6: Latent Space

Memvisualkan pengaruh β

Bayangkan VAE yang di-train pada angka tulisan tangan (0–9). Encoder memampatkan tiap gambar 28×28 pixel menjadi hanya 2 dimensi latent (z₁, z₂). Tiap warna di bawah mewakili kelas angka yang berbeda. Geser β untuk melihat pengaruhnya pada ruang 2D ini.
Loss VAE: L(x, x̂) + β Σ KL(qⱼ(z|x) ‖ N(0,1))
↑ reconstruction loss↑ KL divergence (dikali β)
z₁z₂0123456789Seimbang (β = 1.0)
β1.00
β
1.00
Mode
seimbang
Cluster
10

Dengan β ≈ 1.0, kedua loss seimbang. Cluster cukup jelas untuk memisahkan angka, tetapi menyebar dan bertumpang tindih dengan mulus. Tanpa zona mati, ruang ini berpindah bertahap dari satu angka ke angka berikutnya, sehingga sampel baru tampak realistis.

Geser β dari 0 ke 5 dan lihat kartu Mode berganti antara recon, seimbang, dan kl. VAE standar memakai β = 1. Higgins dkk. (2017) mengusulkan β-VAE, dengan β di atas 1, untuk mendorong tiap dimensi latent ke satu faktor variasi tersendiri, seperti ketebalan atau kemiringan goresan. Akibatnya, rekonstruksi lebih buram. Keadaan runtuh pada β tinggi disebut posterior collapse: decoder belajar mengabaikan z. Ini paling sering terjadi pada decoder yang kuat, dan KL annealing, yang menaikkan β dari 0 selama training, adalah perbaikan standar.

Langkah 6 dari 6: Generasi

Interpolasi mulus di latent space

Asenyum, lebart = 0.50Bkacamata, sempit
0.0
0.2
0.3
0.5
0.7
0.8
1.0
Senyum
0.1
Ukuran mata
0.1
Lebar wajah
0.0
Kacamata
-0.1
AB
t
0.50
Senyum
0.10
Mata
0.10
Lebar
0.00

Pada t = 0.50, tiap atribut latent adalah campuran mulus dari A dan B. Senyum memudar, mata membesar, dan kacamata muncul bertahap. Latent space yang kontinu memungkinkan kita menghasilkan data baru yang realistis lewat sampling atau interpolasi di mana saja.

Geser slider dari A ke B. Angka-angkanya mengikuti campuran garis lurus, z = (1 − t) · z_A + t · z_B, sehingga pada t = 0.5 nilai senyum berada di tengah antara 0,8 dan −0,6, yaitu 0,1. Pada latent Gaussian berdimensi tinggi, spherical interpolation (slerp) sering lebih disukai, karena titik di garis lurus antara dua sampel punya norm lebih kecil daripada sampel biasa. Sampel VAE cenderung buram, salah satu alasan generator yang lebih tajam seperti GAN mengambil alih sintesis gambar.

Apa itu autoencoder?

Autoencoder adalah neural network yang di-train untuk menyalin input ke output-nya lewat layer tengah yang sempit, disebut bottleneck atau latent code. Bagian encoder memampatkan input menjadi beberapa angka, dan bagian decoder membangun ulang input dari angka-angka itu. Variational autoencoder (VAE) mengubah encoder agar mengeluarkan distribusi probabilitas atas kode, bukan satu titik, sehingga decoder menjadi generator data baru.

Autoencoder dipakai untuk dimensionality reduction, denoising, anomaly detection (input yang direkonstruksi dengan buruk kemungkinan tidak biasa), dan mempelajari feature tanpa label. VAE dipakai untuk menghasilkan gambar dan molekul, serta menjelajahi latent space yang mulus. Autoencoder di Stable Diffusion memampatkan gambar menjadi latent grid kecil sehingga diffusion model bisa bekerja dengan angka yang jauh lebih sedikit daripada pixel mentah.

Ide utama

  • Autoencoder memampatkan input menjadi latent code kecil dan merekonstruksinya dari kode itu.
  • Bottleneck memaksa network menyimpan hanya informasi yang paling berguna.
  • Encoder VAE mengeluarkan rata-rata μ dan simpangan baku σ untuk tiap dimensi latent.
  • Loss VAE adalah reconstruction error ditambah β kali KL divergence dari N(0, 1).
  • Reparameterization trick z = μ + σ · ε membuat sampling jadi differentiable.
  • Latent space yang mulus membuat decoder bisa menghasilkan data baru lewat sampling atau interpolasi.

Pertanyaan umum

Apa bedanya autoencoder dan VAE?

Autoencoder biasa memetakan tiap input ke satu titik dan hanya di-train untuk merekonstruksi, sehingga latent space-nya bisa punya celah yang menghasilkan keluaran tak bermakna. VAE memetakan tiap input ke distribusi Gaussian dan menambahkan penalti KL yang menjaga distribusi itu tetap dekat dengan N(0, 1). Ruang itu jadi terisi, sehingga sampel acak dari N(0, 1) menghasilkan output yang realistis.

Apa itu denoising autoencoder?

Denoising autoencoder menerima input yang dirusak, misalnya dengan noise acak atau pixel yang ditutup, dan di-train untuk mengeluarkan versi aslinya yang bersih. Ini mencegahnya sekadar menyalin dan memaksanya mempelajari struktur data. Masked autoencoder untuk gambar dan masked language modeling di BERT mengikuti ide yang sama.

Kenapa output VAE buram?

Dengan decoder Gaussian, suku rekonstruksi berupa squared error, yang menguntungkan rata-rata dari semua output yang masuk akal. Merata-ratakan beberapa gambar tajam menghasilkan gambar buram. Noise di z menambah efek ini, karena kode yang berdekatan harus menghasilkan gambar yang mirip.

Apakah autoencoder termasuk supervised atau unsupervised?

Autoencoder tidak butuh label, jadi biasanya disebut unsupervised atau self-supervised learning: input menjadi targetnya sendiri. Encoder yang sudah dilatih sering dipakai ulang sebagai feature extractor untuk tugas supervised yang dilatih pada kumpulan data berlabel yang lebih kecil.

Penjelasan terkait

Referensi

  1. Kingma & Welling (2013), "Auto-Encoding Variational Bayes"
  2. Hinton & Salakhutdinov (2006), "Reducing the Dimensionality of Data with Neural Networks", Science
  3. Kingma & Welling (2019), "An Introduction to Variational Autoencoders"
  4. Goodfellow, Bengio & Courville, Deep Learning, Chapter 14: Autoencoders

Terakhir diperbarui