Apakah ada perbedaan antara pelatihan autoencoder bertumpuk dan jaringan saraf 2-lapisan?

14

Katakanlah saya sedang menulis sebuah algoritma untuk membangun 2-layer autoencoder dan 2-layer neural network. Apakah keduanya sama atau berbeda?

Apa yang saya pahami adalah bahwa ketika saya membuat autoencoder bertumpuk, saya akan membangun lapis demi lapis. Untuk jaringan saraf, saya akan menginisialisasi semua parameter di netowork, dan kemudian untuk setiap titik data, saya melewatkannya melalui jaringan dan menghitung kerugian (misalnya, jarak nuklir) dan melakukan backpropagation.

RockTheStar
sumber

Jawaban:

16

Autoencoder bertumpuk dan jaringan saraf multi-layer berbeda. Dalam praktiknya, Anda akan memiliki dua jaringan yang berbagi bobot dan mungkin berbagi buffer memori. Jadi dalam implementasi Anda, dua jaringan menjadi terjalin.

Biasanya, autoencoder dilatih dengan cara yang tidak diawasi, serakah, dan bijaksana. (Tanpa label, mulailah pelatihan hanya dengan lapisan pertama dari jaringan dan kemudian tambahkan lapisan baru saat Anda pergi.) Bobot dapat dipelajari dengan menggunakan berbagai teknik mulai dari keturunan gradien "batch" (tolong jangan lakukan itu), untuk mini-batch stochastic gradient descent (SGD), ke metode kuasi-Newton seperti L-BFGS.

Idenya adalah bahwa bobot yang dipelajari dengan cara yang tidak terawasi untuk meminimalkan kesalahan rekonstruksi untuk tugas pembelajaran representasi menawarkan titik awal yang baik untuk menginisialisasi jaringan untuk tugas diskriminatif yang diawasi seperti klasifikasi atau kesamaan. Yaitu, jaringan mempelajari sesuatu tentang distribusi yang mendasarinya dengan melihat data yang tidak berlabel, yang memungkinkannya untuk membedakan antara data yang diberi label. Namun, bobotnya masih harus "disesuaikan" untuk tugas baru ini. Jadi tambahkan lapisan regresi logistik di bagian atas jaringan dan kemudian lakukan pembelajaran terawasi dengan dataset berlabel. Langkah fine tuning akan melakukan gradient descent dan mengatur bobot untuk semua layer dalam jaringan secara bersamaan.

Keuntungan dari cara pelatihan jaring saraf ini adalah:

  1. Pelatihan tanpa pengawasan memungkinkan Anda menampilkan lebih banyak data pada jaringan karena jauh lebih mudah untuk mendapatkan kumpulan data besar tanpa pengawasan daripada mendapatkan yang berlabel.
  2. Anda dapat menggunakan jaringan pra-terlatih sebagai "titik awal" untuk melatih pengklasifikasi baru sehingga Anda tidak harus memulai dari awal setiap kali.

Untuk makalah ini, lihat Autoencoder denoising bertumpuk: Mempelajari representasi berguna dalam jaringan yang mendalam dengan kriteria denoising lokal .

sabalaba
sumber
Saya bingung tentang langkah kedua di mana Anda melatih lapisan pengkodean dengan lapisan klasifikasi (misalnya lapisan softmax) untuk tugas klasifikasi. Apakah Anda menggunakan kembali dataset pelatihan lagi untuk bagian ini untuk mempelajari label? Saya menemukan ini aneh karena set pelatihan hanya digunakan untuk mempelajari perkiraan itu sendiri.
pria
Tidak masuk akal jika Anda memiliki semua data yang berlabel. Ini lebih untuk situasi di mana Anda memiliki lebih banyak data yang tidak berlabel untuk pra-latihan dan kemudian menggunakan data "pelatihan" berlabel untuk menyempurnakan.
meow