Apa tujuan dari autoencoder?

10

Autoencoder adalah jaringan saraf yang mempelajari representasi terkompresi dari input untuk kemudian merekonstruksi, sehingga mereka dapat digunakan untuk pengurangan dimensi. Mereka terdiri dari encoder dan decoder (yang dapat memisahkan jaringan saraf). Pengurangan dimensi dapat berguna untuk menangani atau melemahkan masalah yang berkaitan dengan kutukan dimensi, di mana data menjadi jarang dan lebih sulit untuk mendapatkan "signifikansi statistik". Jadi, autoencoder (dan algoritma seperti PCA) dapat digunakan untuk menangani kutukan dimensi.

Mengapa kita peduli tentang pengurangan dimensi secara khusus menggunakan autoencoder? Mengapa kita tidak bisa menggunakan PCA, jika tujuannya adalah pengurangan dimensionalitas?

Mengapa kita perlu mendekompresi representasi laten dari input jika kita hanya ingin melakukan pengurangan dimensionalitas, atau mengapa kita memerlukan bagian decoder dalam autoencoder? Apa kasus penggunaannya? Secara umum, mengapa kita perlu mengompres input untuk kemudian mendekompresnya? Bukankah lebih baik menggunakan input asli saja?

nbro
sumber
1
Lihat juga pertanyaan stats.stackexchange.com/q/82416/82135 berikut tentang CrossValidated SE.
nbro

Jawaban:

6

Penting untuk memikirkan jenis pola apa dalam data yang diwakili.

Misalkan Anda memiliki dataset gambar skala abu-abu, sehingga setiap gambar memiliki intensitas yang seragam. Sebagai otak manusia, Anda akan menyadari bahwa setiap elemen dalam dataset ini dapat dijelaskan dalam parameter parameter numerik tunggal, yaitu nilai intensitas itu. Ini adalah sesuatu yang cocok untuk PCA, karena masing-masing dimensi (kita dapat menganggap setiap piksel sebagai dimensi yang berbeda) berkorelasi linear sempurna.

Misalkan Anda memiliki dataset gambar bitmap hitam dan putih 128x128px dari lingkaran terpusat. Sebagai otak manusia, Anda akan segera menyadari bahwa setiap elemen dalam set data ini dapat sepenuhnya dijelaskan oleh parameter numerik tunggal, yang merupakan jari-jari lingkaran. Itu adalah tingkat pengurangan yang sangat mengesankan dari 16384 dimensi biner, dan mungkin yang lebih penting itu adalah properti data yang bermakna secara semantik. Namun, PCA mungkin tidak akan dapat menemukan pola itu.

Pertanyaan Anda adalah "Mengapa kita tidak bisa menggunakan PCA, jika tujuannya adalah pengurangan dimensionalitas?" Jawaban sederhananya adalah bahwa PCA adalah alat paling sederhana untuk pengurangan dimensionalitas, tetapi PCA bisa kehilangan banyak hubungan yang mungkin ditemukan oleh teknik yang lebih kuat seperti autoencoder.

Josiah
sumber
3

Sebuah case use autoencoder (khususnya, dari decoder atau model generatif dari autoencoder) adalah untuk denoise input. Jenis autoencoder ini, yang disebut autoencoder denoising , mengambil input yang rusak sebagian dan mereka berupaya merekonstruksi input yang tidak rusak yang sesuai. Ada beberapa aplikasi model ini. Misalnya, jika Anda memiliki gambar yang rusak, Anda dapat berpotensi memulihkan yang tidak rusak menggunakan autoencoder denoising.

Autoencoder dan PCA terkait:

autoencoder dengan satu lapisan tersembunyi yang terhubung penuh, fungsi aktivasi linier dan fungsi biaya kesalahan kuadrat melatih bobot yang menjangkau subruang yang sama seperti yang direntang oleh vektor pemuatan komponen utama, tetapi tidak identik dengan vektor pemuatan.

Untuk info lebih lanjut, lihat makalah Dari Subruang Utama ke Komponen Utama dengan Linear Autoencoder (2018), oleh Elad Plaut. Lihat juga jawaban ini , yang juga menjelaskan hubungan antara PCA dan autoencoder.

nbro
sumber
3

PCA adalah metode linier yang menciptakan transformasi yang mampu mengubah proyeksi vektor (mengubah sumbu)

Karena PCA mencari arah varians maksimum, biasanya PCA memiliki diskriminatif tinggi. TAPI itu tidak menjamin bahwa arah varians maksimum adalah arah sebagian besar diskriminatif.

LDA adalah metode linier yang menciptakan transformasi yang mampu menemukan arah yang paling relevan untuk memutuskan apakah vektor termasuk kelas A atau B.

PCA dan LDA memiliki versi Kernel non-linear yang mungkin mengatasi keterbatasan liniernya.

Autoencoder dapat melakukan pengurangan dimensionalitas dengan jenis-jenis fungsi kehilangan lainnya, bisa non-linier dan mungkin berkinerja lebih baik daripada PCA dan LDA untuk banyak kasus.

Mungkin tidak ada algoritma pembelajaran mesin terbaik untuk melakukan apa pun, kadang-kadang Deep Learning dan Neural Nets berlebihan untuk masalah sederhana dan PCA dan LDA mungkin dicoba sebelum pengurangan dimensi lain yang lebih kompleks.

Pedro Henrique Monforte
sumber
1
Apa hubungannya LDA dengan pertanyaan?
nbro
LDA dapat digunakan sebagai pengurangan dimensi. Algoritma asli hanya menghasilkan satu proyeksi tetapi Anda dapat menggunakannya untuk mendapatkan arahan diskriminatif peringkat lebih rendah untuk pemodelan yang lebih akurat
Pedro Henrique Monforte
PCA juga tidak menjamin varians maksimum, karena merupakan algoritma serakah yang hanya mendekati maksimum.
Mathieu Bouville
PCA memiliki solusi tertutup, sumbu utama akan selalu menjadi de arah varian maksimum. Ini bukan algoritma serakah (tetapi dapat diimplementasikan sebagai satu)
Pedro Henrique Monforte
1
  1. Setengah decoder diperlukan untuk menghitung fungsi kerugian untuk melatih jaringan. Mirip dengan bagaimana 'musuh' masih diperlukan dalam GAN bahkan jika Anda hanya tertarik pada komponen generatif.
  2. Autoencoder dapat mempelajari embedding data non-linear, dan karenanya lebih kuat daripada PCA vanila.
  3. Autoencoder memiliki aplikasi di luar pengurangan dimensi:
    • Menghasilkan titik data baru, atau melakukan interpolasi (lihat VAE)
    • Buat filter denoising (mis. Dalam pemrosesan gambar)
    • Kompres / dekompresi data
    • Prediksi tautan (mis. Dalam penemuan obat)
brazofuerte
sumber