0Pricing
Learn AI with Python · Pelajaran

Variational Autoencoder (VAE)

Loss ELBO, trik reparetrisasi, eksplorasi ruang laten, pembuatan gambar dengan VAE.

Variational Autoencoder (VAE) adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.

Dari Autoenkoder ke VAE

Autoenkoder biasa mempelajari titik-titik yang tersebar, sehingga pengambilan sampel baru menghasilkan data yang tidak bermakna. Autoenkoder Variasional (VAE) mempelajari ruang laten yang mulus dan kontinu, yang dapat digunakan untuk mengambil sampel sehingga model tersebut menjadi model generatif yang sesungguhnya.

Mengodekan Distribusi

Alih-alih satu titik, enkoder VAE menghasilkan sebuah distribusi untuk setiap masukan: nilai rata-rata mu dan log-varians log_var. Setiap masukan dipetakan ke wilayah kecil yang samar dalam ruang laten, bukan ke satu titik saja.

class Encoder(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(784, 256)
        self.fc_mu = nn.Linear(256, 64)
        self.fc_logvar = nn.Linear(256, 64)

Mengapa mu dan log_var?

Kita memprediksi log_var, bukan varians secara langsung, karena nilainya dapat berupa bilangan riil apa pun tanpa batasan harus positif, dan cara ini stabil secara numerik. Melakukan eksponensiasi akan mengembalikan varians saat diperlukan.

    def forward(self, x):
        h = torch.relu(self.fc(x))
        return self.fc_mu(h), self.fc_logvar(h)

Mengambil Sampel Laten z

Untuk melakukan dekode, kita harus mengambil sampel z dari distribusi yang diprediksi. Pengambilan acak secara naif tidak dapat diturunkan, sehingga kita tidak dapat melakukan propagasi balik melaluinya. Trik reparameterisasi mengatasi masalah ini.

Trik Reparameterisasi

Tuliskan kembali sampel sebagai z = mu + eps * exp(0.5 * log_var), dengan eps sebagai derau acak. Kini keacakan berada di eps (tidak memerlukan gradien), dan gradien mengalir melalui mu serta log_var.

def reparameterize(mu, log_var):
    std = torch.exp(0.5 * log_var)
    eps = torch.randn_like(std)
    return mu + eps * std

Dekoder

Dekoder menerima z yang telah diambil sampelnya dan merekonstruksi gambar, seperti dekoder autoenkoder biasa, dengan memperluas 64 dimensi kembali menjadi 784 piksel menggunakan keluaran Sigmoid.

decoder = nn.Sequential(
    nn.Linear(64, 256),
    nn.ReLU(),
    nn.Linear(256, 784),
    nn.Sigmoid()
)

Komponen Fungsi Kerugian Rekonstruksi

Paruh pertama fungsi kerugian VAE adalah rekonstruksi: seberapa baik gambar yang didekodekan cocok dengan masukan. Entropi silang biner (atau MSE) digunakan pada piksel-piksel tersebut.

recon_loss = nn.functional.binary_cross_entropy(
    recon, x, reduction="sum"
)

Komponen Divergensi KL

Paruh kedua adalah divergensi KL, yang menarik setiap distribusi hasil enkode menuju distribusi normal standar. Ini mengatur ruang laten agar mulus dan kontinu, sehingga memungkinkan pembangkitan.

kl = -0.5 * torch.sum(1 + log_var - mu.pow(2) - log_var.exp())

Tujuan ELBO

VAE memaksimalkan ELBO (Batas Bawah Bukti), yang setara dengan meminimalkan reconstruction + KL. Rekonstruksi membuat keluaran tetap setia; KL menjaga agar ruangnya tertata dengan baik. Menyeimbangkan keduanya adalah inti dari proses ini.

loss = recon_loss + kl
loss.backward()

Menghasilkan Gambar Baru

Karena ruang laten cocok dengan distribusi normal standar, Anda dapat menghasilkan gambar yang benar-benar baru dengan mengambil sampel z dari N(0,1) lalu melakukan dekode, tanpa memerlukan gambar masukan.

with torch.no_grad():
    z = torch.randn(16, 64)
    new_images = decoder(z)  # 16 generated samples

Mengapa VAE Penting?

VAE menyediakan ruang laten yang mulus dan berlandaskan prinsip, yang dapat diinterpolasi dan digunakan untuk mengambil sampel. VAE menjadi dasar bagi banyak teknik generatif serta mengajarkan gagasan inti tentang mempelajari distribusi, bukan sekadar titik.

Uji Singkat

Uji pemahaman Anda tentang VAE.

Ringkasan: Autoenkoder Variasional

Anda mempelajari VAE: enkoder menghasilkan mu dan log_var, trik reparameterisasi z = mu + eps * exp(0.5 * log_var) menjaga agar pengambilan sampel tetap dapat diturunkan, dan fungsinya adalah ELBO = reconstruction + KL. Mengambil sampel z dari N(0,1) lalu melakukan dekode akan menghasilkan gambar baru.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Variational Autoencoder (VAE)” gratis?

Ya — teks lengkap “Variational Autoencoder (VAE)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Variational Autoencoder (VAE)”?

Loss ELBO, trik reparetrisasi, eksplorasi ruang laten, pembuatan gambar dengan VAE. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn AI with Python?

Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Variational Autoencoder (VAE)” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?

Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Autoencoder untuk Pembelajaran Representasi
  2. Variational Autoencoder (VAE)
  3. GAN: Generator dan Diskriminator
  4. GAN Kondisional dan Transfer Gaya
← Kembali ke Learn AI with Python