Parameter Autoencoder [Hyper] Jarang

8

Saya baru saja mulai menggunakan paket autoencoder di R.

Input ke autoencode()fungsi termasuk lambda, beta, rho dan epsilon.

Apa batasan untuk nilai-nilai ini? Apakah mereka berbeda untuk setiap fungsi aktivasi? Apakah parameter ini disebut "hyperparameters"?

Dengan asumsi autoencoder yang jarang, apakah rho = .01 baik untuk fungsi aktivasi logistik dan rho = -. 9 baik untuk fungsi aktivasi tangen hiperbolik?

Mengapa manual mengatur epsilon ke 0,001? Jika saya ingat dengan benar, "Backpropagation Efisien" oleh LeCun merekomendasikan nilai awal yang tidak begitu dekat dengan nol.

Berapa nilai "baik" untuk materi beta?

Apakah ada "aturan praktis" untuk memilih jumlah nueron di lapisan tersembunyi? Sebagai contoh, jika lapisan input memiliki N node, apakah masuk akal untuk memiliki 2N nueron di dalam lapisan tersembunyi?

Bisakah Anda merekomendasikan beberapa literatur tentang penggunaan praktis autoencoder?

kekuasaan
sumber

Jawaban:

10

The autoencoderpaket hanya sebuah implementasi dari autoencoder dijelaskan dalam Andrew Ng catatan kelas , yang mungkin menjadi titik awal yang baik untuk membaca lebih lanjut. Sekarang, untuk menjawab pertanyaan Anda


Orang kadang-kadang membedakan antara parameter , yang menghitung algoritma pembelajaran itu sendiri, dan hyperparameters , yang mengontrol proses pembelajaran dan perlu disediakan untuk algoritma pembelajaran. Penting untuk disadari bahwa TIDAK ADA NILAI SIHIR untuk hiperparameter. Nilai optimal akan bervariasi, tergantung pada data yang Anda modelkan: Anda harus mencobanya pada data Anda.

a) Lambda (λ) mengontrol bagaimana bobot diperbarui selama backpropagation. Alih-alih hanya memperbarui bobot berdasarkan perbedaan antara output model dan kebenaran dasar), fungsi biaya mencakup istilah yang menghukum bobot besar (sebenarnya nilai kuadrat dari semua bobot). Lambda mengontrol kepentingan relatif dari hukuman ini, yang cenderung menyeret bobot ke nol dan membantu menghindari overfitting.

b) Rho (ρ) dan beta (β) mengontrol sparseness. Rho adalah aktivasi yang diharapkan dari unit tersembunyi (rata-rata di seluruh set pelatihan). Representasi akan menjadi lebih jarang dan lebih jarang karena menjadi lebih kecil. Sparseness ini diberlakukan dengan menyesuaikan istilah bias, dan beta mengontrol ukuran pembaruannya. (Sepertinyaβ sebenarnya hanya meningkatkan kembali tingkat pembelajaran keseluruhan α.)

c) Epsilon (ϵ) mengontrol nilai bobot awal, yang diambil secara acak dari N(0,ϵ2).

Nilai rho Anda tampaknya tidak masuk akal karena keduanya berada di dekat bagian bawah rentang fungsi aktivasi (0 hingga 1 untuk logistik, -1 hingga 1 untuk tanh). Namun, ini jelas tergantung pada jumlah sparseness yang Anda inginkan dan jumlah unit tersembunyi yang Anda gunakan juga.


Perhatian utama LeCunn dengan bobot kecil bahwa permukaan kesalahan menjadi sangat datar di dekat titik asal jika Anda menggunakan sigmoid simetris. Di tempat lain dalam makalah itu, ia merekomendasikan untuk memulai dengan bobot yang diambil secara acak dari distribusi normal dengan nol rata-rata danm1/2 standar deviasi, di mana m adalah jumlah koneksi yang diterima setiap unit.


Ada banyak "aturan praktis" untuk memilih jumlah unit tersembunyi. Tebakan awal Anda (input 2x) tampaknya sejalan dengan sebagian besar dari mereka. Yang mengatakan, perkiraan waktu ini lebih dari perkiraan. Dengan asumsi Anda memiliki kekuatan pemrosesan, saya akan melakukan kesalahan di sisi unit yang lebih tersembunyi, kemudian menegakkan sparseness dengan nilai rho yang rendah.
Salah satu penggunaan autoencoder yang jelas adalah untuk menghasilkan representasi fitur yang lebih ringkas untuk algoritma pembelajaran lainnya. Gambar mentah mungkin memiliki jutaan piksel, tetapi autoencoder (jarang) dapat merepresentasikan kembali dalam ruang yang jauh lebih kecil. Geoff Hinton (dan lainnya) telah menunjukkan bahwa mereka menghasilkan fitur yang berguna untuk klasifikasi selanjutnya. Beberapa pekerjaan pembelajaran yang mendalam menggunakan autoencoder atau mirip dengan pra-jaringan. Vincent et al. gunakan autoencoder secara langsung untuk melakukan klasifikasi.

Kemampuan untuk menghasilkan representasi fitur yang ringkas dapat digunakan dalam konteks lain juga. Berikut adalah proyek kecil yang rapi di mana status autoencoder digunakan untuk memandu algoritma pembelajaran penguatan melalui game Atari .

Akhirnya, kita juga dapat menggunakan autoencoder untuk merekonstruksi input berisik atau terdegradasi, seperti itu , yang dapat menjadi akhir yang berguna dalam dan dari dirinya sendiri.

Matt Krause
sumber
Terima kasih. Jadi kenapa beta = 6dalam autoencoderkode contoh?
power
1
Sepertinya itu hanya faktor tingkat / skala pembelajaran. Jika Anda melihat persamaan 9 teks, pembaruan unit diskalakan oleh alpha, tetapi pembaruan bias diskalakan olehαβ. Jikaβ=6, maka pembaruan bias 6x lebih cepat ...
Matt Krause
1
Terima kasih sudah menerima! Saya telah memikirkan sesuatu yang serupa untuk pekerjaan dan itu menyenangkan untuk menuliskannya. Di masa mendatang, Anda mungkin lebih beruntung mengajukan pertanyaan yang lebih kecil (mis., Bertanya tentang kisaran, nilai awal, dan unit tersembunyi secara terpisah). Orang-orang sepertinya menyukai jawaban yang bisa mereka tolak dalam sepuluh menit.
Matt Krause
Ya, masuk akal. Terutama jika Anda hanya memiliki 10 menit downtime di tempat kerja.
daya
2

Beberapa bagian dari jawaban Matt Krause menurut saya tidak benar (Lambda dan Beta), juga epsilon tidak disebutkan. Sebenarnya posting ini harus menjadi komentar, tapi saya menjawab pertanyaan karena 50 pembatasan reputasi. Jangan ragu untuk berkomentar jika Anda melihat kesalahan.

Dari http://web.stanford.edu/class/archive/cs/cs294a/cs294a.1104/sparseAutoencoder.pdf Lambda adalah koefisien istilah peluruhan bobot yang mencegah bobot untuk mencapai nilai besar karena mungkin sesuai. Bobot pembusukan berat (atau berat regularisasi istilah) adalah bagian dari fungsi biaya seperti istilah sparsity dijelaskan di bawah ini.

rho adalah batasan sparsity yang mengontrol jumlah rata-rata aktivasi pada lapisan tersembunyi. Ini disertakan untuk membuat autoencoder berfungsi bahkan dengan jumlah unit tersembunyi yang relatif besar sehubungan dengan unit input. Misalnya, jika ukuran input adalah 100 dan ukuran tersembunyi adalah 100 atau lebih besar (bahkan lebih kecil tetapi mendekati 100), output dapat dibangun tanpa kehilangan, karena unit tersembunyi dapat mempelajari fungsi identitas. Beta adalah koefisien dari istilah sparsity yang merupakan bagian dari fungsi biaya. Ini mengontrol kepentingan relatif dari istilah sparsity. Lambda dan Beta menentukan kepentingan relatif dari istilah mereka dalam fungsi biaya.

Epsilon (jika mereka menggunakan notasi yang sama dengan Andrew Ng) adalah parameter regularisasi untuk proses pemutihan yang memiliki efek filter low-pass pada input. Itu memiliki beberapa efek penting pada metode rekonstruksi. Periksa tautan untuk itu dalam model berbasis rekonstruksi. Saya pikir mereka telah menggunakan aktivasi linier untuk lapisan keluaran dan menggunakan beberapa jenis pemutihan (fitur univariat).

Perbarui laju parameter (bobot dan bias) disebut laju pembelajaran dan dilambangkan dengan eta secara umum. Namun, telah digunakan sebagai alpha oleh Andrew Ng. Periksa tautan pertama.

yasin.yazici
sumber
Anda benar - saya agak tidak jelas tentang lambda dan membuatnya agak seperti tingkat pembelajaran keseluruhan. Saya harap hasil edit membantu. Saya pikir notasinya agak berbeda untuk epsilon. Baik catatan dan kode menyarankan itu adalah penyimpangan std dari nilai awal, yang diambil dari N (0,ϵ2).
Matt Krause