Debugging Neural Networks


10

Saya telah membangun jaringan saraf tiruan dalam python menggunakan fungsi optimisasi scipy.optimize.minimize (Conjugate gradient).

Saya telah menerapkan pemeriksaan gradien, mengecek semuanya dll dan saya cukup yakin itu berfungsi dengan benar.

Saya telah menjalankannya beberapa kali dan mencapai 'Pengoptimalan berhasil dihentikan' namun ketika saya meningkatkan jumlah lapisan tersembunyi, biaya hipotesis meningkat (semua yang lain tetap sama) setelah berhasil dihentikan.

Secara intuitif rasanya seolah-olah biaya harus turun ketika jumlah lapisan tersembunyi meningkat, karena mampu menghasilkan hipotesis yang lebih kompleks yang dapat sesuai dengan data yang lebih baik, namun ini tampaknya tidak menjadi masalah.

Saya tertarik untuk memahami apa yang terjadi di sini, atau jika saya salah menerapkan neural net?

Jawaban:


9

Ada begitu banyak cara yang salah dengan jaring saraf sehingga akan sulit untuk debug. Juga, untuk mengatasi intuisi Anda, setiap lapisan tersembunyi tambahan membuat belajar lebih sulit. Dengan itu, berikut adalah beberapa kemungkinan:

  1. Anda telah menambahkan pembusukan berat badan. Menambahkan lebih banyak lapisan menambahkan lebih banyak bobot yang meningkatkan biaya regularisasi Anda.
  2. Masalahnya cukup sederhana sehingga model dengan lapisan tersembunyi tunggal sudah cukup. Menambahkan lebih banyak lapisan tersembunyi membuat jaringan lebih sulit dipelajari (masalah optimisasi lebih sulit).
  3. Metode optimasi tidak melakukan pekerjaan dengan baik (saya lebih suka climin daripada scipy.optimize).
  4. Anda menggunakan fungsi aktivasi sigmoid / tanh. Fungsi sigmoid menyebabkan masalah gradien hilang yang membuat belajar sulit dengan lebih banyak lapisan. Coba gunakan fungsi ReLu.

Pelatihan jaring saraf membutuhkan banyak latihan, keberuntungan, dan kesabaran. Semoga berhasil.


1
Jawaban yang bagus. Sadarilah bahwa 2, 3, 4 dapat berinteraksi dengan cara yang rumit. Debugging dapat dilakukan dengan memeriksa nilai aktivasi JST, besarnya bobot JST, mengawasi kesalahan dalam sampel dan out-of-sampel dan konvergensi pengoptimal, dll.
Def_Os

3

Meningkatkan jumlah lapisan tersembunyi untuk jaringan saraf standar sebenarnya tidak akan meningkatkan hasil dalam sebagian besar kasus. Mengubah ukuran lapisan yang tersembunyi akan.

Fakta ini (bahwa jumlah lapisan tersembunyi sangat sedikit) sebenarnya telah dicatat secara historis dan merupakan motivasi di balik bidang pembelajaran yang mendalam. Pembelajaran mendalam adalah cara cerdas untuk melatih jaringan saraf multilayer dengan, misalnya, mengisolasi subset fitur ketika melatih lapisan yang berbeda.

Video pengantar yang bagus tentang topik ini di YouTube


2
Pembelajaran mendalam adalah tentang meningkatkan jumlah lapisan tersembunyi. Kalau tidak, itu akan disebut pembelajaran gendut :)
Emre

@Emre pasti berarti itu. Kutukan tanda baca saya!
eric chiang
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.