Dasar-dasar AI

Apa itu Autoencoder?

mm
Tambahkan Unite.AI ke sumber pilihan Anda di Google

Jika Anda telah membaca tentang teknik pembelajaran tak terawasi sebelumnya, Anda mungkin telah menemukan istilah “autoencoder”. Autoencoder adalah salah satu cara utama model pembelajaran tak terawasi dikembangkan. Namun, apa itu autoencoder secara tepat?

Secara singkat, autoencoder beroperasi dengan mengambil data, mengompresi dan mengkodekan data, dan kemudian merekonstruksi data dari representasi pengkodean. Model ini dilatih sampai kerugian diminimalkan dan data direproduksi seakurat mungkin. Melalui proses ini, autoencoder dapat mempelajari fitur-fitur penting dari data. Meskipun itu adalah definisi singkat dari autoencoder, akan lebih baik untuk melihat lebih dekat autoencoder dan memahami bagaimana mereka berfungsi. Artikel ini akan berusaha untuk memahami autoencoder, menjelaskan arsitektur autoencoder dan aplikasinya.

Apa itu Autoencoder?

Autoencoder adalah jaringan saraf. Jaringan saraf terdiri dari beberapa lapisan, dan aspek yang membedakan autoencoder adalah bahwa lapisan input mengandung informasi yang sama dengan lapisan output. Alasan bahwa lapisan input dan output memiliki jumlah unit yang sama adalah bahwa autoencoder bertujuan untuk mereplikasi data input. Ini mengeluarkan salinan data setelah menganalisis dan merekonstruksi dalam cara tak terawasi.

Data yang melewati autoencoder tidak hanya dipetakan langsung dari input ke output, yang berarti bahwa jaringan tidak hanya menyalin data input. Ada tiga komponen autoencoder: bagian pengkodean (input) yang mengompresi data, komponen yang menangani data terkompresi (atau bottleneck), dan bagian dekoder (output). Ketika data dimasukkan ke dalam autoencoder, data dikodekan dan kemudian dikompresi ke ukuran yang lebih kecil. Jaringan kemudian dilatih pada data terkompresi dan mengeluarkan rekonstruksi data tersebut.

Mengapa Anda ingin melatih jaringan untuk hanya merekonstruksi data yang diberikan? Alasan adalah bahwa jaringan mempelajari “esensi” atau fitur-fitur paling penting dari data input. Setelah Anda melatih jaringan, model dapat dibuat yang dapat mensintesis data serupa, dengan penambahan atau pengurangan fitur target tertentu. Misalnya, Anda dapat melatih autoencoder pada gambar yang buram dan kemudian menggunakan model terlatih untuk menghilangkan keburaman dari gambar.

Arsitektur Autoencoder

Mari kita lihat arsitektur autoencoder. Kami akan membahas arsitektur utama autoencoder di sini. Ada variasi pada arsitektur umum ini yang akan kita bahas di bagian di bawah.

Foto: Michela Massi via Wikimedia Commons,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

Sebagaimana disebutkan sebelumnya, autoencoder dapat dibagi menjadi tiga komponen yang berbeda: pengkode, bottleneck, dan dekoder.

Bagian pengkode autoencoder biasanya adalah jaringan feedforward, terhubung dengan rapat. Tujuan dari lapisan pengkodean adalah untuk mengambil data input dan mengompresinya ke dalam representasi ruang laten, menghasilkan representasi baru dari data yang memiliki dimensi yang lebih rendah.

Lapisan kode, atau bottleneck, menangani representasi data terkompresi. Bottleneck kode dirancang dengan hati-hati untuk menentukan bagian paling relevan dari data yang diamati, atau dengan kata lain, fitur-fitur data yang paling penting untuk merekonstruksi data. Tujuan di sini adalah untuk menentukan aspek-aspek data yang perlu dipertahankan dan yang dapat diabaikan. Bottleneck kode perlu menyeimbangkan dua pertimbangan yang berbeda: ukuran representasi (seberapa kompak representasi) dan relevansi variabel/fitur. Bottleneck melakukan aktivasi elemen-berdasarkan pada bobot dan bias jaringan. Lapisan bottleneck juga kadang-kadang disebut representasi laten atau variabel laten.

Lapisan dekoder adalah yang bertanggung jawab untuk mengambil data terkompresi dan mengubahnya kembali ke dalam representasi dengan dimensi yang sama dengan data asli, tidak berubah. Konversi dilakukan dengan representasi ruang laten yang dibuat oleh pengkode.

Arsitektur dasar autoencoder adalah arsitektur feed-forward, dengan struktur yang mirip dengan lapisan perseptron tunggal yang digunakan dalam jaringan saraf multilayer. Seperti jaringan saraf feed-forward biasa, autoencoder dilatih melalui penggunaan backpropagation.

Atribut Autoencoder

Ada beberapa jenis autoencoder, tetapi mereka semua memiliki sifat-sifat yang menyatukan mereka.

Autoencoder mempelajari secara otomatis. Mereka tidak memerlukan label, dan jika diberikan cukup data, mudah untuk mendapatkan autoencoder untuk mencapai kinerja tinggi pada jenis data input tertentu.

Autoencoder spesifik data. Ini berarti bahwa mereka hanya dapat mengompresi data yang sangat mirip dengan data yang autoencoder telah dilatih sebelumnya. Autoencoder juga lossy, yang berarti bahwa output model akan rusak dibandingkan dengan data input.

Ketika merancang autoencoder, insinyur pembelajaran mesin perlu memperhatikan empat hyperparameter model yang berbeda: ukuran kode, jumlah lapisan, node per lapisan, dan fungsi kerugian.

Ukuran kode menentukan berapa banyak node yang memulai bagian tengah jaringan, dan node yang lebih sedikit mengompresi data lebih. Dalam autoencoder yang dalam, sementara jumlah lapisan dapat berapa pun yang dianggap tepat oleh insinyur, jumlah node dalam lapisan harus menurun seiring dengan pengkode berlanjut. Sementara itu, sebaliknya berlaku dalam dekoder, yang berarti jumlah node per lapisan harus meningkat seiring dengan lapisan dekoder mendekati lapisan terakhir. Akhirnya, fungsi kerugian autoencoder biasanya adalah entropi biner silang atau kesalahan kuadrat rata-rata. Entropi biner silang sesuai untuk instance di mana nilai input data berada dalam rentang 0 – 1.

Jenis Autoencoder

Seperti yang disebutkan sebelumnya, variasi pada arsitektur autoencoder klasik ada. Mari kita lihat arsitektur autoencoder yang berbeda.

Sparse

Foto: Michela Massi via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

Sementara autoencoder biasanya memiliki bottleneck yang mengompresi data melalui pengurangan node, autoencoder sparse adalah alternatif untuk format operasional yang biasa. Dalam jaringan sparse, lapisan tersembunyi mempertahankan ukuran yang sama dengan lapisan pengkode dan dekoder. Sebaliknya, aktivasi dalam lapisan tertentu dikenakan penalti, sehingga fungsi kerugian lebih baik menangkap fitur-fitur statistik data input. Dengan kata lain, sementara lapisan tersembunyi autoencoder sparse memiliki lebih banyak unit daripada autoencoder tradisional, hanya sebagian kecil dari mereka yang aktif pada waktu tertentu. Fungsi aktivasi yang paling berdampak dipertahankan dan yang lain diabaikan, dan konstrain ini membantu jaringan menentukan fitur-fitur paling penting dari data input.

Contractive

Autoencoder contractive dirancang untuk tahan terhadap variasi kecil dalam data, mempertahankan representasi konsisten dari data. Ini dicapai dengan menerapkan penalti pada fungsi kerugian. Teknik regularisasi ini berdasarkan pada norma Frobenius dari matriks Jacobian untuk aktivasi pengkode input. Efek dari teknik regularisasi ini adalah bahwa model dipaksa untuk membangun pengkodean di mana input yang serupa akan memiliki pengkodean yang serupa.

Convolutional

Autoencoder convolutional mengkodekan data input dengan membagi data menjadi subbagian dan kemudian mengubah subbagian tersebut menjadi sinyal sederhana yang dijumlahkan untuk membuat representasi baru dari data. Serupa dengan jaringan saraf convolutional, autoencoder convolutional mengkhususkan diri dalam pembelajaran data gambar, dan menggunakan filter yang dipindahkan di seluruh bagian gambar. Pengkodean yang dihasilkan oleh lapisan pengkode dapat digunakan untuk merekonstruksi gambar, memantulkan gambar, atau memodifikasi geometri gambar. Setelah filter dipelajari oleh jaringan, filter dapat digunakan pada input yang cukup serupa untuk mengekstrak fitur-fitur gambar.

Denoising

Foto: MAL via Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

Autoencoder denoising memperkenalkan kebisingan ke dalam pengkodean, menghasilkan pengkodean yang merupakan versi rusak dari data input asli. Versi rusak dari data ini digunakan untuk melatih model, tetapi fungsi kerugian membandingkan nilai output dengan input asli dan tidak dengan input rusak. Tujuan adalah bahwa jaringan akan dapat mereproduksi versi asli, tidak rusak, dari gambar. Dengan membandingkan data rusak dengan data asli, jaringan mempelajari fitur-fitur mana dari data yang paling penting dan fitur-fitur mana yang tidak penting/rusak. Dengan kata lain, agar model dapat mendenoising gambar yang rusak, model harus telah mengekstrak fitur-fitur penting dari data gambar.

Variational

Autoencoder variational beroperasi dengan membuat asumsi tentang bagaimana variabel laten dari data didistribusikan. Autoencoder variational menghasilkan distribusi probabilitas untuk fitur-fitur yang berbeda dari gambar pelatihan/atribut laten. Ketika dilatih, pengkode menciptakan distribusi laten untuk fitur-fitur yang berbeda dari gambar input.

 

Karena model mempelajari fitur-fitur atau gambar sebagai distribusi Gaussian bukan nilai diskrit, model dapat digunakan untuk menghasilkan gambar baru. Distribusi Gaussian sampel untuk membuat vektor, yang dimasukkan ke dalam jaringan dekoding, yang merender gambar berdasarkan vektor sampel ini. Secara esensial, model mempelajari fitur-fitur umum dari gambar pelatihan dan memberikan mereka beberapa probabilitas bahwa mereka akan terjadi. Distribusi probabilitas dapat digunakan untuk merekayasa ulang gambar, menghasilkan gambar baru yang menyerupai gambar asli, pelatihan.

Ketika melatih jaringan, data terkoded dianalisis dan model pengenalan mengeluarkan dua vektor, menarik keluar mean dan standar deviasi dari gambar. Distribusi dibuat berdasarkan nilai-nilai ini. Ini dilakukan untuk keadaan laten yang berbeda. Dekoder kemudian mengambil sampel acak dari distribusi yang sesuai dan menggunakannya untuk merekonstruksi input awal ke jaringan.

Aplikasi Autoencoder

Autoencoder dapat digunakan untuk berbagai aplikasi, tetapi mereka biasanya digunakan untuk tugas-tugas seperti reduksi dimensi, denoising data, ekstraksi fitur, generasi gambar, prediksi urutan-ke-urutan, dan sistem rekomendasi.

Denoising data adalah penggunaan autoencoder untuk menghilangkan kebisingan dari gambar. Serupa dengan itu, autoencoder dapat digunakan untuk memperbaiki kerusakan gambar lainnya, seperti gambar yang buram atau gambar yang hilang bagian. Reduksi dimensi dapat membantu jaringan dengan kapasitas tinggi mempelajari fitur-fitur yang berguna dari gambar, yang berarti autoencoder dapat digunakan untuk melengkapi pelatihan jaringan saraf lainnya. Ini juga berlaku untuk menggunakan autoencoder untuk ekstraksi fitur, karena autoencoder dapat digunakan untuk mengidentifikasi fitur-fitur dari dataset pelatihan lain untuk melatih model lain.

Dalam hal generasi gambar, autoencoder dapat digunakan untuk menghasilkan gambar palsu manusia atau karakter animasi, yang memiliki aplikasi dalam merancang sistem pengenalan wajah atau mengotomatisasi aspek-aspek tertentu dari animasi.

Model prediksi urutan-ke-urutan dapat digunakan untuk menentukan struktur temporal dari data, yang berarti bahwa autoencoder dapat digunakan untuk menghasilkan peristiwa berikutnya dalam urutan. Untuk alasan ini, autoencoder dapat digunakan untuk menghasilkan video. Akhirnya, autoencoder yang dalam dapat digunakan untuk membuat sistem rekomendasi dengan menangkap pola yang terkait dengan minat pengguna, dengan pengkode menganalisis data keterlibatan pengguna dan dekoder membuat rekomendasi yang sesuai dengan pola yang telah ditetapkan.

Blogger dan programmer dengan spesialisasi di Machine Learning dan Deep Learning topik. Daniel berharap untuk membantu orang lain menggunakan kekuatan AI untuk kebaikan sosial.