Jaringan saraf saya bahkan tidak bisa belajar jarak Euclidean

9

Jadi saya mencoba untuk belajar sendiri jaringan saraf (untuk aplikasi regresi, bukan mengklasifikasikan gambar kucing).

Eksperimen pertama saya adalah melatih jaringan untuk mengimplementasikan filter FIR dan Discrete Fourier Transform (pelatihan pada sinyal "sebelum" dan "setelah"), karena keduanya adalah operasi linier yang dapat diimplementasikan oleh satu lapisan tanpa fungsi aktivasi. Keduanya bekerja dengan baik.

Jadi saya ingin melihat apakah saya bisa menambahkan abs()dan membuatnya belajar spektrum amplitudo. Pertama saya berpikir tentang berapa banyak node yang dibutuhkan di lapisan tersembunyi, dan menyadari bahwa 3 ReLU cukup untuk perkiraan kasar abs(x+jy) = sqrt(x² + y²), jadi saya menguji operasi itu sendiri pada bilangan kompleks tunggal (2 input → 3 node ReLU hidden layer → 1 keluaran). Kadang-kadang berhasil:

3 ReLU menerapkan jarak Euclidean sebagai piramida heksagonal terbalik

Tetapi sebagian besar waktu saya mencobanya, macet di minimum lokal dan gagal menemukan bentuk yang tepat:

3 ReLU membentuk jaringan berbentuk lembah

kerugian vs zaman

Saya sudah mencoba semua pengoptimal dan varian ReLU di Keras, tetapi mereka tidak membuat banyak perbedaan. Apakah ada hal lain yang bisa saya lakukan untuk membuat jaringan sederhana seperti ini bertemu secara andal? Atau apakah saya hanya mendekati ini dengan sikap yang salah, dan Anda seharusnya hanya membuang lebih banyak node daripada yang diperlukan pada masalah dan jika setengah dari mereka mati itu tidak dianggap sebagai masalah besar?

endolit
sumber
1
Plot Anda menunjukkan apa yang tampaknya merupakan beberapa eksperimen berbeda, beberapa di antaranya berfungsi dan beberapa tidak. Apa yang menyebabkan perbedaan?
Sycorax berkata Reinstate Monica
@ Scorax Itu hanya cobaan berulang untuk hal yang sama. Kadang-kadang ia menemukan solusi piramida heksagonal, tetapi biasanya tidak.
endolith
Apakah Anda mencoba dengan dua lapisan tersembunyi dan tanh sebagai fungsi aktivasi?
Ketan
@KetanNo, mengapa? Saya memposting variasi yang lebih sederhana di sini: stats.stackexchange.com/q/379884/11633
endolith
Anda mungkin ingin melihat yang satu ini. stats.stackexchange.com/q/375655/27556 . Tapi bisakah Anda menjelaskan mengapa Anda pikir Anda hanya perlu 3 relus? dekomposisi 'alami' akan menjadi satu lapisan tersembunyi untuk melakukan pendekatan kuadrat dengan relus dan lapisan lain untuk melakukan akar kuadrat - pada dasarnya relus melakukan perkiraan linear sedikit demi sedikit.
seanv507

Jawaban:

6

Hasilnya tampaknya sangat menunjukkan bahwa satu atau lebih neuron Anda mati (atau mungkin hyperplane of weight untuk dua neuron Anda telah bergabung). Anda dapat melihat bahwa dengan 3 Relu, Anda mendapatkan 3 bayangan terpisah di tengah ketika Anda bertemu dengan solusi yang lebih masuk akal. Anda dapat dengan mudah memverifikasi apakah ini benar dengan memeriksa nilai output masing-masing neuron untuk melihat apakah tetap mati untuk sebagian besar sampel Anda. Atau, Anda dapat memplot semua 2x3 = 6 bobot neuron, dikelompokkan berdasarkan masing-masing neuron, untuk melihat apakah dua neuron runtuh ke pasangan bobot yang sama.

Saya menduga bahwa salah satu kemungkinan penyebabnya adalah ketika condong ke arah satu koordinat, misalnya , dalam hal ini Anda mencoba mereproduksi identitas, saat itu . Tidak banyak yang dapat Anda lakukan di sini untuk memperbaiki ini. Salah satu opsi adalah menambahkan lebih banyak neuron saat Anda sudah mencoba. Pilihan kedua adalah mencoba aktivasi terus menerus, seperti sigmoid, atau mungkin sesuatu yang tidak terikat seperti eksponensial. Anda juga dapat mencoba dropout (misalnya, probabilitas 10%). Anda bisa menggunakan implementasi dropout reguler dalam keras, yang diharapkan cukup pintar untuk mengabaikan situasi ketika ketiga neuron Anda keluar.x y a b s ( x + i y ) xx+sayayxySebuahbs(x+sayay)x

Alex R.
sumber
1
+1, hampir pasti ini. Ketika Anda menggunakan ReLU dengan sejumlah kecil bobot, neuron mati hampir selalu ikut bermain.
kbrose
1
Ini adalah dugaan yang masuk akal dalam kasus ReLU. Tetapi OP menulis bahwa mereka telah mencoba beberapa varian ReLU yang berbeda - apakah neuron mati juga muncul dalam varian seperti ELU atau Leaky Relu atau PReLU?
Sycorax mengatakan Reinstate Monica
3 shadowy splits in the center when you converge to the more reasonable solution.Ya, itulah perkiraan kasar yang saya maksud; piramida heksagonal terbalik. or perhaps something unbounded like an exponential Saya memang mencoba elu dan selu, yang tidak bekerja lebih baik. two neurons collapse to the same pair of weightsAh, saya belum memikirkan itu; Saya hanya berasumsi mereka sudah mati.
endolith
Saya mengakses output dari lapisan tersembunyi saat menggunakan ReLU, dan mengkonfirmasi bahwa biasanya salah satu neuron sudah mati. Jarang, dua tumpang tindih dan melakukan hal yang sama. Saya bertanya-tanya apakah ada cara untuk membuat neuron "saling tolak" sehingga tidak menetap dalam peran yang berlebihan.
endolith
1
@endolith Dropout secara eksplisit dirancang untuk membangun neuron independen. ELU tidak pernah "mati", tetapi mereka memiliki gradien yang hilang di sebelah kiri.
Sycorax berkata Reinstate Monica