potongan Apa itu Autoencoder? - Bersatu.AI
Terhubung dengan kami

AI 101

Apa itu Autoencoder?

mm
Updated on

Jika Anda pernah membaca tentang teknik pembelajaran tanpa pengawasan sebelumnya, Anda mungkin pernah menemukan istilah “penyandi otomatis”. Autoencoder adalah salah satu cara utama pengembangan model pembelajaran tanpa pengawasan. Namun apa sebenarnya autoencoder itu?

Secara singkat, autoencoder beroperasi dengan mengambil data, mengompresi dan mengkodekan data, lalu merekonstruksi data dari representasi pengkodean. Model dilatih hingga kerugian diminimalkan dan data direproduksi semirip mungkin. Melalui proses ini, autoencoder dapat mempelajari fitur-fitur penting dari data. Meskipun itu adalah definisi singkat dari autoencoder, akan bermanfaat untuk melihat lebih dekat pada autoencoder dan mendapatkan pemahaman yang lebih baik tentang cara kerjanya. Artikel ini akan berusaha mengungkap autoencoder, menjelaskan arsitektur autoencoder dan aplikasinya.

Apa itu Autoencoder?

Autoencoder adalah jaringan saraf. Jaringan saraf terdiri dari beberapa lapisan, dan aspek yang menentukan dari autoencoder adalah bahwa lapisan input berisi informasi yang sama persis dengan lapisan output. Alasan mengapa lapisan input dan lapisan output memiliki jumlah unit yang sama persis adalah karena autoencoder bertujuan untuk mereplikasi data input. Ini mengeluarkan salinan data setelah menganalisisnya dan merekonstruksinya dengan cara yang tidak diawasi.

Data yang bergerak melalui autoencoder tidak hanya dipetakan langsung dari input ke output, artinya jaringan tidak hanya menyalin data input. Ada tiga komponen untuk autoencoder: bagian encoding (input) yang memampatkan data, komponen yang menangani data terkompresi (atau leher botol), dan bagian decoder (output). Ketika data dimasukkan ke dalam autoencoder, itu dikodekan dan kemudian dikompresi ke ukuran yang lebih kecil. Jaringan kemudian dilatih pada data yang disandikan/dikompresi dan menghasilkan rekreasi dari data tersebut.

Jadi mengapa Anda ingin melatih jaringan untuk hanya merekonstruksi data yang diberikan padanya? Alasannya adalah jaringan mempelajari "esensi", atau fitur terpenting dari data masukan. Setelah Anda melatih jaringan, sebuah model dapat dibuat yang dapat mensintesis data serupa, dengan penambahan atau pengurangan fitur target tertentu. Misalnya, Anda dapat melatih autoencoder pada gambar berbintik dan kemudian menggunakan model terlatih untuk menghilangkan bintik/gangguan dari gambar.

Arsitektur penyandi otomatis

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

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

Seperti disebutkan sebelumnya autoencoder pada dasarnya dapat dibagi menjadi tiga komponen yang berbeda: encoder, bottleneck, dan decoder.

Bagian encoder dari autoencoder biasanya merupakan jaringan feedforward yang terhubung secara padat. Tujuan dari lapisan pengkodean adalah untuk mengambil data input dan memampatkannya menjadi representasi ruang laten, menghasilkan representasi baru dari data yang telah mengurangi dimensi.

Lapisan kode, atau hambatan, berhubungan dengan representasi terkompresi dari data. Kode kemacetan dirancang dengan hati-hati untuk menentukan bagian yang paling relevan dari data yang diamati, atau dengan kata lain fitur data yang paling penting untuk rekonstruksi data. Tujuannya di sini adalah untuk menentukan aspek data mana yang perlu dipertahankan dan mana yang dapat dibuang. Kode kemacetan perlu menyeimbangkan dua pertimbangan yang berbeda: ukuran representasi (seberapa kompak representasi itu) dan relevansi variabel/fitur. Kemacetan melakukan aktivasi berdasarkan elemen pada bobot dan bias jaringan. Lapisan bottleneck juga terkadang disebut representasi laten atau variabel laten.

Lapisan dekoder adalah yang bertanggung jawab untuk mengambil data terkompresi dan mengubahnya kembali menjadi representasi dengan dimensi yang sama dengan data asli yang tidak diubah. Konversi dilakukan dengan representasi ruang laten yang dibuat oleh encoder.

Arsitektur paling dasar dari autoencoder adalah arsitektur feed-forward, dengan struktur seperti perceptron lapisan tunggal yang digunakan dalam perceptron multilayer. Sama seperti jaringan saraf feed-forward biasa, auto-encoder dilatih melalui penggunaan backpropagation.

Atribut Autoencoder

Ada berbagai jenis autoencoder, tetapi semuanya memiliki properti tertentu yang menyatukannya.

Autoencoder belajar secara otomatis. Mereka tidak memerlukan label, dan jika diberi data yang cukup, mudah untuk mendapatkan pembuat enkode otomatis untuk mencapai kinerja tinggi pada jenis data masukan tertentu.

Autoencoder bersifat khusus data. Ini berarti bahwa mereka hanya dapat memampatkan data yang sangat mirip dengan data yang telah dilatih oleh autoencoder. Autoencoder juga bersifat lossy, artinya keluaran model akan terdegradasi dibandingkan dengan data masukan.

Saat merancang autoencoder, teknisi pembelajaran mesin perlu memperhatikan empat hyperparameter model yang berbeda: ukuran kode, nomor lapisan, node per lapisan, dan fungsi kerugian.

Ukuran kode menentukan berapa banyak node yang memulai bagian tengah jaringan, dan lebih sedikit node yang memampatkan data lebih banyak. Dalam autoencoder yang dalam, sementara jumlah lapisan dapat berupa angka berapa pun yang dianggap sesuai oleh insinyur, jumlah node dalam lapisan harus berkurang seiring berjalannya pembuat enkode. Sementara itu, kebalikannya berlaku di decoder, yang berarti jumlah node per lapisan harus meningkat saat lapisan decoder mendekati lapisan terakhir. Akhirnya, fungsi kerugian dari sebuah autoencoder biasanya berupa binary cross-entropy atau mean squared error. Binary cross-entropy sesuai untuk contoh di mana nilai input data berada dalam kisaran 0 – 1.

Jenis penyandi otomatis

Seperti disebutkan di atas, ada variasi pada arsitektur autoencoder klasik. Mari kita periksa berbagai arsitektur autoencoder.

Jarang

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

Sementara autoencoder biasanya memiliki hambatan yang memampatkan data melalui pengurangan node, autoencoder jarangs adalah alternatif untuk format operasional biasa itu. Dalam jaringan yang jarang, lapisan tersembunyi mempertahankan ukuran yang sama dengan lapisan encoder dan decoder. Alih-alih, aktivasi dalam lapisan tertentu dihukum, mengaturnya sehingga fungsi kerugian menangkap fitur statistik data input dengan lebih baik. Dengan kata lain, sementara lapisan tersembunyi dari autoencoder jarang memiliki lebih banyak unit daripada autoencoder tradisional, hanya persentase tertentu dari mereka yang aktif pada waktu tertentu. Fungsi aktivasi yang paling berdampak dipertahankan dan yang lainnya diabaikan, dan batasan ini membantu jaringan menentukan hanya fitur yang paling menonjol dari data masukan.

Kontraktif

Autoencoder kontraktif dirancang agar tahan terhadap variasi kecil dalam data, mempertahankan representasi data yang konsisten. Ini dilakukan dengan menerapkan penalti pada fungsi kerugian. Teknik regularisasi ini didasarkan pada norma Frobenius dari matriks Jacobian untuk aktivasi encoder input. Efek dari teknik regularisasi ini adalah model dipaksa untuk membuat pengkodean di mana input serupa akan memiliki pengkodean serupa.

Convolutional

Autoencoder konvolusional menyandikan data input dengan membagi data menjadi subbagian dan kemudian mengubah subbagian ini menjadi sinyal sederhana yang dijumlahkan bersama untuk membuat representasi data yang baru. Mirip dengan jaringan saraf konvolusi, autoencoder konvolusional berspesialisasi dalam pembelajaran data gambar, dan menggunakan filter yang dipindahkan ke seluruh bagian gambar demi bagian. Pengkodean yang dihasilkan oleh lapisan pengkodean dapat digunakan untuk merekonstruksi gambar, memantulkan gambar, atau memodifikasi geometri gambar. Setelah filter dipelajari oleh jaringan, filter tersebut dapat digunakan pada input yang cukup mirip untuk mengekstraksi fitur gambar.

Mencela

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

Denoising autoencoder memperkenalkan kebisingan ke dalam pengkodean, menghasilkan pengkodean yang merupakan versi rusak dari input data asli. Versi data yang rusak ini digunakan untuk melatih model, tetapi fungsi kerugian membandingkan nilai keluaran dengan masukan asli dan bukan masukan yang rusak. Tujuannya agar jaringan dapat mereproduksi versi gambar asli yang tidak rusak. Dengan membandingkan data yang rusak dengan data aslinya, jaringan mempelajari fitur data mana yang paling penting dan fitur mana yang tidak penting/rusak. Dengan kata lain, agar sebuah model dapat menolak citra yang rusak, ia harus mengekstraksi fitur-fitur penting dari data citra.

Variasi

Autoencoder variasi beroperasi dengan membuat asumsi tentang bagaimana variabel laten data didistribusikan. Autoencoder variasi menghasilkan distribusi probabilitas untuk berbagai fitur gambar pelatihan/atribut laten. Saat pelatihan, pembuat enkode membuat distribusi laten untuk berbagai fitur gambar masukan.

 

Karena model mempelajari fitur atau gambar sebagai distribusi Gaussian, bukan nilai diskrit, model ini dapat digunakan untuk menghasilkan gambar baru. Distribusi Gaussian diambil sampelnya untuk membuat vektor, yang dimasukkan ke dalam jaringan decoding, yang merender gambar berdasarkan vektor sampel ini. Pada dasarnya, model mempelajari fitur-fitur umum dari gambar pelatihan dan memberi mereka beberapa kemungkinan bahwa hal itu akan terjadi. Distribusi probabilitas kemudian dapat digunakan untuk merekayasa balik suatu gambar, menghasilkan gambar baru yang menyerupai gambar pelatihan asli.

Saat melatih jaringan, data yang disandikan dianalisis dan model pengenalan mengeluarkan dua vektor, menggambarkan rata-rata dan standar deviasi 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 berbagai aplikasi, tetapi mereka biasanya digunakan untuk tugas-tugas seperti pengurangan dimensi, denoising data, ekstraksi fitur, pembuatan gambar, prediksi urutan ke urutan, dan sistem rekomendasi.

Denoising data adalah penggunaan autoencoder untuk menghapus grain/noise dari gambar. Demikian pula, autoencoder dapat digunakan untuk memperbaiki jenis kerusakan gambar lainnya, seperti gambar buram atau bagian gambar yang hilang. Pengurangan dimensi dapat membantu jaringan berkapasitas tinggi mempelajari fitur gambar yang berguna, artinya autoencoder dapat digunakan untuk menambah pelatihan jenis jaringan saraf lainnya. Ini juga berlaku untuk penggunaan autoencoder untuk ekstraksi fitur, karena autoencoder dapat digunakan untuk mengidentifikasi fitur dari kumpulan data pelatihan lain untuk melatih model lain.

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

Model prediksi urutan ke urutan dapat digunakan untuk menentukan struktur temporal data, artinya autoencoder dapat digunakan untuk menghasilkan berikutnya bahkan dalam urutan. Untuk alasan ini, autoencoder dapat digunakan untuk menghasilkan video. Terakhir, deep autoencoder dapat digunakan untuk membuat sistem rekomendasi dengan mengambil pola yang berkaitan dengan minat pengguna, dengan encoder menganalisis data keterlibatan pengguna dan decoder membuat rekomendasi yang sesuai dengan pola yang telah ditetapkan.

Blogger dan programmer dengan spesialisasi di Pembelajaran mesin dan Belajar mendalam topik. Daniel berharap dapat membantu orang lain menggunakan kekuatan AI untuk kebaikan sosial.