Bagaimana autoencoder digunakan untuk pengelompokan?


9

Misalkan saya memiliki satu set sinyal domain waktu dengan sama sekali tidak ada label . Saya ingin mengelompokkannya dalam 2 atau 3 kelas. Autoencoder adalah jaringan tanpa pengawasan yang belajar mengompresi input. Jadi diberi input , bobot dan , bias dan , dan output , kita dapat menemukan hubungan berikut:x(i)W1W2b1b2x^(i)

z(i)=W1x(i)+b1
x^(i)=W2z(i)+b2

Jadi akan menjadi bentuk terkompresi dari , dan rekonstruksi yang terakhir. Sejauh ini bagus.z(i)x(i)x^(i)

Apa yang saya tidak mengerti adalah bagaimana ini bisa digunakan untuk pengelompokan (jika ada cara untuk melakukannya sama sekali). Sebagai contoh, pada gambar pertama dari makalah ini , ada diagram blok Saya tidak yakin saya mengerti. Ia menggunakan sebagai input ke jaringan umpan-maju, tetapi tidak disebutkan bagaimana jaringan itu dilatih. Saya tidak tahu apakah ada sesuatu yang saya abaikan atau apakah kertasnya tidak lengkap. Juga, tutorial ini pada bagian akhir menunjukkan bobot yang dipelajari oleh autoencoder, dan mereka tampaknya adalah kernel yang CNN akan belajar untuk mengklasifikasikan gambar. Jadi ... Saya kira bobot autoencoder dapat digunakan entah bagaimana di jaringan umpan-maju untuk klasifikasi, tapi saya tidak yakin bagaimana caranya.z(i)

Keraguan saya adalah:

  1. Jika adalah sinyal domain waktu dengan panjang (yaitu ), dapat hanya menjadi vektor juga? Dengan kata lain, apakah masuk akal jika menjadi matriks dengan salah satu dimensinya lebih besar dari ? Saya percaya tidak akan, tetapi saya hanya ingin memeriksa.x(i)Nx(i)R1×Nz(i)z(i)1
  2. Manakah dari jumlah ini yang akan menjadi input ke pengklasifikasi? Sebagai contoh, jika saya ingin menggunakan MLP klasik yang memiliki unit output sebanyak kelas yang saya ingin mengklasifikasikan sinyal, apa yang harus saya masukkan pada input dari jaringan yang sepenuhnya terhubung ini ( , , ada hal lain)?z(i)x^(i)
  3. Bagaimana saya bisa menggunakan bobot dan bias yang dipelajari dalam MLP ini? Ingatlah bahwa kami mengasumsikan sama sekali tidak ada label yang tersedia, jadi tidak mungkin untuk melatih jaringan. Saya pikir dan harus berguna entah bagaimana dalam jaringan yang sepenuhnya terhubung, tetapi saya tidak melihat bagaimana menggunakannya.Wibi

Pengamatan: perhatikan bahwa saya menggunakan MLP sebagai contoh karena ini adalah arsitektur paling dasar, tetapi pertanyaannya berlaku untuk jaringan saraf lain yang dapat digunakan untuk mengklasifikasikan sinyal domain waktu.

Jawaban:


11

Pengelompokan sulit dilakukan dalam dimensi tinggi karena jarak antara sebagian besar pasangan titik serupa. Menggunakan autoencoder memungkinkan Anda merepresentasikan kembali titik dimensi tinggi dalam ruang dimensi rendah. Itu tidak melakukan pengelompokan per se - tetapi itu adalah langkah preprocessing berguna untuk langkah pengelompokan sekunder. Anda akan memetakan setiap input vektor ke vektor (bukan matriks ...) dengan dimensi yang lebih kecil, misalnya 2 atau 3. Anda kemudian akan menggunakan beberapa algoritma pengelompokan lainnya pada semua nilai . xizizi

Mungkin ada orang lain yang bisa menggunakan auto-encoders untuk deret waktu, karena saya belum pernah melakukannya. Saya menduga bahwa Anda ingin salah satu lapisan menjadi lapisan konvolusional 1D, tapi saya tidak yakin.

Beberapa orang menggunakan autoencoder sebagai langkah pra-pemrosesan data untuk klasifikasi juga. Dalam hal ini, Anda pertama kali akan menggunakan autoencoder untuk menghitung -to- pemetaan, dan kemudian membuang -to- bagian dan menggunakan -to- pemetaan sebagai lapisan pertama dalam MLP.xzzx^xz


Dan dalam kasus terakhir, bagaimana bobot lapisan lain dalam MLP dapat dipelajari jika data benar-benar tidak berlabel? Atau apakah pendekatan itu (yaitu kombinasi autoencoder-MLP) hanya masuk akal jika label tersedia?
Tendero

Ya, MLP (alias jaringan umpan-maju) hanya benar-benar digunakan jika data diberi label. Kalau tidak, Anda tidak memiliki info untuk digunakan untuk memperbarui bobot. Autoencoder adalah semacam 'trik' cara untuk menggunakan jaringan saraf karena Anda mencoba memprediksi input asli dan tidak perlu label.
tom

Jadi satu-satunya cara untuk menggunakan NN untuk melakukan clustering adalah metode yang Anda sebutkan, kan? Yaitu, gunakan autoencoder dan kemudian jalankan algoritma pengelompokan standar seperti K-means.
Tendero

Itulah satu-satunya cara saya tahu. Jika orang lain punya ide saya akan senang mendengarnya. Anda dapat mencoba algoritma lain selain K-means, karena ada beberapa asumsi yang sangat ketat terkait dengan algoritma tertentu (tapi tetap merupakan hal yang baik untuk mencoba terlebih dahulu b / c dengan cepat dan mudah).
tom

1

Sebelum bertanya 'bagaimana autoencoder dapat digunakan untuk mengelompokkan data?' pertama-tama kita harus bertanya 'Bisakah autoencoder mengelompokkan data?'


Karena autoencoder belajar membuat ulang titik data dari ruang laten. Jika kita mengasumsikan bahwa autoencoder memetakan ruang laten secara “terus menerus”, titik data yang dari cluster yang sama harus dipetakan bersama. Karenanya dengan cara tertentu, pembuat enkode akan mengelompokkan titik yang sama "bersama", mengelompokkannya "bersama". Kami telah melihat dalam literatur bahwa autoencoder gagal untuk memegang asumsi kesinambungan dalam ruang laten.

Namun demi keuntungan kami, autoencoder variasional bekerja persis seperti ini. Encoder variabel mempelajari pemetaan ruang laten dengan dua sifat utama: kontinuitas, kelengkapan1.
  • Properti kontinuitas memastikan bahwa dua titik yang berdekatan satu sama lain dalam ruang laten tidak memberikan dua output yang sama sekali berbeda ketika diterjemahkan.
  • Properti kelengkapan memastikan bahwa pada pengambilan sampel suatu titik dari ruang laten akan memberikan output yang bermakna ketika diterjemahkan.

Oleh karena itu menggunakan pengkodean autoencoder itu sendiri, kadang-kadang cukup. Namun, pekerjaan telah dilakukan untuk berimprovisasi / mempelajari pengelompokan secara eksplisit. Algoritma yang dikemukakan oleh Xie et al. (2016) 2 adalah contoh, yang "secara iteratif memperbaiki kluster dengan distribusi target tambahan yang berasal dari penugasan klaster lunak saat ini."

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.