Apa itu variational autoencoder?

Elemen desain abstrak dari closeup makro batu mineral

Penyusun

Dave Bergmann

Senior Staff Writer, AI Models

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

Apa itu variational autoencoder?

Variational autoencoder (VAE) adalah model generatif yang digunakan dalam machine learning (ML) untuk menghasilkan data baru dalam bentuk variasi dari data input yang digunakan untuk melatihnya. Selain itu, variational autoencoder juga melakukan tugas-tugas umum untuk autoencoder lainnya, seperti denoising.

Seperti semua autoencoder, autoencoder variasional adalah model pembelajaran mendalam yang terdiri dari encoder yang belajar mengisolasi variabel laten penting dari data pelatihan dan dekoder, yang kemudian menggunakan variabel laten tersebut untuk merekonstruksi data input.

Namun, sebagian besar arsitektur autoencoder mengkodekan representasi variabel laten yang diskrit dan tetap, sementara VAE mengkodekan representasi ruang laten yang kontinu dan probabilistik. Hal ini memungkinkan VAE untuk tidak hanya secara akurat merekonstruksi input asli, tetapi juga menggunakan inferensi variasi untuk menghasilkan sampel data baru yang menyerupai data input asli.

Arsitektur Neural Networks untuk variational autoencoder awalnya diusulkan dalam makalah tahun 2013 oleh Diederik P. Kingma dan Max Welling, berjudul Auto-Encoding Variational Bayes (tautan berada di luar ibm.com). Makalah ini juga mempopulerkan apa yang mereka sebut sebagai trik reparameterisasi, sebuah teknik machine learning penting yang memungkinkan penggunaan keacakan sebagai input model tanpa mengorbankan kemampuan diferensiasi model, yaitu kemampuan untuk mengoptimalkan parameter model.

Meskipun VAE sering dibahas dalam konteks pembuatan gambar, termasuk dalam artikel ini, VAE dapat digunakan untuk beragam aplikasi kecerdasan buatan (AI), mulai dari deteksi anomali1 hingga menghasilkan molekulobat baru2 (tautan berada di luar ibm.com ).

Apa itu ruang laten?

Hal yang penting untuk memahami VAE atau jenis autoencoder lainnya adalah gagasan ruang laten, yaitu sebutan untuk variabel laten kolektif dari sekumpulan data input tertentu. Singkatnya, variabel laten adalah variabel yang mendasari data yang menginformasikan cara pendistribusian data, tetapi sering kali tidak dapat diamati secara langsung.

Sebagai visualisasi dari konsep variabel laten, bayangkan sebuah jembatan dengan sensor yang mengukur berat setiap kendaraan yang lewat. Tentu saja, ada berbagai jenis kendaraan yang menggunakan jembatan ini, mulai dari mobil kecil dan ringan hingga truk besar dan berat. Karena tidak ada kamera, kami tidak memiliki cara untuk mendeteksi apakah kendaraan tertentu adalah konvertibel, sedan, van, atau truk. Namun, kita tahu bahwa jenis kendaraan secara signifikan mempengaruhi berat kendaraan itu.

Dengan demikian, contoh ini melibatkan dua variabel acak, x dan z, di mana x adalah variabel yang dapat diamati secara langsung yaitu berat kendaraan dan z adalah variabel laten yaitu jenis kendaraan. Tujuan utama pelatihan untuk setiap autoencoder adalah untuk mempelajari cara mendeskripsikan ruang laten dari input tertentu dengan efisiensi tinggi.

Ruang laten dan pengurangan dimensi

Autoencoder memodelkan ruang laten melalui pengurangan dimensi: kompresi data ke dalam ruang dimensi rendah yang menangkap informasi bermakna yang terkandung dalam input asli.

Dalam konteks machine learning (ML), dimensi matematis tidak berhubungan dengan dimensi spasial yang sudah dikenal di dunia fisik, tetapi dengan fitur-fitur data. Misalnya, gambar angka hitam-putih dengan ukuran 28x28 piksel dari kumpulan data MNIST dapat direpresentasikan sebagai vektor 784 dimensi, di mana setiap dimensi mewakili satu piksel dengan nilai antara 0 (hitam) dan 1 (putih). Gambar yang sama jika dibuat berwarna , dapat direpresentasikan sebagai vektor 2.352 dimensi. Di mana setiap salah satu dari 784 piksel direpresentasikan dalam tiga dimensi, sesuai dengan nilai merah, hijau, dan biru (RGB) yang respektif.

Namun, tidak semua dimensi tersebut mengandung informasi yang berguna. Angka itu sendiri sebenarnya hanya mewakili sebagian kecil gambar, jadi sebagian besar ruang input adalah kebisingan latar belakang. Mengompresi data hanya ke dimensi yang berisi informasi yang relevan, yaitu ruang laten, dapat meningkatkan akurasi, efisiensi, dan efektivitas banyak tugas dan algoritma ML.

Apa itu autoencoder?

VAEs adalah subkategori dari kategori yang lebih besar, yaitu autoencoder, yaitu arsitektur neural network yang biasanya digunakan dalam pembelajaran mendalam untuk tugas seperti kompresi data, pengurangan kebisingan pada gambar, pendeteksian anomali dan pengenalan wajah.

Autoencoder adalah sistem pengawasan mandiri yang tujuan pelatihannya adalah untuk mengompresi (atau mengenkodekan) data input melalui pengurangan dimensionalitas dan kemudian secara akurat merekonstruksi (atau mendekodekan) input aslinya dengan menggunakan representasi terkompresi itu.

Pada dasarnya, fungsi autoencoder adalah untuk secara efektif mengekstrak informasi data yang paling menonjol, yaitu variabel latennya, dan membuang noise yang tidak relevan. Hal yang membedakan berbagai jenis autoencoder dengan satu sama lain adalah strategi khusus yang digunakan untuk mengekstrak informasi tersebut dan contoh penggunaan yang paling sesuai untuk masing-masing strategi tersebut.

Dalam pelatihan, jaringan encoder membawa data input dari kumpulan data pelatihan melewati "bottleneck" sebelum mencapai decoder. Nantinya jaringan decoder bertanggung jawab untuk merekonstruksi input asli dengan hanya menggunakan vektor variabel laten.

Setelah setiap periode pelatihan, algoritma pengoptimalan seperti  penurunan gradien digunakan untuk menyesuaikan bobot model dengan cara yang meminimalkan perbedaan antara input data asli dan output decoder. Nantinya, encoder belajar untuk mengizinkan informasi yang paling kondusif untuk rekonstruksi yang akurat dan decoder belajar untuk merekonstruksi secara efektif. 

Meskipun hal ini secara intuitif cocok untuk tugas-tugas kompresi data yang mudah, namun kemampuan untuk secara efisien mengkodekan representasi laten yang akurat dari data yang tidak berlabel, memungkinkan beragam penggunaan untuk autoencoder. Sebagai contoh, autoencoder dapat digunakan untuk memulihkan file audio yang rusak, mewarnai gambar skala abu-abu, atau mendeteksi anomali (seperti yang diakibatkan oleh penipuan) yang tidak terlihat oleh mata telanjang.

Struktur autoencoder

Meskipun berbagai jenis autoencoder menambahkan atau mengubah aspek tertentu dari arsitekturnya agar lebih sesuai dengan tujuan dan tipe data tertentu, semua autoencoder memiliki tiga elemen struktural utama:

Encoder mengekstrak variabel laten dari data input x dan mengeluarkannya dalam bentuk vektor yang merepresentasikan ruang laten z .Dalam autoencoder "vanilla", biasanya setiap lapisan encoder berikutnya berisi node yang semakin sedikit daripada lapisan sebelumnya; ketika data melintasi setiap lapisan encoder, data tersebut dikompresi melalui proses "pemampatan" diri sendiri menjadi dimensi yang lebih sedikit.

Varian autoencoder lainnya menggunakan istilah regularisasi, seperti fungsi yang memberlakukan sparsitas dengan memberi penalti pada jumlah node yang diaktifkan pada setiap lapisan, untuk mencapai pengurangan dimensi ini.

Bottleneck, atau "kode," adalah lapisan output dari jaringan encoder dan lapisan input dari jaringan decoder. Bottleneck berisi ruang laten: penyematan data input berdimensi lebih rendah yang terkompresi sepenuhnya. Bottleneck yang memadai diperlukan untuk membantu memastikan bahwa decoder tidak dapat dengan mudah menyalin atau menghafal data input, yang secara nominal akan memenuhi tugas pelatihannya, tetapi mencegah autoencoder untuk belajar.

Dekoder menggunakan representasi laten tersebut untuk merekonstruksi input asli dengan cara membalikkan encoder: dalam arsitektur dekoder pada umumnya, setiap lapisan berikutnya berisi jumlah node aktif yang semakin besar.

Sementara jaringan encoder dan decoder dari banyak autoencoder dibangun dari standard multilayer perceptrons (MLP), autoencoder tidak terbatas pada jenis jaringan neural tertentu.

Autoencoder yang digunakan untuk tugas-tugas visi komputer sering kali berupa convolutional neural networks (CNN) dan dengan demikian disebut autoencoder konvolusional. Autoencoder yang dibangun dari arsitektur transformator telah digunakan di berbagai bidang seperti visi komputer3 dan musik.4 

Manfaat utama autoencoder dibandingkan algoritma pengurangan dimensi lainnya, seperti analisis komponen utama (PCA), adalah bahwa autoencoder dapat memodelkan hubungan nonlinier di antara variabel yang berbeda. Oleh karena itu, node autoencoder jaringan neural biasanya menggunakan fungsi aktivasi nonlinier.

Dalam berbagai penggunaan autoencoder, dekoder hanya berfungsi untuk membantu optimalisasi encoder, kemudian setelah pelatihan. Namun dalam variational autoencoder, decoder dipertahankan dan digunakan untuk menghasilkan titik data baru.

Bagaimana cara kerja variational autoencoder?

Yang membedakan VAE dari autoencoder lain adalah cara uniknya dalam mengkodekan ruang laten, dan pengkodean probabilistiknya dapat diterapkan dalam berbagai contoh penggunaan.

Tidak seperti kebanyakan autoencoder, yang merupakan model deterministik yang mengkodekan satu vektor variabel laten diskrit, VAES adalah model probabilistik . VAE mengkodekan variabel laten dari data pelatihan bukan sebagai nilai diskrit tetap z, tetapi sebagai rentang kemungkinan berkelanjutan yang diekspresikan sebagai distribusi probabilitas p(z).

Dalam statistik Bayesian, rentang kemungkinan yang dipelajari untuk variabel laten ini disebut distribusi prior. Dalam inferensi variasional, proses generatif untuk mensintesis titik-titik data baru, distribusi prior ini digunakan untuk menghitung distribusi posterior, p(z|x). Dengan kata lain, x adalah nilai variabel yang dapat diamati, sedangkan z adalah nilai untuk variabel laten.

Untuk setiap atribut laten dari data pelatihan, VAE mengkodekan dua vektor laten yang berbeda: vektor rata-rata, "μ", dan vektor deviasi standar, "σ". Intinya, kedua vektor ini mewakili rentang kemungkinan untuk setiap variabel laten dan varians yang diharapkan dalam setiap rentang kemungkinan.

Dengan mengambil sampel secara acak dari kisaran kemungkinan yang dikodekan ini, VAE dapat mensintesis sampel data baru yang, meskipun unik dan orisinal, menyerupai data pelatihan asli. Meskipun pada prinsipnya relatif intuitif, metodologi ini memerlukan adaptasi lebih lanjut terhadap metodologi autoencoder standar untuk dipraktikkan.

Untuk menjelaskan kemampuan VAE ini, kami akan mengulas konsep-konsep berikut ini:

  • Reconstruction loss

  • Divergensi Kullback-Leibler (KL)

  • Batas bawah bukti (ELBO)

  • Trik reparameterisasi

Reconstruction loss

Seperti semua autoencoder, VAE menggunakan reconstruction loss, juga disebut kesalahan rekonstruksi, sebagai loss function utama dalam pelatihan. Kesalahan rekonstruksi mengukur perbedaan (atau data yang "hilang") antara data input asli dan versi rekonstruksi dari output data tersebut oleh decoder. Beberapa algoritma, termasuk cross-entropy loss atau mean-squared error (MSE), dapat digunakan sebagai fungsi kehilangan rekonstruksi.

 Seperti yang dijelaskan sebelumnya, arsitektur autoencoder menciptakan hambatan yang memungkinkan hanya sebagian dari data input asli yang dapat diteruskan ke decoder. Pada awal pelatihan, yang biasanya dimulai dengan inisialisasi parameter model secara acak, encoder belum mempelajari bagian mana dari data yang harus diberi bobot lebih berat. Akibatnya, encoder pada awalnya akan menghasilkan representasi laten yang kurang optimal, dan decoder akan menghasilkan rekonstruksi input asli yang tidak akurat atau tidak lengkap.

Dengan meminimalkan kesalahan rekonstruksi melalui suatu bentuk penurunan gradien pada parameter jaringan encoder dan jaringan decoder, bobot model autoencoder akan disesuaikan sedemikian rupa sehingga menghasilkan pengkodean ruang laten yang lebih berguna (dan dengan demikian rekonstruksi yang lebih akurat). Secara matematis, tujuan dari fungsi reconstruction loss adalah untuk mengoptimalkan (z|x) , di mana θ mewakili parameter model yang menjalankan rekonstruksi yang akurat dari input x yang diberikan variabel laten z. 

Reconstruction loss saja sudah cukup untuk mengoptimalkan sebagian besar autoencoder, yang tujuan utamanya adalah menghasilkan representasi terkompresi dari pembelajaran atas data input yang kondusif untuk rekonstruksi yang akurat.

Namun, tujuan dari variational autoencoder bukanlah untuk merekonstruksi input asli; melainkan untuk menghasilkan sampel baru yang menyerupai input asli. Untuk alasan itu, diperlukan istilah pengoptimalan tambahan.

Divergensi Kullback-Leibler

Untuk tujuan inferensi variasi, yaitu pembuatan sampel baru oleh model terlatih, reconstruction loss saja dapat mengakibatkan pengkodean ruang laten yang tidak teratur karena terlalu sesuai dengan data pelatihan dan tidak dapat digeneralisasi dengan baik ke sampel baru. Oleh karena itu, VAE menggabungkan istilah regularisasi lainnya: Divergensi Kullback-Leibler, atau divergensi KL.

Untuk menghasilkan gambar, dekoder mengambil sampel dari ruang laten. Pengambilan sampel dari titik-titik tertentu dalam ruang laten yang mewakili input asli dalam data pelatihan akan mereplikasi input asli tersebut. Untuk menghasilkan gambar baru , VAE harus dapat mengambil sampel dari mana saja di ruang laten di antara titik data asli. Agar hal ini memungkinkan, ruang laten harus menunjukkan dua jenis keteraturan:

  • Kesinambungan: Titik terdekat di ruang laten akan menghasilkan konten yang serupa saat didekodekan atau diterjemahkan.
  • Kelengkapan: Setiap titik yang diambil sampelnya dari ruang laten harus menghasilkan konten yang bermakna ketika diterjemahkan.

Cara sederhana untuk mengimplementasikan kontinuitas dan kelengkapan dalam ruang laten adalah dengan membantu memastikan bahwa ruang laten mengikuti distribusi normal standar, yang disebut distribusi Gaussian. Tetapi meminimalkan reconstruction loss saja tidak memberikan insentif kepada model untuk mengatur ruang laten dengan cara tertentu, karena ruang "di antaranya" tidak relevan dengan rekonstruksi akurat dari titik data asli. Di sinilah istilah regularisasi divergensi KL berperan.

Divergensi KL adalah metrik yang digunakan untuk membandingkan dua distribusi probabilitas. Meminimalkan perbedaan KL antara distribusi variabel laten yang dipelajari dan distribusi Gaussian sederhana yang nilainya berkisar antara 0 hingga 1 memaksa pengkodean variabel laten yang dipelajari untuk mengikuti distribusi normal. Hal ini memungkinkan interpolasi halus pada titik mana pun di ruang laten, dan dengan demikian menghasilkan gambar baru.

Batas bawah bukti (ELBO)

Salah satu kendala dalam penggunaan divergensi KL untuk inferensi variasi adalah bahwa penyebut persamaan tersebut tidak dapat dipecahkan, artinya akan memakan waktu yang secara teoritis tidak terbatas untuk menghitungnya secara langsung. Untuk mengatasi masalah itu, dan mengintegrasikan kedua loss function utama, VAE memperkirakan minimalisasi divergensi KL dengan memaksimalkan batas bawah bukti (ELBO).

Dalam terminologi statistik, “bukti” dalam “batas bawah bukti” mengacu pada p(x), data input yang dapat diamati yang tampaknya perlu direkonstruksi oleh VAE. Variabel yang dapat diamati dalam data input itu adalah “bukti” untuk variabel laten yang ditemukan oleh autoencoder. “Batas bawah” mengacu pada estimasi kasus terburuk untuk log-likelihood dari distribusi tertentu. Log-likelihood yang sebenarnya mungkin lebih tinggi daripada ELBO.

Dalam konteks VAE, batas bawah bukti mengacu pada estimasi kasus terburuk dari kemungkinan distribusi posterior tertentu - dengan kata lain, output tertentu dari autoencoder, yang dikondisikan oleh istilah KL divergence loss dan istilah reconstruction loss - sesuai dengan "bukti" data pelatihan. Oleh karena itu, melatih model untuk inferensi variasional dapat menjadi rujukan dalam memaksimalkan ELBO.

Trik reparameterisasi

Seperti yang telah dibahas, tujuan dari inferensi variasi adalah untuk menghasilkan data baru dalam bentuk variasi acak dari data pelatihan x. Sekilas, hal ini relatif mudah: menggunakan fungsi ƒ yang memilih nilai acak untuk variabel laten z, yang kemudian dapat digunakan oleh decoder untuk menghasilkan perkiraan rekonstruksi x.

Namun, sifat yang melekat dari keacakan adalah tidak dapat dioptimalkan. Tidak ada nilai acak yang "terbaik"; vektor nilai acak, menurut definisi, tidak memiliki turunan - maksudnya, tidak ada gradien yang mengekspresikan pola apa pun dalam output model yang dihasilkan - dan oleh karena itu tidak dapat dioptimalkan melalui backpropagation (perambatan mundur) dengan menggunakan bentuk penurunan gradien apa pun. Artinya, jaringan neural yang menggunakan proses pengambilan sampel acak sebelumnya tidak dapat mempelajari parameter optimal untuk melakukan tugasnya.

Untuk menghindari kendala ini, VAE menggunakan trik reparameterisasi. Trik reparameterisasi memperkenalkan parameter baru, ε, yang merupakan nilai acak yang dipilih dari distribusi normal antara 0 dan 1.

Kemudian terjadi reparameterisasi variabel laten z sebagai z = μx + εσx. Secara lebih sederhana, trik ini memilih suatu nilai untuk variabel laten z dengan memulai dari nilai rata-rata variabel tersebut (yang direpresentasikan oleh μ) dan menggesernya dengan kelipatan acak (yang direpresentasikan oleh ε) dari suatu deviasi standar (σ). Dikondisikan oleh nilai spesifik z, decoder mengeluarkan sampel baru.

Karena nilai acak ε tidak berasal dari dan tidak ada hubungannya dengan parameter model autoencoder, maka nilai ini dapat diabaikan selama backpropagation. Model ini diperbarui melalui beberapa bentuk penurunan gradien, paling sering melalui Adam (tautan berada di luar ibm.com), algoritma optimasi berbasis gradien yang juga dikembangkan oleh Kingma, untuk memaksimalkan ELBO.

VAE Bersyarat (CVAE)

Salah satu kekurangan dari VAE “vanilla” konvensional adalah bahwa pengguna tidak memiliki kontrol atas output spesifik yang dihasilkan oleh autoencoder. Contohnya, VAE konvensional yang dilatih pada kumpulan data MNIST yang disebutkan sebelumnya akan menghasilkan sampel baru digit tulisan tangan dari 0 hingga 9, tetapi tidak dapat dibatasi untuk menghasilkan hanya 4 dan 7.

Seperti namanya, conditional VAE (CVAE) memungkinkan output yang dikondisikan oleh input tertentu, dan bukan hanya menghasilkan variasi data pelatihan secara acak. Hal ini dicapai dengan memasukkan elemen pembelajaran terawasi (atau pembelajaran semi-terawasi) di samping tujuan pelatihan autoencoder konvensional yang biasanya tidak terawasi.

Dengan lebih lanjut melatih model dengan contoh berlabel dari variabel tertentu, variabel tersebut dapat digunakan untuk mengondisikan output decoder. Sebagai contoh, CVAE dapat dilatih pertama kali pada kumpulan data gambar wajah yang besar, dan kemudian dilatih dengan menggunakan pembelajaran terawasi untuk mempelajari pengkodean laten untuk "jenggot" sehingga dapat menghasilkan gambar wajah berjenggot yang baru.

Tren AI terbaru, dipersembahkan oleh para pakar

Dapatkan kurasi insight tentang berita AI yang paling penting dan menarik. Berlangganan buletin Think mingguan. Lihat Pernyataan Privasi IBM.

Terima kasih! Anda telah berlangganan.

Langganan Anda akan dikirimkan dalam bahasa Inggris. Anda akan menemukan tautan berhenti berlangganan di setiap buletin. Anda dapat mengelola langganan atau berhenti berlangganan di sini. Lihat Pernyataan Privasi IBM kami untuk informasi lebih lanjut.

VAE versus GAN

VAE sering dibandingkan dengan generative adversarial networks (GAN), arsitektur model lain yang digunakan untuk menghasilkan sampel yang menyerupai data pelatihan, terutama untuk gambar.

Seperti VAE, GAN adalah arsitektur gabungan yang menggabungkan dua jaringan neural: jaringan generator yang bertanggung jawab untuk menghasilkan sampel gambar yang menyerupai gambar dari kumpulan data pelatihan dan jaringan diskriminator yang bertanggung jawab untuk menentukan apakah gambar tertentu adalah gambar "asli" dari data pelatihan atau gambar "palsu" dari jaringan generator.

Kedua jaringan dilatih secara berlawanan dalam permainan zero-sum: umpan balik dari diskriminator digunakan untuk meningkatkan output generator sampai diskriminator tidak lagi dapat membedakan antara sampel asli dan palsu.

Untuk sintesis gambar, keduanya memiliki kelebihan dan kekurangan: GAN menghasilkan gambar yang lebih jernih, tetapi tidak stabil dalam pelatihan karena adanya pertukaran yang berlawanan antara dua model komposit. VAE lebih mudah untuk dilatih, tetapi, karena mereka menghasilkan gambar dari fitur “rata-rata” dari data pelatihan, mereka cenderung menghasilkan gambar yang lebih buram.

VAE-GAN

VAE-GAN, seperti namanya, merupakan hibrida antara variational autoencoder (VAE) dan generative adversary network (GAN). VAE-GAN mengurangi keburaman gambar yang dihasilkan VAE dengan mengganti istilah reconstruction loss model VAE dengan jaringan diskriminator.

Gabungan Para Pakar | 28 Agustus, episode 70

Decoding AI: Rangkuman Berita Mingguan

Bergabunglah dengan panel insinyur, peneliti, pemimpin produk, dan sosok kelas dunia lainnya selagi mereka mengupas tuntas tentang AI untuk menghadirkan berita dan insight terbaru seputar AI.

Solusi terkait
IBM watsonx.ai

Latih, validasi, lakukan tuning, dan terapkan AI generatif, model dasar, dan kemampuan machine learning dengan IBM watsonx.ai, studio perusahaan generasi berikutnya untuk pembangun AI. Bangun aplikasi AI dalam waktu singkat, dengan sedikit data.

Temukan watsonx.ai
Solusi kecerdasan buatan (AI)

Gunakan AI di bisnis Anda dalam perpaduan antara keahlian AI terdepan di industri dari IBM dan portofolio solusi Anda.

Jelajahi solusi AI
Konsultasi dan layanan AI

Temukan kembali alur kerja dan operasi yang penting dengan menambahkan AI untuk memaksimalkan pengalaman, pengambilan keputusan secara real-time, dan nilai bisnis.

Jelajahi layanan AI
Ambil langkah selanjutnya

Dapatkan akses satu atap ke kemampuan yang mencakup siklus hidup pengembangan AI. Hasilkan solusi AI yang kuat dengan antarmuka ramah pengguna, alur kerja yang efisien, serta akses ke API dan SDK berstandar industri.

Jelajahi watsonx.ai Pesan demo langsung