Connect with us

AI 101

Apa itu Autoencoder?

mm

Jika Anda telah membaca tentang teknik pembelajaran tidak terawasi sebelumnya, Anda mungkin telah menemukan istilah “autoencoder”. Autoencoder adalah salah satu cara utama bahwa model pembelajaran tidak 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 sedekat mungkin. Melalui proses ini, autoencoder dapat mempelajari fitur penting dari data. Meskipun itu adalah definisi singkat dari autoencoder, itu akan bermanfaat 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 lapisan output memiliki jumlah unit yang sama adalah bahwa autoencoder bertujuan untuk mereplikasi data input. Ini mengeluarkan salinan data setelah menganalisis dan merekonstruksi dalam cara tidak 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 autoencoder, data dikodekan dan kemudian dikompresi ke ukuran yang lebih kecil. Jaringan kemudian dilatih pada data terkompresi dan mengeluarkan rekonstruksi data tersebut.

Jadi, mengapa Anda ingin melatih jaringan untuk hanya merekonstruksi data yang diberikan kepada itu? Alasan adalah bahwa jaringan mempelajari “esensi” atau 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 menghapus grain/kebisingan 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)

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

Bagian pengkode autoencoder biasanya adalah jaringan feedforward, terhubung dengan padat. Tujuan dari lapisan pengkodean adalah untuk mengambil data input dan mengompresinya menjadi representasi ruang laten, menghasilkan representasi baru dari data yang memiliki dimensionalitas yang berkurang.

Lapisan kode, atau bottleneck, menangani representasi data terkompresi. Kode bottleneck dirancang untuk menentukan bagian paling relevan dari data yang diamati, atau dengan kata lain, fitur data yang paling penting untuk rekonstruksi data. Tujuan di sini adalah untuk menentukan aspek mana dari data yang perlu dipertahankan dan mana yang dapat diabaikan. Lapisan bottleneck melakukan aktivasi elemen-bijak pada bobot dan bias jaringan. Lapisan bottleneck juga kadang-kadang disebut sebagai representasi laten atau variabel laten.

Lapisan dekoder bertanggung jawab untuk mengambil data terkompresi dan mengubahnya kembali menjadi 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 feedforward, dengan struktur yang mirip dengan lapisan persepsi tunggal yang digunakan dalam multilayer perceptrons. Seperti jaringan saraf feedforward reguler, autoencoder dilatih melalui penggunaan backpropagation.

Atribut Autoencoder

Ada beberapa jenis autoencoder, tetapi mereka semua memiliki sifat tertentu yang mempersatukannya.

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 berkurang saat pengkode berlanjut. Sementara itu, sebaliknya berlaku dalam dekoder, yang berarti jumlah node per lapisan harus meningkat saat lapisan dekoder mendekati lapisan terakhir. Akhirnya, fungsi kerugian autoencoder biasanya adalah entropi biner silang atau kesalahan kuadrat rata-rata. Entropi biner silang cocok untuk instance di mana nilai input data berada dalam rentang 0 – 1.

Jenis Autoencoder

Seperti yang disebutkan di atas, 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 khas. 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 statistik data input. Dengan kata lain, sementara lapisan tersembunyi autoencoder sparse memiliki lebih banyak unit daripada autoencoder tradisional, hanya persentase tertentu yang aktif pada waktu tertentu. Fungsi aktivasi paling berdampak dipertahankan dan yang lain diabaikan, dan konstrain ini membantu jaringan menentukan fitur paling penting dari data input.

Contractive

Autoencoder kontraktif dirancang untuk tahan terhadap variasi kecil dalam data, mempertahankan representasi konsisten dari data. Ini dicapai dengan menerapkan penalti pada fungsi kerugian. Teknik regularisasi ini didasarkan 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 konvolusional mengkodekan data input dengan membagi data menjadi subbagian dan kemudian mengubah subbagian ini menjadi sinyal sederhana yang dijumlahkan untuk membuat representasi baru dari data. Serupa dengan jaringan saraf konvolusional, autoencoder konvolusional 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, merefleksikan gambar, atau memodifikasi geometri gambar. Setelah filter dipelajari oleh jaringan, mereka dapat digunakan pada input yang cukup serupa untuk mengekstrak 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 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 data input asli dan tidak dengan input yang rusak. Tujuan adalah bahwa jaringan akan dapat mereproduksi versi asli, tidak rusak, dari gambar. Dengan membandingkan data yang rusak dengan data asli, jaringan mempelajari fitur mana dari data yang paling penting dan mana yang tidak penting/kerusakan. Dengan kata lain, agar model dapat mendenoising gambar yang rusak, itu harus telah mengekstrak fitur penting dari data gambar.

Variational

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

 

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

Ketika melatih jaringan, data terkoding 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 seperti reduksi dimensionalitas, denoising data, ekstraksi fitur, generasi gambar, prediksi urutan-ke-urutan, dan sistem rekomendasi.

Denoising data adalah penggunaan autoencoder untuk menghilangkan grain/kebisingan dari gambar. Serupa dengan itu, autoencoder dapat digunakan untuk memperbaiki kerusakan gambar lainnya, seperti gambar yang buram atau gambar yang hilang bagian. Reduksi dimensionalitas dapat membantu jaringan kapasitas tinggi mempelajari fitur 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 dari dataset pelatihan lain untuk melatih model lain.

Dalam hal generasi gambar, autoencoder dapat digunakan untuk menghasilkan gambar manusia palsu atau karakter animasi, yang memiliki aplikasi dalam merancang sistem pengenalan wajah atau mengotomatisasi 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 mendeteksi 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.